Linux MIDI: A Brief Survey, Part 3

An introduction to several Linux MIDI utilities, including JSynthLib, Midirgui and SynthEd.

Dr. Matthias Nagorni apparently is a tireless musician and Linux MIDI software developer who has given us one of the finest Linux synthesizers, his ALSA Modular Synth. He also has written a number of wonderful MIDI utilities, collectively known as Kalsatools.

QMidiArp is a MIDI arpeggiator. The programmable arpeggiator was one of the coolest features of analog modular synths. In principle, the arpeggiator was an early sequencer, recording a series of instructions for repeated and transposed pitches to be played automatically over single notes; arpeggiators were especially popular on monophonic synths. QMidiArp does the same thing in software, extending the original model to include as many arpeggiators as you like and adding the ability to include chords as parts of an arpeggiation. The program also is a multichannel/multiport-sensible ALSA sequencer client.

Figure 7 shows QMidiArp processing a demonstration file provided by the good doctor, but no mere screenshot can give you any idea what QMidiArp actually does. You have to download it and and hear it for yourself.

Figure 7. QMidiArp

QMidiControl (Figure 8) is a simpler utility. In its default configuration QMidiControl displays a bank 16, numbered sequentially 1 through 16. The number of faders in the bank can be increased with the --num_controller option, and the initial numbering can be offset with the --offset flag. QMidiControl is indeed a simple program, representing only the numbered MIDI controllers--that is, no sysex or pitch bend--but you may find it quite helpful if your synthesizer responds to MIDI controllers but lacks the physical knobs and sliders. QMidiControl is useful especially when configured for use with Dr. Nagorni's QAMix, a MIDI-controllable soundcard mixer.

Figure 8. QMidiControl

QMidiRoute is a MIDI mapper. It receives a certain type of MIDI message and converts it to another type. Mapping can be quite useful: for example, you could map the note velocity to a controller that affects a reverb parameter, creating a reverberation that "follows" the note event velocity.

The screenshot in Figure 9 shows QMidiRoute configured to convert a stream of pitch-bend messages to MIDI notes (Map 1) and, simultaneously, to a stream of MIDI controller messages for controller #7, the MIDI volume controller (Map 2). The volume control response is reversed, so when the pitch-bend wheel is turned down it produces a chromatic stream of notes that get louder as they go lower. Turning the wheel upwards, the volume decays as the pitches rise.

Figure 9. QMidiRoute

I leave it to the reader to imagine other uses for QMidiRoute. A MIDI mapper can be a useful tool, and I hope to see more development of this program.

MIDI Patch Bays

The ALSA MIDI sequencer API refers to something rather different from the MIDI sequencers I profiled in last month's column. Programs that subscribe to the ALSA sequencer API can function as freely connectable clients of each other, allowing multiple simultaneous connections to and from a single resource (MIDI multiplexing). Management of these connections is possible with the ALSA aconnect command-line tool utility, but the graphic MIDI patch bay is easier to use. It makes connections instantly and clearly displaying the state of all your MIDI connections.

Some of the screenshots in this series already have shown off the MIDI connections panel in Rui Nunez Capela's QJackCtl, an all-purpose GUI for connecting clients of the JACK audio server and the ALSA MIDI sequencer. Other graphic interfaces for connecting ALSA sequencer clients include Bob Hamm's ALSA Patch Bay (Figure 10), Matthias Nagorni's KAconnect (Figure 11) and Maarten De Boer's aconnectgui (Figure 12).

Figure 10. ALSA Patch Bay

Figure 11. KAconnect

Figure 12. AconnectGUI


Similis sum folio de quo ludunt venti.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Yamaha SysEx

Anonymous's picture

Thank-you! I've been trying to edit my Yamaha FB-01 since the 80s...


Christian Nitschkowski's picture

Nice to read my name in this article, but unfortunately it's not correct in the article.
My name is Christian Nitschkowski.
There is another one who worked on this project,
his name is Christoph Eckert (without the "er" at the end).
Maybe you've mixed up our names ;-)
Anyway, it's nice to read ones own name in articles :-)
Thank you for mentioning SysExxer.
Maybe it'll get some more attention and users.

Author's note re: GMidiMon

Anonymous's picture

Ah, sorry about the screenshot confusion, that's my bad. Hopefully it'll be corrected soon.