moont-render 0.9.2

Render Standard MIDI Files through the moont CM-32L synthesizer
# moont-render

Renders Standard MIDI Files (.mid) to WAV audio through the
[moont](https://crates.io/crates/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](CAPTURE.md) for instructions on recording .mid files from
ScummVM using a virtual MIDI port.


## Related Crates

| Crate | Description |
|-------|-------------|
| [moont]https://crates.io/crates/moont | Core CM-32L synthesizer library |
| [moont-live]https://crates.io/crates/moont-live | Real-time ALSA MIDI sink |
| [moont-web]https://crates.io/crates/moont-web | WebAssembly wrapper with Web Audio API |


## 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](COPYING.LESSER.txt),
or (at your option) any later version.