Linux MIDI: A Brief Survey, Part 3

An introduction to several Linux MIDI utilities, including JSynthLib, Midirgui and SynthEd.
Other Editor/Librarians

JSynthLib is not alone. The SynthEd Project intends to provide another cross-platform universal editor/librarian for MIDI musicians, but it uses XML and Python instead of Java. The project still is in the planning stages, although screenshots of working prototypes can be viewed on the SynthEd Web site.

Raw sysex utilities simply transmit and receive bulk dump requests, but they provide no editing facilities. These utilities are useful when you have no other way to back up your patch and bank data. Tim Thompson's ancient glib (no, not that one) is a raw sysex utility that may be useful on the command line. However, the more modern Linux MIDI musician probably will prefer to use Christopher Nitschkowski's SysExxer, a nice GUI for sysex bulk dump management (Figure 3), or Patrick Holzhuizen's Java-based MIDI Backup utility (Figure 4).

Figure 3. SysExxer

Figure 4. MIDI Backup

A few machine-specific editor/librarians are available, including Chris Wareham's AlphaJuno software for the Roland Juno 1, Juno 2 and MKS550 synthesizers; Olivier Delhaye's MC303 bulk dump utility for the Roland MC303 drum machine; André Majorel's dx7bag command-line tool for receiving bank dumps from the Yamaha DX7/DX7II synthesizer family; and Marc Halbrügge's KurzFiler librarian for the Kurzweill K2000.

I can't leave this topic without mentioning ALSA's useful amidi, a command-line tool that can be used to initiate and receive sysex messages. Amidi's basic use is as simple as the following example :

amidi -S f0 43 10 01 06 00 f7

This command sends the algorithm change described above. For more details about amidi, run man amidi at the command prompt.


Josep Andreu (aka holborn) has written some excellent MIDI software for Linux, all of which exploits the FLTK GUI toolkit. Among his creations you can find a MIDI channelizer, midirgui, and a software MIDI control surface, mcontrol.

Midirgui takes an incoming MIDI data stream and distributes it to any of six output cells, each of which is an ALSA sequencer client. You can filter the channels allowed to pass through each cell, a huge help when you want to access only a single patch or sound on a device that always is in Omni Receive mode, meaning it receives MIDI on all channels. Thus, by setting one of the cells to pass MIDI messages on channel 10 only, I'm able to use the drums on my SBLive Emu10k1 synthesizer while playing other synths. Figure 5 demonstrates the necessary connections: an external sequencer sends out a multichannel MIDI stream and is connected to midirgui, client 128 in the JACK MIDI patch bay input ports). Midirgui's first cell, client 129, filters the data flow and sends only messages on channel 10 to the Emu10k1.

Figure 5. Midirgui

Mcontrol is another powerful Linux MIDI utility. You can assign up to 12 simultaneous MIDI control messages for each controller on your MIDI keyboard, letting you change a variety of parameters with a single controller. You also can employ mcontrol by itself as a MIDI control surface, using its wheels to send any of six message types to its connected destinations. Figure 6 shows off mcontrol configured for dynamic control of the algorithm select message seen above, so when I move mcontrol's mod wheel I can watch its effect on the TX802's display.

Figure 6. Mcontrol

You can record your controller movements into a sequencer, and you can save your controller assignments as programs and banks of programs.


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.