Linux MIDI: A Brief Survey, Part 2
Two months ago, I began what I thought would be a two-part summary of MIDI software for Linux. That plan has changed somewhat, and this installment actually is Part 2 of what will be at least a four-part series. This month, I'm your guide to the world of Linux MIDI sequencers. Next month, I'll introduce some helpful MIDI utilities. Then, in the final installment, I'll look at some of the interesting MIDI languages and experimental environments available to Linux MIDI musicians.
First, a brief review of what a sequencer is and does. Old-school MIDI musicians would define a sequencer as software or hardware that records MIDI data entered by way of a performance on a MIDI-enabled instrument--keyboard, guitar, wind controller--and provides some means for editing and arranging the recorded data. Remember, MIDI data is not audio data, and MIDI messages simply give commands to a connected device (hardware or software) that then should respond according to the particular message. For example, a MIDI note-on message tells an instrument to play a specified note, while a stream of pitch bend message tells the instrument to perform a pitch bend to the specified degree. The range of MIDI message commands is impressive, and a sequencer can be used to automate a variety of studio equipment, such as mixers, effects processors and multitrack recorders, whether tape or digital.
New-school MIDI musicians are more software-based, using softsynths and plugins in place of racks of external gear. Modern sequencers also are expected to support audio tracks that can be synchronized with MIDI tracks. The audio/MIDI sequencer is now the rule: MIDI-only sequencers still are available, but they have become the exception.
User interfaces for sequencers can take various forms, the most popular of which include the "piano-roll" coordinate grid system, the event list and standard music notation. Data may be entered directly from a MIDI-capable instrument or from the computer keyboard. Once the data is entered, it may be represented and edited by any or all of the available user interfaces. Track displays help the musician see the data in a familiar model adopted from the tape-recording paradigm.
Sequencers also are designed for synchronization with other equipment and software. MIDI clock and MIDI time code (MTC) messages provide a means for accurately synchronizing time-critical operations, and MIDI machine control (MMC) messages can operate the transports and other controls available on MMC-aware equipment.
Before we go further, I must remind readers that I am not providing tutorials in these articles. If you want to know more about the programs presented here, please visit their Web homes and give the software a spin yourself. Okay, with all that out of the way, let's now look at some of the available Linux MIDI sequencers.
Rosegarden is the most mature Linux sequencer, with a development history extending back to 1993. During the late 90s, Chris Cannam and Richard Bown decided to update Rosegarden drastically, replacing the aged Xaw/Motif-like toolkit with the more modern Qt graphics and substantially upgrading every aspect of the program. The current version of Rosegarden is a fully modern audio/MIDI sequencer with editor interfaces in all the expected modes (Figure 1). It offers full sets of the usual MIDI editing tools, such as various cut/copy/paste functions, data filtering and substitution routines, block operations and so forth. The program's audio editing capabilities necessarily are more limited, but you can configure Rosegarden to summon your favorite soundfile editor for detailed work on your audio data without leaving the garden.
Rosegarden supports the LADSPA plugin API for its audio processing, and the most recent versions have incorporated support for the Disposable Soft Synth Interface (DSSI), an audio programming interface designed for instrument plugins. DSSI expands Rosegarden's support for software synthesizers, but its potential as a "LADSPA for instruments" plugin interface hopefully will appeal to other Linux audio application developers.
Under the Composition/Studio menu item, you can find Rosegarden's MIDI and audio device managers. Rosegarden polls your system for available devices, real and virtual, and maintains its own accounts of their activities (Figure 2). The program supports ALSA and JACK, but it prefers to set its connections internally. That is, the user is advised not to use an external utility such as qjackctl for managing those connections.
Once your connections are made, you can proceed to arm a track for recording by clicking on the small button to the left of the track name. When you're ready to record, click on the big red record button, and Rosegarden starts recording whatever comes in through the selected MIDI input device. After recording, you can edit your performance to perfection in any of Rosegarden's editors.
Rosegarden has too many features to enumerate or show off here, so you'll have to visit the Rosegarden Web site to get the full low-down. One of my favorite aspects of Rosegarden is its ability to export data to the Csound score format, essentially functioning as a MIDI- or notation-based front end to that most awesome music and sound programming/processing environment. Other Linux music and sound applications that support output to the Csound score format include the Denemo notation-based interface, the Ceres/Ceres3 spectral domain editors and the Common Music music programming environment. All these programs are listed on the Linux soundapps pages.
By the way, Rosegarden's standard music notation capabilities are excellent, with particularly impressive methods for finessing notation created from imported MIDI files. Printed output is quite good, and for users who want the ultimate in printed music output, Rosegarden can export your work in the LilyPond music typesetter file format.
Similis sum folio de quo ludunt venti.
- Readers' Choice Awards--Nominate Your Apps & Gadgets Now!
- Memory Ordering in Modern Microprocessors, Part I
- Source Code Scanners for Better Code
- Tech Tip: Really Simple HTTP Server with Python
- diff -u: What's New in Kernel Development
- Returning Values from Bash Functions
- RSS Feeds
- Non-Linux FOSS: AutoHotkey
- Security Hardening with Ansible