Linux MIDI: A Brief Survey, Part 3
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).
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.
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.
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.
Special Reports: DevOps
Have projects in development that need help? Have a great development operation in place that can ALWAYS be better? Regardless of where you are in your DevOps process, Linux Journal can help!
With deep focus on Collaborative Development, Continuous Testing and Release & Deployment, we offer here the DEFINITIVE DevOps for Dummies, a mobile Application Development Primer, advice & help from the experts, plus a host of other books, videos, podcasts and more. All free with a quick, one-time registration. Start browsing now...