moont-live
Real-time CM-32L MIDI sink using ALSA, powered by the moont synthesizer. Appears as an ALSA sequencer port that accepts MIDI input and renders audio to the system output.
Build Requirements
alsa-lib-devel(Fedora) orlibasound2-dev(Debian/Ubuntu)
Usage
moont-live [OPTIONS] --control <ROM> --pcm <ROM>
With the bundle-rom feature, ROM arguments are optional:
cargo install moont-live --features bundle-rom
moont-live [OPTIONS]
Options
| Flag | Description |
|---|---|
-c, --control ROM |
CM-32L control ROM path |
-p, --pcm ROM |
CM-32L PCM ROM path |
-g, --gm |
Enable General MIDI translation |
-d, --device DEV |
ALSA PCM device (default: default) |
-b, --buffer N |
Period size in frames (default: 512) |
-v, --verbose |
Log MIDI events to stderr |
-l, --list |
List MIDI ports and exit |
Connecting MIDI Sources
After starting moont-live, connect a MIDI source with aconnect:
# List available ports
aconnect -l
# Connect a source to moont
aconnect <source_client>:<source_port> <moont_client>:<moont_port>
PipeWire and JACK users can also route MIDI using their respective tools
(e.g. pw-link, qjackctl).
General MIDI Mode
The CM-32L uses a completely different instrument map from General MIDI.
The --gm flag enables a best-effort translation layer:
- Remaps GM program numbers to the closest CM-32L equivalents
- Remaps GM drum notes to CM-32L rhythm notes
- Reassigns Part 1 to MIDI channel 1 (CM-32L default is channel 2)
- Sets pitch bend range to +/-2 semitones (GM default, vs CM-32L's +/-12)
Without --gm, MIDI passes through unmodified, which is correct for
CM-32L-native sources (DOS games via DOSBox, ScummVM, etc).
REPL Commands
The interactive prompt is available only with the repl feature:
cargo install moont-live --features repl
This adds a prompt with runtime controls:
set part <1-9> [program <0-127>] [volume <0-100>]set master volume <0-100>set reverb [mode <0-3>] [time <0-7>] [level <0-7>]resethelpquit
Prompt command history is stored in .moont-history.
Related Crates
| Crate | Description |
|---|---|
| moont | Core CM-32L synthesizer library |
| moont-render | Render .mid files to .wav |
| moont-web | WebAssembly wrapper with Web Audio API |
License
moont-live 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.