Muse is a command-line melody player that reads a text-based command sheet and plays notes through a SoundFont via FluidSynth. It can also export played notes into a MIDI file.
src/- application sourcesinclude/- application headersmidifile/- vendored midifile library sourceexample/- sample melody command sheetsMakefile- standard build entry point
Requirements:
- C++17 compiler (
g++orclang++) - GNU
make - FluidSynth development package (headers + library)
Build:
makeBinary output:
bin/muse
./bin/muse --soundfont FluidR3_GM.sf2 --data data.txt --preload preload.muse --midi outputMidi.midiStreaming mode (route events to MIDI out / loopMIDI):
./bin/muse --stream --stream-port 0 --data data.txt --preload preload.museOptions:
--soundfont <path>: SoundFont file (.sf2)--data <path>: watched command file--preload <path>: preload script run at startup--midi <path>: output MIDI path used by thesavecommand--stream: send note events to MIDI out port instead of direct FluidSynth audio--stream-port <n>: MIDI out port index used in streaming mode--help: show help
- Notes:
c d e f g a bwith sharps/flats (c#,db, ...) - Rest:
r - Scope variables:
NUM <name> <value>VAR <name> (<commands>)/nameto execute aVAR
- Controls:
>/<octave shiftif <numVar> (<commands>){ ... }parallel components
- Utility:
infoprint settingssavewrite MIDIclearclear terminalquitexit