Добавляем цифровой выход для старых синтезаторов из 90-х

Предыстория

Наверняка все, заставшие эпоху 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 пинах.

5f48a65b4a477cda1f0eff62e8cfcd05.png

Вход мы подразумеваем 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, dataRoland SC88 Pro wclk, sysclk, dataRoland SC88 Pro qclk, resetRoland SC88 Pro qclk, reset

Yamaha MU128

Yamaha MU128 wclk, qclk, dataYamaha MU128 wclk, qclk, dataYamaha MU128 sysclkYamaha MU128 sysclkYamaha MU128 resetYamaha MU128 reset

Yamaha AN200

Yamaha AN200 wclk, qclk, dataYamaha AN200 wclk, qclk, dataYamaha AN200 sysclkYamaha AN200 sysclkYamaha AN200 resetYamaha 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 году.

91d4e91762cb6846c67ac3557f1fb065.jpg

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

18bit-DIT18bit-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 режиме:

44771e308bab738078c13186b5033cda.png

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

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

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

© Habrahabr.ru