moont-render 0.8.3

Render Standard MIDI Files through the moont CM-32L synthesizer
moont-render-0.8.3 is not a library.

moont-render

Renders Standard MIDI Files (.mid) to WAV audio through the moont CM-32L synthesizer.

Usage

$ cargo run -p moont-render -- -c CM32L_CONTROL.ROM -p CM32L_PCM.ROM input.mid output.wav

With the bundle-rom feature, ROM arguments are optional:

$ cargo run -p moont-render --features bundle-rom -- input.mid output.wav

How it works

moont-render takes a single SMF file (format 0 or 1) and will:

  1. Parse the MIDI file including SysEx messages and tempo changes.
  2. Convert tick-based timing to 32kHz sample timestamps.
  3. Feed all events into the CM-32L synthesizer.
  4. Render the full duration, plus a 2-second tail to a 16-bit stereo WAV file.

Supported MIDI features

  • Format 0 (single track) and format 1 (multi-track)
  • All channel messages (note on/off, control/program change, pitch bend...)
  • SysEx messages (instrument uploads, reverb configuration, etc.)
  • Tempo changes (defaults to 120 BPM)
  • Running status

Capturing MIDI from ScummVM

See CAPTURE.md for instructions on recording .mid files from ScummVM using a virtual MIDI port.

License

moont-render is distributed under LGPL 2.1+.

Copyright (C) 2021-2026 Geoff Hill geoff@geoffhill.org

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.