qmidiroute is a versatile MIDI event processor and router for the ALSA sequencer. The graphical
interface is based on the Qt4 toolkit. qmidiroute permits setting up an unlimited number of MIDI maps in
which incoming events are selected, modified or even changed in type before being directed to a dedicated
ALSA output port. The maps work in parallel, and they are organized in tabs. With qmidiroute it is for
example possible to change or invert the scale of a keyboard, to transform keyboard strokes into program
changes or controller data into notes.
Incoming MIDI events can be logged in a list and are displayed in different colors according to their
MIDI type. qmidiroute provides one ALSA input port and as default two ALSA output ports. The numerical
ALSA client id is displayed as part of the window title.
GeneralUsage
After starting the application, the Unmatched tab is presented (see below). To start MIDI routing setup,
the Newmap... button can be clicked, which will create a new MIDI map appearing as a tab in the map
area. The entire setup can be saved to and loaded from a QMidiRoute file (.qmr). Several maps can be
created to work in parallel. The maps can be organized using the MapRename,Remove and Clone buttons.
The EventLog is displayed in the bottom area by default, but can be hidden if not needed or floated as a
top-level window on the desktop. Logging can also be disabled generally or for MIDI Clock events only.
MIDIInput
The Input field represents the incoming event filter of each map. Handled event types are Note,Controller,Pitchbend and ProgramChange. The events can be filtered by their respective values or by
MIDI channel. Events matching the conditions specified in the Input field are directed to the Output
field.
MIDIOutput
The Output field sets terms into which event type the matching events are transformed, how their channel
and values are transformed, and to which ALSA port they are directed. Channels and Values can be set
Fixed,Offset or ReverseOffset with respect to the input event. As an example, ReverseOffset will take
the value specified and subtract the incoming event value from it to produce the output event value. If
the output range for a value is different from its input counterpart, the input range will be smoothly
scaled to the output range. Events will be sent to the ALSA port specified. The number of available ALSA
ports can be set using the corresponding command-line option.UnmatchedMIDIevents
In the Unmatched tab, the handling of events not matching any input filter of the defined maps is
specified. These events can be discarded or sent to a specified ALSA port.