mididings is a MIDI router and processor, supporting ALSA and JACK MIDI. It is available under the GNU GPL and currently runs on Linux.
Filter events depending on their event type, channel, note number, velocity, etc.,
and freely route them between an arbitrary number of input and output ports.
Transpose notes, apply velocity curves, change controller values and ranges, or convert events to any other MIDI event type. mididings also includes more complex functions like a diatonic harmonizer, floating split points, latched notes, and more.
Set up different "scenes", each with its own MIDI routing and processing, and switch between them at any time, even while playing. Switching scenes does not affect notes already held, and does not result in dropouts or stuck notes!
Print MIDI event data to the console to help debugging your patches and configuring your MIDI controllers.
In addition to its MIDI output, mididings can also execute shell commands and send OSC or DBUS messages.
mididings scripts are in fact Python scripts, and patches are really just Python objects. This allows you to build even complex setups with just a few lines of code.
The core of mididings is written in efficient C++, avoiding performance penalties often associated with scripting languages like Python. Using mididings with the JACK realtime backend incurs zero additional latency.
./setup.py build [--disable-jack-midi] [--disable-alsa-seq] [--enable-smf] ./setup.py install