Пакет прошивки для M-VAVE FM-1 теперь запускается в браузере: страница fm1-emu выполняет те же файлы .fwsc, которые ставятся на железо, внутри WebAssembly — синтезатор на столе не нужен. Повод наглядный: в каталоге альтернативных прошивок fm1-editor.com на 18 октября числится 76 сборок — от DX7-клонов и грувбоксов до SID-синтезатора и игр.
Два ядра pi32v2 и 1 МБ флеша
Внутри FM-1 стоит JieLi AC791N с маркировкой WL82: два ядра на 32-битном наборе pi32v2, 1 МБ флеша, экран 240×240, 27 клавиш, 14 кнопок с подсветкой, семь энкодеров, master-ручка и TRS-вход MIDI. Публичной документации на чип нет, поэтому эмулятор исполняет набор инструкций pi32v2 и отдельно моделирует всё, к чему обращается прошивка: таймеры, прерывания, флеш, экран, матрицу клавиш, энкодеры, аудиовыход и MIDI IN.
Написан эмулятор на Rust и крутится как WebAssembly в аудиопотоке браузера, горячий код компилируется в WASM на лету — собственным JIT. Путь от восстановления недокументированного процессора по дампу прошивки до двух JIT разобран в техотчёте «Emulating a Synthesizer Before It Arrives» на восемь страниц.
100 МГц вместо 240
Реальный FM-1 работает на 240 МГц. Страница стартует на 100 МГц, чтобы эмулятор держал реальное время на слабых машинах, и показывает в статусной строке загрузку аудиопотока. На 240 МГц все прошивки на тестовой машине шли быстрее реального времени — от 1,6× (X0X) до 3,7× (Hortator). Переключение частоты и прошивки перезагружает синт, как нажатие кнопки питания.
Кирпич без кнопки восстановления
Прошивка FM-1 живёт в одном банке памяти, кнопки восстановления и тестового разъёма на плате нет, а штатное обновление запускается из уже установленной прошивки. Если она перестала стартовать, устройство не спасти. Поэтому открытый Lunar Modulator под MIT от разработчика ip2k существует пока только как браузерный симулятор и на железо не выкладывается.
Эмулятор в этой ситуации — не игрушка, а стенд. Пакет прошивки он берёт у автора без пересборки и скачивает его в момент запуска. MIDI работает только на вход, на 31250 бодах, как настоящий TRS-разъём. В Safari нет Web MIDI, там панель MIDI неактивна.
AU, VST3 и CLAP из того же Rust
Тот же код собран как плагин: AU для Logic и GarageBand, VST3 для Live, Cubase, FL Studio, Reaper, Bitwig и Studio One, плюс CLAP. Готовая сборка — для Mac на Apple silicon. Прошивка загружается в окно плагина и играется с MIDI из DAW или мышью по панели, а проект запоминает и прошивку, и сохранённые патчи.
Патчи на реальном FM-1 лежат в области флеша, куда обновления не пишут, поэтому в пакете их нет. Эмулятор стартует со своим малым банком и умеет грузить DX7-банк на 32 голоса из .syx в слоты 1–32. Стоковая прошивка V15 — это DX7-движок, порт msfa из Dexed, а официальная открытая V12 от самой M-VAVE делает из FM-1 восьмидорожечный грувбокс: на дорожку движки DX7, 303, 808, PSG, Pluck или сэмплер, 16 слотов проектов и общий банк на восемь сэмплов.
Для синтезатора за $60–100 выбор между 76 сборками теперь делается за минуту в браузере, а не слепой прошивкой. Цена ошибки на FM-1 — не перезагрузка, а нерабочее устройство, и эмулятор ровно этот риск и снимает — оставляя прошивкам ровно ту проверку, которую раньше проходило только железо.
Источник: Synthtopia, fm1-emu, каталог прошивок fm1-editor.com.


