Reverse-engineering, playback, and conversion tools for the Microminiatures Harmony 32 / Harmony 64 chime boxes and their YM2149-based music system.
- Native/player core in C for Z80 + YM2149 playback and analysis
- Browser player in
web/ - Rust
harmony-miditool for firmware extraction/build and Harmony<->MIDI conversion, plus Furnace.furimport duringbuild
This repository does not include any firmware ROM dumps.
- The tools and web app can work with user-supplied ROM files.
- For the web app, place your own ROM dumps in
web/roms/locally before building, or use the upload control in the browser. - For CLI workflows, pass your own firmware/code files to the Rust tool commands.
Download prebuilt harmony-midi binaries from the latest release.
- Linux x86_64: harmony-midi-x86_64-unknown-linux-gnu.tar.gz
- macOS Apple Silicon: harmony-midi-aarch64-apple-darwin.tar.gz
- Windows x86_64: harmony-midi-x86_64-pc-windows-msvc.zip
If you are running from source, use cargo run -- <command> in place of harmony-midi <command>.
harmony-midi extract M27C256B.BIN extracted/
harmony-midi to-midi extracted/code.bin extracted/song01.bin song01.mid
harmony-midi to-harmony extracted/code.bin song01.mid song01.bin
harmony-midi build extracted/ rebuilt.binbuild accepts mixed bankNN_songNN.mid and bankNN_songNN.fur inputs in the same directory, plus arbitrary top-level .mid / .fur filenames. Explicit bankNN_songNN files reserve their slots first; remaining arbitrary-name files are then assigned automatically into the lowest free bank/song slots in lexicographic filename order. A .fur file expands one subsong per Harmony slot, starting at the filename's bank/song when explicitly named, or at the next automatic free slot when not, and carries into later slots and banks as needed.
For full command help:
harmony-midi --help
harmony-midi <command> --helpRust tool:
cargo testRust tool release:
git tag v0.2.0
git push origin v0.2.0This triggers the GitHub Actions release workflow for harmony-midi only and uploads Linux, macOS, and Windows CLI archives to the GitHub Release.
Web app:
cd web
./build.shSee web/README.md for browser build and hosting details.
This repository is licensed under the BSD 3-Clause License. See LICENSE.
ym2149_core_standalone.c/.h are adapted from the MAME AY-3-8910 / YM2149 implementation lineage and retain BSD-3-Clause attribution. The original copied MAME reference files are not required for building this project and are not included in this public tree.