Skip to content

RDMurray/harmony-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Harmony32

Reverse-engineering, playback, and conversion tools for the Microminiatures Harmony 32 / Harmony 64 chime boxes and their YM2149-based music system.

What Is Here

  • Native/player core in C for Z80 + YM2149 playback and analysis
  • Browser player in web/
  • Rust harmony-midi tool for firmware extraction/build and Harmony<->MIDI conversion, plus Furnace .fur import during build

ROM Policy

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.

Usage

Download prebuilt harmony-midi binaries from the latest release.

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.bin

build 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> --help

Build And Development

Rust tool:

cargo test

Rust tool release:

git tag v0.2.0
git push origin v0.2.0

This 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.sh

See web/README.md for browser build and hosting details.

License And Provenance

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.

About

Emulator and tools for Microminiatures Harmony 32/64 chime boxes

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors