Об этом проекте

S-MU2000 — это программный тон-генератор с открытым исходным кодом, смоделированный по образцу Yamaha MU2000 и предназначенный для работы в качестве плагина внутри DAW. Он эмулирует внутреннее устройство аппарата — процессор SH7043 и два чипа тон-генерации SWP30 — и исполняет подлинную прошивку без изменений, поэтому голоса и поведение происходят от реального оборудования. Это неофициальный проект, не связанный с Yamaha. Текущее состояние: работает как VST3 и CLAP в Windows, а также VST3 и Audio Unit (AUv2) в macOS (Apple silicon), с экраном передней панели в стиле аппарата и окнами редактора, управляемыми мышью и клавиатурой. Порт gui, VST3 и CLAP для Linux был предоставлен третьей стороной; автор заявляет, что не может его тестировать или поддерживать. ROM-файлы не включены ни в репозиторий, ни в какие-либо релизы. Пользователи должны извлечь 4 МБ программного ROM и 32 МБ волнового ROM из собственного MU2000; шаги извлечения и инструменты описаны в doc/dump/. Проект явно просит не распространять и не публиковать дампы ROM-образов, модифицированную прошивку и пользовательские файлы .ydl в issues, PR, обсуждениях или релизах. Программный ROM можно альтернативно восстановить из опубликованного Yamaha обновления. Качество звука проверяется путём записи реального оборудования через S/PDIF и сравнения в 1/3-октавных полосах: из 1225 голосов XG на C4 1109 совпадают в пределах 1,5 дБ, а 60 из оставшихся 116 варьируются на аналогичную величину при повторной записи с аппарата на аппарат. Также охвачены режим Performance, типы reverb/chorus, контроллеры, NRPN для отдельных барабанов, multi EQ и кража голосов после 128 голосов. Оставшиеся несоответствия отслеживаются в doc/todo.md. Включён JIT, транслирующий инструкции SH2 и MEG в машинный код; на тестовой песне из 16 партий загрузка CPU составляет около 22% реального времени на Ryzen 7 9700X. LCD отображает то, что рисует прошивка, а кнопки и диск кликабельны. В отличие от MAME, который использует собственные часы и накапливает задержку при управлении из DAW, этот софт-синтезатор управляется аудио-колбэком хоста. Инструменты включают gui (панель, редактор, окна эффектов), live (MIDI-вход без экрана), render (MIDI в WAV), panel (управление только текстовой панелью), boot, statetest, blocktime, midisend и rec. MIDI-вход — 4 порта A–D (64 партии), с режимом DIN-порта через --host-midi и выбираемым THRU для каждого порта. Настройки RAM с батарейным питанием сохраняются в %LOCALAPPDATA%\S-MU2000\nvram\; плагины читают эту область и сохраняют изменения в проекте DAW. Громкость партии, фильтр, EG, EQ и master EQ представлены как именованные параметры автоматизации в VST3/CLAP. Измеренная сквозная задержка улучшилась с 117 мс до 16 мс в эксклюзивном режиме и до 50 мс в общем режиме; в README отмечен минимум 38 мс в общем режиме и рекомендуется --latency 10. Размер буфера и частота дискретизации (44100) на стороне интерфейса также имеют значение. Для сборки требуется C++20 с MSYS2/MinGW-w64 в Windows, Apple clang++ в macOS или g++ в Linux. make test запускает регрессионные тесты, включая подмножество, не требующее ROM-файлов. Основные реализации чипов взяты из файлов устройств MAME под лицензией BSD-3-Clause; сам MAME не линкуется. Определения интерфейса VST3 (MIT), заголовки CLAP (MIT) и Dear ImGui (MIT) импортируются без изменений. Собственный код репозитория — BSD-3-Clause, с атрибуциями в NOTICE.txt. Ошибки, найденные в SWP30 из MAME, исправляются на основе аппаратных измерений и отправляются в upstream; несколько PR принято, другие находятся на рассмотрении.