这个项目能做什么

S-MU2000 是一款以 Yamaha MU2000 为蓝本的开源软件音源,设计为可在 DAW 中作为插件运行。它模拟该设备的内部结构——一颗 SH3 加两颗 SWP30 音源芯片——并原样执行真实固件,因此音色和行为均源自真实硬件。这是一个非官方项目,与 Yamaha 无隶属关系。 当前状态:它可在 Windows 上以 VST3 和 CLAP 运行,在 macOS(Apple 芯片)上以 VST3 和 Audio Unit(AUv2)运行,带有硬件风格的前面板屏幕以及鼠标键盘操作的编辑器窗口。Linux 版的 gui、VST3 和 CLAP 移植由第三方贡献;作者声明他无法测试或支持该版本。 仓库或任何发行版中均不包含 ROM。用户必须从自己的 MU2000 中提取 4 MB 程序 ROM 和 32 MB 波形 ROM;提取步骤和工具记录在 doc/dump/ 中。项目明确要求不得再分发转储的 ROM 镜像、修改过的固件和自定义 .ydl 文件,也不得在 issue、PR、讨论或发行版中发布这些内容。程序 ROM 也可以从 Yamaha 发布的更新程序中重建。 音质通过以 S/PDIF 录制真实硬件并在 1/3 倍频程频带中比较来检查:在 C4 音高下的 1225 个 XG 音色中,1109 个在 1.5 dB 以内匹配,其余 116 个中有 60 个在硬件对硬件重新录制时变化幅度相近。演奏模式、混响/合唱类型、控制器、每个鼓的 NRPN、多重 EQ 以及超过 128 个声部时的声部抢占也都有覆盖。剩余的不匹配记录在 doc/todo.md 中。 其中包含一个将 SH2 和 MEG 指令转换为机器码的 JIT;在一首 16 声部测试歌曲上,CPU 占用约为实时时间的 22%(Ryzen 7 9700X)。LCD 渲染固件绘制的内容,按钮和旋钮均可点击。与 MAME 不同——MAME 保持自己的时钟,在由 DAW 驱动时会累积延迟——这款软音源由宿主音频回调驱动。 工具包括 gui(面板、编辑器、效果窗口)、live(无屏幕 MIDI 输入)、render(MIDI 转 WAV)、panel(纯文本面板驱动)、boot、statetest、blocktime、midisend 和 rec。MIDI 输入为 4 个端口 A–D(64 个声部),通过 --host-midi 支持 DIN 端口模式,每个端口可选择 THRU。电池后备 RAM 设置持久保存在 %LOCALAPPDATA%\S-MU2000\nvram\ 下;插件读取该区域并将更改保存在 DAW 工程中。声部音量、滤波器、EG、EQ 和主 EQ 在 VST3/CLAP 中作为命名自动化参数公开。 实测端到端延迟从 117 ms 改善至独占模式下的 16 ms 和共享模式下的 50 ms;README 指出共享模式下有 38 ms 的下限,并建议使用 --latency 10。接口侧的缓冲区大小和采样率(44100)也有影响。 构建需要 C++20,在 Windows 上使用 MSYS2/MinGW-w64,在 macOS 上使用 Apple clang++,在 Linux 上使用 g++。make test 运行回归测试,其中包括一个不需要 ROM 的子集。核心芯片实现取自 BSD-3-Clause 许可下的 MAME 设备文件;未链接 MAME 本身。VST3 接口定义(MIT)、CLAP 头文件(MIT)和 Dear ImGui(MIT)均未经修改地引入。仓库自身代码为 BSD-3-Clause,署名见 NOTICE.txt。在 MAME 的 SWP30 中发现的错误已根据硬件测量修复并提交上游,其中若干 PR 已合并,其他正在审核中。