image

Наверное не все любители чиптюн музыки знают, что SID музыку можно слушать через FM-синтезатор OPL3. Кто-то может подумает, что это будет что-то ужасное, а оказывается если сделать простой маппер, то можно получить весьма хорошее звучание, как это сделали несколько разработчиков в программе LLSID ещё в далеком 2007 году. Есть две версии этой программы 1.2 под DOS воспроизводящая музыку через аппаратный OPL3-синтезатор и версия 1.4 под Windows, но через собственный эмулятор YMF262(OPL3). Эмулятор звучит не так, как железный OPL3-синтезатор, поэтому я версию 1.4 не рекомендую.

В данном случае будем рассматривать звуковые карты на шине PCI, чтобы можно было послушать на современных ПК. Сразу нужно определиться, какие звуковые карты подходят для этой цели — это звуковые карты с аппаратным FM-синтезатором работающие в DOS, т.к. LLSID работает только в DOS. К таким звуковым картам относятя ForteMedia на чипе FM801-AU с хорошим хардварным клоном OPL3, YAMAHA 724/744/740/754, либо ESS 1938 Solo-1 — в более поздних карточках ESS уже нет аппаратного ESFM-синтезатора. Эти карточки довольно легко можно найти в продаже и хотя некоторые имеют драйвера под Windows 98 не выше, но это не помешает послушать музыку на современных компьютерах. Главное чтобы ваш ПК имел слот PCI. Все остальные PCI-звуковые будь то от Creative или Vortex AU8810/30 не имеют аппаратного OPL3, а только эмулируют FM в довольно плохом качестве. Если у вас есть совсем другая звуковая карта то нужно смотреть datasheet её чипа.

Далее предлагаю ознакомиться как звучит SID-музыка через ForteMedia FM801. Записывал через простенький смартфон, т.к. карты видеозахвата у меня нет, а по другому экран или звуковой поток ДОСа не запишешь, поэтому извините за плохое качество видео.


На записи через дешевый микрофон качество музыки намного хуже реального звучания, но это только для ознакомления. Но как можно представить звучит по «железному» и мне такая музыка нравится даже больше, чем через эмуляторы MOS 6581. Так что FM-синтезаторы на дешёвеньких звуковых картах прошлого это не рудимент, который годится только для проигрывания мидишек. SID-музыка жива, каждый месяц выходят новые треки под этот чип.

Для тех кто не хочет возиться с настройкой DOS я подготовил настроенный софт для флешки. Вам нужно только взять любую старую флешку объемом более 100 Мб и отформатировать в FAT32 с переносом системных файлов MS-DOS. Далее перенести все файлы из моего архива в корень флешки и перезагрузиться загрузив ПК с USB.
Autoexec.bat и Config.sys настроены с разными вариантами загрузки драйверов разных звуковых карт. В качестве менеджера памяти используется JEMM386. Norton Commander, Volkov Commander и Dos Navigator уже настроены для прослушивания музыкальных файлов sid, а также a2m, sat, dfm, hsc, xms, mid.

Один маленький лайфхак, накануне подготовки этого материала на моей YAMAHA 744B в одном ухе пропал звук. На всех сайтах, где я искал информацию по данной проблеме я не нашел ответа. Тогда я решил перепаять крупные детали на своей звуковой. Это был конденсатор, стабилизатор 78L05 и ОУ. Звук появился после перепайки операционного усилителя. Сначала я заменил на такой-же какой и был JRC 4558 — нормально звучит с басами. Потом поставил подороже OPA2134 — басов стало меньше, но звук стал чище. Может знающий тут человек подскажет, какие из этих ОУ лучше ставить на звуковые карты, чтоб хорошо и не дорого было, как AD8620: JRC 4580 M-TE1, OPA2134 PA, LME 4960 NA, LM 4562.

Скачать настроенные файлы для DOS

А вот видео — сравнение звучания OPL3 в Dosbox и Yamaha 744 и Windows Wavetable. Если в setup настройках звука в игре указать General Midi или Roland MT32 и порт 330 то будет использоваться midi-устройство, которое используется по умолчанию в Windows:



В игре Duke Nukem 3D более качественный стерео звук слышен, а в игре Tekwar инструменты даже по другому звучат, вот вам и разница эмулятора и железа… И так в каждой игре слышны отличия эмулятора от реальной карты и после этого как-то на эмулятор переходить не хочется, а в любимой X-COM: UFO так вообще никакого удовольствия от музыки нет на эмуляторе.

Комментарии (37)


  1. IgorPie
    20.04.2019 00:37

    JRC4558 с биполярным входом, он низастее, как и NE5532
    Остальные в списке почти все с полевым входом. Ставить? Панельку. При некоторой сноровке, на soic футпринт припаивается dip панель.
    Измерить питание. Если питание всего 5 вольт, то смотреть в сторону хороших R2R.
    У меня в звуковухе прижились R2R от Analog devices, марку запамятовал, но звук был сбалансирован, прогонял через RMAA и субъективно отслушивал.

    В целом, SID и AY весьма неплохо эмулируются в софте, поэтому аппаратный эмулятор на FM синтезаторе выглядит сильно на любителя.
    К сожалению, флэшку заценить уже не смогу, на мак мини не очень хорошо дело с PCI слотами, но 8-битный синтез люблю.


    1. zx80 Автор
      20.04.2019 09:35

      А вместо 4558 можно поставить 4580M? У него 15 МГц против 3 у 4558. Что это даст, громкость?


      1. IgorPie
        20.04.2019 16:59

        Опыт показал, что мегагерцы не очень сильно влияют на удовлетворенность в звуке. Это как выбирать гитару. Может быть, Вам подойдет TL082 / 072 серединистый ОУ, без избытка НЧ/ВЧ. У меня накопилось множетство ОУ, дешевых и дорогих, и честно говоя, ни за один из них я бы голову не поставил. Выбирать по вкусу, тем более, они чаще всего в качестве повторителей, либо усилителей с небольшим Ку, т.к. с выхода цифровых чипов уже идет 3-5 вольт, а питание — 12.
        OPA2134 хорош, но при Ку=4 от его плюсов толку будет минимум и наверняка найдется ОУ в 5 раза дешевле, который будет звучать по сути так же.


        1. zx80 Автор
          20.04.2019 17:09

          Спасибо большое за подробный ответ


  1. mistergrim
    20.04.2019 03:04

    Автор ошибается, на CMI-8738 _есть_ аппаратный OPL-3.


    1. zx80 Автор
      20.04.2019 06:16
      +1

      В даташите написано "FM emulator" — значит не аппаратный


      1. mistergrim
        20.04.2019 10:17

        Нет, не значит. Это значит только то, что там внутри не оригинальный ямаховский OPL-3. Ну так он много где не оригинальыный (по поводу чего пуристы любят устраивать жаркие дебаты).


      1. thealfest
        20.04.2019 16:17

        В c-media действительно очень хороший фм-синтез, есть мнение, что идентичный оригиналу.


  1. tormozedison
    20.04.2019 06:21

    Записать звук на смартфон можно так: взять проводную гарнитуру, заменить в ней микрофон на резистор, подать сигнал со звуковой карты через конденсатор.


    1. zx80 Автор
      20.04.2019 07:31

      Спасибо, надо будет попробовать. А какие кондер и резистор?


      1. tormozedison
        20.04.2019 13:42

        Диапазон довольно широкий, например: 1 кОм и 0,1 мкФ.


  1. CoolCmd
    20.04.2019 13:00

    хорошо бы сравнить fm-эмуляцию в dos, fm-эмуляцию в dosbox и родной sid в c64. а без сравнения в статью въедут только 2,5 любителя «булькающей музыки» :)


    1. zx80 Автор
      20.04.2019 13:10

      Сравнить LLSID в dos и dosbox трудно, потому что трудно качественно записать звук в dos. Можно сравнить OPL3 реальный и досбокса, сразу скажу, что реальный лучше


      1. CoolCmd
        20.04.2019 13:14

        лучше и хуже — это понятия субъективные и зависят от конкретного человека

        можно экранки сравнивать


        1. zx80 Автор
          20.04.2019 13:21

          Ну я сделаю сравнительное видео и добавлю сюда в статью


  1. mistergrim
    20.04.2019 13:55

    Послушал \MUSIK\sid\Hubbard_Rob\Rasputin.sid — половина нот теряется, остальные звучат совершенно не так, как должны. В общем, всё равно что полноценные midi-файлы на том же OPL слушать.


    1. zx80 Автор
      20.04.2019 14:55

      А какая звуковая карта использовалась? У меня на YAMAHA 744B ноты тоже теряются, а вот на ForteMedia FM801 — нет. Жаль на ESS 1938 не тестировал. Я специально статью написал, чтобы привлечь внимание к такому плееру, вдруг найдется программист, который сможет написать усовершенствованый такой плеер и с возможностью запуска на Windows`ax


      1. mistergrim
        20.04.2019 15:27

        Ну какая карта использовалась — DOSBox, т.е. SB16 (эмуляция OPL-3 там весьма точная).
        Для Windows — а зачем? Много ли у кого сейчас есть звуковая карта с FM-синтезатором? Не говоря уже о том, что SID-плееров, эмулирующих реальный звук, просто вагон и маленькая тележка hvsc.de/players


  1. DenisBlack
    20.04.2019 14:50

    Для программной эмуляции есть еще неплохой SoundFont, с сэмплами OPL3. И программный SF синтезатор: Coolsoft VirtualMIDISynth


    1. zx80 Автор
      20.04.2019 14:51

      Программная эмуляция не нужна — смысл статьи в том, как послушать SID музыку на реальном железе


      1. IgorPie
        20.04.2019 17:01

        Реальное железо — это SID, остальное программная либо аппаратная эмуляция


  1. thealfest
    20.04.2019 16:14

    В ALS4000 встроен клон OPL3, по звучанию неотличимый от оригинала.


  1. Fagear
    20.04.2019 16:56
    +1

    Посмотрел, послушал…
    Если хочется "просто слушать *.SID", то это так себе решение. Программная эмуляция (как например плагин к foobar2k, который работает на любой современной венде) сделает куда более точную эмуляцию.
    Если брать «железную» реализацию — можно взять любой из готовых проектов «портативных» плееров с SD, как эмулирующих звучание SID программно, так и имеющих сокет под реальный чип.
    Любой из аппаратных вариантов, использующих сокет под чип требует наличие самого SID'а, которые очень «нежные», что касается перегрева и статики. И стоят эти чипы немало. Однако даже такая слабая эмуляция, как SwinSID (недорогая платка по размерам чипа с ATmeg'ой, которая эмулирует работу реального чипа) по уровню превосходит то, что продемонстрировано в видео. А ещё есть ARMSID и FPGASID.

    Для примера два трека в видео.
    Arman Behdad — Eternal Love Orchestra (на 01:59).
    В видео толком вообще не работает фильтр на басовой линии. Как должно быть, можно послушать тут: https://www.youtube.com/watch?v=OeuFkT5yQh4.
    Arman Behdad — Fallen In Love (на 02:57).
    На основных синтезаторах недостаточно быстрое затухание, из-за чего получается усиленный эффект эха и взаимного наложения, что приводит просто к пиликающей какофонии. И фильтр на бас-линии снова «не туда». Как должно быть: https://www.youtube.com/watch?v=p2AVZ31ZXGc

    И это только два знакомых мне трека и через микрофон. Остальные я просто не сравнивал.
    Как итог: если задача просто по-упражняться в эмуляции одного чипа силами другого, не применяя «нормальную» программную эмуляцию — отлично, цель достигнута. Если задача послушать более-менее близкое звучание — нет, спасибо.


    1. zx80 Автор
      20.04.2019 21:41

      Это не эмуляция, а маппинг — это немного, но сильно разные вещи. Если говорить музыкальным языком — это оркестровка, переложение музыкальной пьесы из одного рода исполнения в другой (например, скрипичную для рояля и наоборот). Даже само название стаьи говорит об оркестровке, а не об эмуляции — «слушаем SID-музыку через OPL3». Кому то нравится оркестровки, кому то нет. Кому то нравится слушать midi через OPL2/3, а кому то категорически нет, а только через Wavetable. Возможно маппинг не идеально реализован, поэтому я специально статью написал, чтобы привлечь внимание к такому плееру, вдруг найдется талантливый программист-энтузиаст, который сможет написать усовершенствованый такой плеер и с возможностью запуска на Windows NT-совместимых


      1. qw1
        21.04.2019 00:18

        Не представляю, как там технически можно замапить инструменты.

        SID-файл это код для процессора 6502, который формирует записи в регистры звукового чипа 6581. Проигрывание инструмента это выставление начальной частоты и громкости на осцилляторе и 50 раз в секунду уменьшение амплитуды (затухание) и возможно небольшое изменение частоты для достижения некоторых эффектов.

        На OPL есть тоже осцилляторы и их так же дёргают. Про логику инструментов (тут мы закончили ноту и начали новую) знает только код 6502.


        1. zx80 Автор
          21.04.2019 09:39

          На уровне 6502 эмуляция — далее идёт маппинг команд 6581 в OPL3. Немного об этом разработчики описали в исходниках


          1. qw1
            21.04.2019 09:46

            Маппинг команд чипа, но не инструментов. Вряд ли это можно назвать оркестровкой. «Эмуляция» лучше подходит, слишком низкоуровневое действие.


            1. zx80 Автор
              21.04.2019 09:53

              Ну сами разработчики называют это маппером. А я это не разрабатывал, поэтому я не знаю как устроен этот плеер, я говорю только со слов самих разработчиков.


              1. qw1
                21.04.2019 10:36

                По английски, mapping — всего лишь «сопоставление». Возможно, они никакой особый смысл и не вкладывали.


                1. zx80 Автор
                  21.04.2019 10:57

                  А как вы себе представляете эмуляцию сида на опл3? Только сопоставление! Треугольник на сиде в треугольник на фм и т.д.


                  1. qw1
                    21.04.2019 11:16

                    Так же, как эмуляцию 6502 в c-коде:
                    LDX #06 -> regX = 0x06;

                    Сопоставление — один к одному, а эмуляция подразумевает, что могут быть какие-обходные варианты, если в одной железке не хватает чего-то из другой.


                    1. zx80 Автор
                      21.04.2019 11:34

                      Дело в том, что в фм- синтезаторе нельзя так кодить как на с для 6502, а только посылать команды для муз инструментов, поэтому на всех звуковых картах, кроме fortemedia fm801 пропадают некоторые ноты, а вот версия 1.4 работает четко, но через эмулятор и звучит как эмулятор, а не как железная звуковая карта


                      1. qw1
                        21.04.2019 13:21

                        Я просто триггернул на

                        Кому то нравится оркестровки, кому то нет. Кому то нравится слушать midi через OPL2/3, а кому то категорически нет, а только через Wavetable
                        В контексте таких карт, маппинг — это указание соответствий инструментов в MIDI и инструментов в карте.

                        Но поток с SID нельзя отправить на карту с wavetable. Такой «маппинг» невозможнен.


  1. UA3MQJ
    22.04.2019 10:57

    Спасибо за статью! Недавно получил Yamaha YMF 724 почти такую же, как у меня была в детстве. Вернее, в детстве у меня была на кодеке WM и распаяна целиком, а у друга была на STAC и с нераспаянным усилителем, поэтому с НЧ там были напряженки. Получил такую же, как была у друга.



    Если я месяц назад, через боль и страдания за два вечера всётаки заставил работать свою любимую SB Live и драйверы KX под Win7 x64, то с Yamaha получился облом. И эта статья дала повод вытащить Yamaha с полки и попробовать еще раз.

    Ну что я могу сказать, звук есть! Послушал SID'ы, но тут ничего не могу сказать, как-то пиликает. Ярым фанатом SID'а я не являюсь. Мне больше AY/YM спектрумовские ближе, а там фильтров нет. Больше понравился Adlib плеер, который у меня сейчас от куда-то есть на рабочем столе под Windows, а тут я его послушал уже аппаратно. Вот он реально понравился.

    Еще, пользуясь случаем, закинул на ту же флешку игр, Wolf, DOOM1-2, DukeNukem3d, Quake, WarCraft2. Однако, облом осознался не сразу. Карта определялась, работала эмуляция Sound Blaster PORT 220, IRQ 5, DMA 1. Но в играх была только музыка через FM синтез. Звука не было. Для 16 бит надо было указать второй DMA, как позже выяснилось, там 11й встает, а его на досовых играх не выбрать (или что-то типа того). Что интересно, сами драйверы могут играть и музыку и звук, а вот с играми на базе DOS4GW получилась проблема.

    Есть интересная ссыль на тему про ямахи и там про то, что у PCI карт может не очень получаться прикидываться ISAшными картами. С DMA как-то это связано. Для эмуляции могут быть применены какие-то кабели SB Link который есть на звуковой и должен быть на материнской плате. Плюс есть еще пара других вариантов, через D-DMA или через TSR резидент какой-то, но где его взять — я так и не понял. В общем, звука не было у меня в играх.

    Однако, за вечер с Yamaha благодарность автору статьи.


    1. zx80 Автор
      22.04.2019 19:56

      Спасибо за отзыв, я рад что кому-тому пригодилось


  1. IgorPie
    23.04.2019 13:04

    Речь о современных ПК, на них параллельный PCI уже несколько лет как днем с огнем не найти, звуковухи уже переехали на PCI-E, либо USB


    1. zx80 Автор
      23.04.2019 13:19

      Я себе специально материнку искал с PCI под такие звуковые и доволен. А звуковых на PCI-E с OPL3-синтезатором не бывает.