Предыстория

Наверняка все, заставшие эпоху DOS, встречали в играх варианты выбора музыкального сопровождения - General MIDI, Roland Sound Canvas, Yamaha XG. Не буду рассказывать про то, какие это замечательные устройства, и как качественно они проигрывали MIDI. Вплоть до конца 90х, все эти домашние десктопные ромплеры, как и большинство других профессиональных аппаратов, имели только аналоговые выходы, впрочем - вполне приемлимые по качеству. В начале 2010 я из ностальгии приобрел на eBay несколько аппаратов той эпохи - это Roland Sound Canvas 88 Pro, Roland MT-32, Yamaha MU128 и Yamaha AN200. Первые три должны быть знакомы геймерам начала 90х, модуль же AN200 - это синтезатор аналогового моделирования на основе плагин-карты Yamaha PLG150-AN. На площадке продавались также и более поздние тон-генераторы Yamaha MU1000/2000 - их отличие от MU128 состояло в несколько расширенной версии банка семплов, а также в наличии оптического TOSLINK выхода.

Собственно, наличие оптики в MU2000 сподвигло меня заняться сравнением схем на предмет того, можно ли доработать схему MU128 и получить цифровой выход самостоятельно. В сервис-мануале MU2000 схема оптического выхода основана на фирменном чипе Yamaha YM3437C, который весьма сложно достать обычному радиолюбителю. Надо искать более ходовой DIT. Поиск в гугле на эту тему навел меня на мод для Yamaha MU10. Автор мода опирался на японскую доработку Roland SC-88VL. В основе мода лежит чип TC9231N от Toshiba, который реализует цифровой аудиоинтерфейс по стандарту SPDIF/TOSLINK. Чип можно заказать на eBay, стоит он в среднем 2.5$ за штуку (прим.: это было в 2010м году, сейчас чип практически невозможно найти); остальные детали продаются в любом радиомагазине. Я собрал на макетке японский вариант, и он оказался рабочим - с небольшой оговоркой. DAC у Roland SC88 18-битный, а TC9231N - 16 битный. Японский автор сделал для этого обвязку, позволяющую или обрезать в потоке 2 верхних бита - что могло привезти к клиппингу, или сдвигать поток на 2 бита ниже (обрезая 2 нижних бита), что приводило к уменьшению громкости. В любом случае, 2 бита информации терялись - и меня это не устраивало.

18-bit DIT

Я занялся поиском трансивера, работающего с 18-битным потоком в "железном" режиме, т.е. не требующем установки режима работы с помощью дополнительного микроконтроллера. После долгих экспериментов с DIT 4096, 4192, TC9271N и другими, я наконец нашел трансивер, "железно" работающий с 18-битным потоком - AKM AK4103AVF. Благодаря внутренним pull-up и pull-down резисторам, можно обойтись минимумом деталей.

Сначала набросаем схему. Учитывая, что плата должна быть максимально универсальной, все конфигурабельные пины должны быть вынесены на джамперы. Выход обвязан по даташиту как бытовой (consumer) SPDIF. Если нужен XLR AES3 (AES/EBU), смотрите даташит AK4103, а также там нужна другая конфигурация на FS0-FS3 пинах.

Вход мы подразумеваем I2S, для этого на источниках нам понадобятся линии data, lrck, bck и sclk. В разных даташитах эти линии могут называться по-разному, но суть их всегда одна и та же - DATA=SI=MDAC=SDTI, LRCK=LRCX=MWCLK, CLK=MQCLK и т.д. Все эти линии должны легко находиться в схемах входящими в DAC, за исключением sysclk, которую придется искать осциллографом в разных точках схемы. Обычно, в I2S sysclk (или mclk) для передачи не нужен, но в AK4103AVF линия используется для корректной синхронизации.

Было замечено, что если схема включается одновременно с модулем, AK4103 не подхватывает частоту и цифровой выход молчит. Опытным путем выявлено, что частота ловится после инициализации модуля, нужна задержка питания. В 2016 году я, недолго думая, просто вывел на корпус кнопку "spdif reset" (на схеме показана). В начале июня 2022 со мной связался nikitalita и подсказал линию BRESET в разъеме расширения PLG. Проверка на осциллографе выявила, что BRESET около 70ms остается в low, этого оказалось достаточно, чтобы DIT подхватил частоту.

Найдем линии на всех трех аппаратах:

I2S линия

Roland SC-88 Pro

Yamaha MU128

Yamaha AN200

syslck

CN105 pin 5

IC39 pin 16

IC17 pin 160

data

CN105 pin 3

IC36 pin 15

IC16 pin 15

qclk

IC35 pin 9

IC36 pin 16

IC16 pin 16

wclk

CN105 pin 6

IC36 pin 13

IC16 pin 13

reset

IC35 pin 9

IC34 pin 19

CN5 pin 4

Roland SC-88 Pro

Roland SC88 Pro wclk, sysclk, data
Roland SC88 Pro wclk, sysclk, data
Roland SC88 Pro qclk, reset
Roland SC88 Pro qclk, reset

Yamaha MU128

Yamaha MU128 wclk, qclk, data
Yamaha MU128 wclk, qclk, data
Yamaha MU128 sysclk
Yamaha MU128 sysclk
Yamaha MU128 reset
Yamaha MU128 reset

Yamaha AN200

Yamaha AN200 wclk, qclk, data
Yamaha AN200 wclk, qclk, data
Yamaha AN200 sysclk
Yamaha AN200 sysclk
Yamaha AN200 reset
Yamaha AN200 reset

В SC88 стоит 18-битный PCM69AU, в MU128 и AN200 - 18-битный NEC D63200. В Roland MT-32 стоит 16-битный DAC с параллельной шиной, и вывод цифрового звука это отдельная задача, которой мы касаться не будем. Согласно спецификации, SC-88 имеет частоту дискретизации семплов 32кГц, MU128 и AN200 - 44кГц. По даташиту нам нужно установить следующие режимы: audio routing mode - normal, synchronous mode, 18bit right justified. Меряем частоты:

wlck

sysclk

qclk

dif0

trans

fs0

fs1

default

-

-

-

0

float

0

0

SC88

32000Hz

8.192MHz

8.192MHz

1

0

1

1

MU128

44100Hz

11.2896 MHz

2.82242 MHz

0

0

0

0

AN200

44100Hz

16.9344 MHz

2.82244 MHz

0

0

0

0

Для выставления нужного режима, в таблице указаны только те пины, которые отличаются от своего состояния по умолчанию - fs0, fs1, dif0.

К слову, в 2010 году сервис-мануал к MU128 можно было найти только на том же eBay за денежку. Я купил его, получил PDF и тут же расшарил на своем сайте бесплатно для всех ищущих. Через несколько недель данный сервис-мануал прекратили продавать :)

Данная схема была собрана на макетке и успешно работала в MU128 и AN200 в 2016 году.

В 2021 году я внезапно решил перевыпустить разработку в приличном виде.

18bit-DIT
18bit-DIT

Гербер-файлы платы: dit_0.2_gerber.zip

Партлист

Reference

Value

Package

U1

AK4103AVF

TSSOP-24

T1

PE-65612NL, TC-612

C1, C2, C3

100nF

0603

R1

330R

0402

R2

100R

0402

Замечания по Roland

В самом начале я упомянул также Roland MT-32. На самом деле, с MT-32 дела обстоят гораздо сложнее, т.к. там используется DAC с параллельной шиной. Оставим это устройство в покое на некоторое время :)

Nikitalita также поделился со мной ссылкой на еще один недавний японский мод, основанный на AK4103. Автор определил, что актуальный поток в SC88 - 20битный, так что DIT может быть сконфигурирован как 20bit right justified. Однако, вы получите всего лишь существенное снижение громкости. На скриншоте ниже одна и та же мелодия, записанная сначала в 20bit, а затем в 18bit режиме:

Совместимость

Данная схема была проверена на работоспособность со следующими устройствами:

Yamaha AN200, MU128

Roland SC 88 Pro

nikitalita проверил схему с Yamaha MU90, MU90R, MU100, MU100R

Полагаю, данный DIT способен работать с любыми цифровыми синтезаторами, реализующими поток в DAC от 16 до 24 бит, если технический дизайн предполагает одну I2S линию DATA со стереопотоком. Есть также синтезаторы, у которых левый и правый каналы кодируются отдельными линиями I2S - с ними схема работать не будет.

Ссылки

18-bit DIT на GitHub

MU100-DIT, параллельный проект от nikitalita с вариантом оптического выхода

Японская доработка, также на основе AK4103

AKM AK4103A datasheet

Yamaha AN200 service manual

Roland SC88 Pro service notes (на японском)

Yamaha MU128 service manual

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


  1. VEG
    16.08.2022 08:33

    Как вариант, можно получить ностальгичное звучание Yamaha из 90-х в цифровом виде на их же программном синтезаторе S-YXG50, который близок к аппаратным MU50 / MU80 =)


    1. esher Автор
      16.08.2022 09:11

      Насколько я помню, в первые же дни после получения синтов сравнивал звучание софтовых Yamaha S-YXG100 и Roland VSC88 с их железными родителями - и уже не помню, в чем именно, но разница была - как в звучании семплов, так и в эффектной части. Поэтому да - "близок к аппаратным", но с нюансами.


      1. VEG
        16.08.2022 09:21

        S-YXG50 и S-YXG100 по умолчанию шли с 2-мегабайтным урезанным банком, а 4-мегабайтная версия была опциональной. Возможно, вы сравнивали с стандартной 2-мегабайтной версией? В MU50 / MU80 банк на 4 мегабайта, если мне не изменяет память. С высокой вероятностью, семплы там примерно те же.


        1. esher Автор
          16.08.2022 09:48

          В MU128 4 чипа ROM - 2 на 64мбит, 2 на 32. Итого семплбанк 24 мегабайта. MU50 насколько я помню - фактически внешний DB50XG; нашел сервисмануал MU50 - там два 16мбит чипа, т.е. 4 мб ROM. Думаю, разница все же должна быть. Ради интереса можно сравнить в записи.

          PS: в MU80 уже четыре 16мбитных чипа, т.е. 8мб семплбанк.


          1. SADKO
            16.08.2022 12:01

            Дело было не только в банках, ранние аппаратные XG возможно использовали аналоговое микширование и возможно фильтры. На это намекало изменение уровня фонового шума в зависимости от того как "крутить микшер", а симуляторы, понятное дело были почти абсолютно стерильны. Кроме того был прикол с панорамой канала, её можно было круть таская звук по панораме. А в софте, положение положение на момент извлечения и оставалось не изменным потом.
            Существенная разница была в звучании фильтров и эффектов.

            Аналоговый сигнал с DB50XG можно было поджать компрессором, а вот с симуляторами лучше так не делать, ибо он и без компрессора, видимо микширование было низкоразрядным. Хотя конечно, софтовые ямахи, звучали лучше чем роланд или вингрув. Да и софтовость была относительная, ведь YMF-ы и какие-то более поздние аппаратные модули звучали в духе тех самых софтовых синтов.


            1. esher Автор
              16.08.2022 12:48

              Очень интересно, "аналоговое микширование", я полистал несколько сервисмануалов MU серии - везде линия DATA проложена прямиком в DAC из чипа тонгенератора SWP(SWX). У серии MU есть несколько юнитов с возможностью наложения эффектов на один из аналоговых входов, с этой целью в схеме используется 20-битный ADC PCM1800. Если бы использовалось аналоговое микширование, пришлось бы городить несколько громоздкую схему из нескольких DAC и дополнительного ADC. Изменение уровня фонового шума, думаю, было артефактами цифрующей звуковой карты. Если у вас есть пример такого шума (в MIDI), который можно воспроизвести - можно посмотреть теперь на цифре, есть ли он действительно в цифровой части, или это артефакт аналоговой части.


              1. SADKO
                16.08.2022 13:57

                Не знаю, сервис манов у нас тогда не было, дочка использовалась без звуковой карты, с качественными, стабильными напряжениям, и в последствии была апгрэйднута на nec-овскую из караоке машины, там был ещё набортный аналоговый вход, который можно было послать на ревер...
                Может они и всё сделали в цифре (моё предположение, только предположение основанное лишь на том, что в аппаратных сэмплерах я такое видал кучу ЦАПов), а разница только в разрядности и особенностях математики DSP. В конце девяностых, начале нулевых, была куча прецедентов, когда реально фирменные плагины например от TC повторяли пресеты рэковых процессоров (по крайней мере в плане импульсных характеристик) и звучали субъективно даже чище, но ровно до того момента, как их послушаешь громко ;-)


                1. esher Автор
                  16.08.2022 18:21

                  Да, скорее всего математика и особенности обсчета. У Ямахи же было свое производство чипов какое-никакое, но, как я где-то читал, они его продали и сейчас все новое должно быть на ARM


      1. cybermind8801
        16.08.2022 10:52

        Думаю, все же сейчас SC-88 корректнее сравнивать с Sound Canvas VA - https://www.roland.com/global/products/rc_sound_canvas_va, поскольку VSC88 уже порядком устарел и не имеет поддержку возможностей 88Pro и 8820/8850.

        Я этой зимой купил себе SC-88 Pro - в целом отличий от звучания с Sound Canvas VA (в режиме 88Pro) не заметил. Единственное, что SCVA не поддерживает (насколько я знаю) - это User Instruments / Drumkits (которые грузятся в банк 064/065). Например, вот в этой миди https://www.youtube.com/watch?v=F1eHXuMsRMA эти эффекты используются, и в SCVA они будут звучать немного иначе, чем на железке.

        А по переделке - очень круто! Я единственное, что сделал на своем SC-88Pro - это переделку с 100В на 220В (благо это там делается перепайкой одного провода). Но вот вашу переделку уже боязно осуществлять :) , так как аппарат в единственном экземпляре.


        1. esher Автор
          16.08.2022 12:55

          Там ничего сложного, после сборки плата DIT прячется в термоусадку, и все линии просто подпаиваются к ногам разъема или чипа напрямую.


  1. checkpoint
    16.08.2022 22:56
    +1

    К слову, в 2010 году сервис-мануал к MU128 можно было найти только на
    том же eBay за денежку. Я купил его, получил PDF и тут же расшарил на
    своем сайте бесплатно для всех ищущих. Через несколько недель данный
    сервис-мануал прекратили продавать :)

    Красавец! :)