About this project

S-MU2000 is an open-source software tone generator modeled on the Yamaha MU2000, built to run as a plug-in inside a DAW. It emulates the unit's internals — an SH7043 CPU plus two SWP30 tone-generator chips — and executes the genuine firmware unmodified, so voices and behavior derive from the real hardware. It is an unofficial project, not affiliated with Yamaha. Current state: it runs as VST3 and CLAP on Windows, and VST3 and Audio Unit (AUv2) on macOS (Apple silicon), with a hardware-style front-panel screen plus mouse-and-keyboard editor windows. A Linux port of gui, VST3 and CLAP was contributed by a third party; the author states he cannot test or support it. No ROMs are included, in the repository or in any release. Users must extract the 4 MB program ROM and 32 MB wave ROM from their own MU2000; extraction steps and tools are documented in doc/dump/. The project explicitly asks that dumped ROM images, modified firmware and custom .ydl files not be redistributed or posted in issues, PRs, discussions or releases. The program ROM can alternatively be reconstructed from Yamaha's published updater. Sound quality is checked by recording real hardware over S/PDIF and comparing in 1/3-octave bands: of 1225 XG voices at C4, 1109 match within 1.5 dB, and 60 of the remaining 116 vary by a similar amount on hardware-to-hardware re-recording. Performance mode, reverb/chorus types, controllers, per-drum NRPN, multi EQ and voice stealing past 128 voices are also covered. Remaining mismatches are tracked in doc/todo.md. A JIT translating SH2 and MEG instructions to machine code is included; on a 16-part test song CPU usage is about 22% of real time on a Ryzen 7 9700X. The LCD renders what the firmware draws, and buttons and dial are clickable. Unlike MAME, which keeps its own clock and accumulates delay when driven from a DAW, this soft synth is driven by the host audio callback. Tools include gui (panel, editor, effects windows), live (screenless MIDI input), render (MIDI to WAV), panel (text-only panel driving), boot, statetest, blocktime, midisend and rec. MIDI input is 4 ports A–D (64 parts), with DIN-port mode via --host-midi and a selectable THRU per port. Battery-backed RAM settings persist under %LOCALAPPDATA%\S-MU2000\nvram\; plug-ins read that area and keep changes in the DAW project. Part volume, filter, EG, EQ and master EQ are exposed as named automation parameters in VST3/CLAP. Measured end-to-end latency improved from 117 ms to 16 ms in exclusive mode and to 50 ms in shared mode; the README notes a 38 ms floor in shared mode and recommends --latency 10. Interface-side buffer size and sample rate (44100) also matter. Building requires C++20 with MSYS2/MinGW-w64 on Windows, Apple clang++ on macOS, or g++ on Linux. make test runs regression tests, including a subset that needs no ROMs. The core chip implementations are taken from MAME device files under BSD-3-Clause; MAME itself is not linked. VST3 interface definitions (MIT), CLAP headers (MIT) and Dear ImGui (MIT) are imported unmodified. The repository's own code is BSD-3-Clause, with attributions in NOTICE.txt. Bugs found in MAME's SWP30 are fixed against hardware measurements and submitted upstream, with several PRs merged and others under review.