This ruck shreduler uses MIDIator and midilib to support real-time and offline MIDI generation.
$ ruck_midi MIDI_FILENAME NUM_TRACKS LIVE SCRIPT_FILENAME[S]
where LIVE is “no” to only save the MIDI output, or “yes” to also play in real-time.