|Fig. 1. MIDI Monitor lets you select which messages to view and then displays
them in real time. Here, the first and next-to-last messages (red) play
and release MIDI note C3. The negative-value Pitch Wheel messages
(green) bend the pitch down. The blue Control messages show Mod Wheel
activity (CC1), and the pink ones show sustain pedal down and up (CC64).
FOR NEARLY 30 years, MIDI has been the communication standard between music hardware and software. To celebrate MIDI’s anniversary, here’s a refresher on everything you need to know to make the most of MIDI communication between your hardware controllers (keyboards, knob-and-button boxes, and so on) and your DAWs and software instruments.
A quick look through the MIDI specification reveals a bewildering array of messages, including two systems for syncing devices (MIDI Time Code and MIDI Clock) and an open-ended protocol called System Exclusive for programming and controlling the inner workings of hardware and software devices. But for control-surface-to-computer communication, you really only need to be familiar with six types of MIDI Voice messages: Note, Mono, and Poly Pressure (a.k.a. Aftertouch), Pitch Bend, Control Change, and Program Change.
Although most DAWs provide some form of MIDI monitoring, nothing beats a standalone monitoring application for tracking down MIDI problems. MIDI Monitor on the Mac (snoize.com) and MIDI-Ox for the PC (midiox.com) are excellent free ones (see Figure 1).
Common Ground Four of these six messages contain three elements: an identifier and two data values. The two exceptions, Mono Pressure and Program Change, have only one data value. The identifier indicates the type of message being sent and which of the 16 possible MIDI channels it is targeting. You can configure most software to receive on all channels (called Omni mode) or on only a specific channel. Each of the two data byte values range from 0 to 127 (128 increments). In some cases they have different meanings such as note number and note velocity, whereas in other cases they combine to offer a greater range (16,384 increments) of a single parameter such as Pitch Bend.
Depending on your purpose, the MIDI channel may or may not be important. If you have several MIDI keyboards and control surfaces connected to your computer, and you want to use them to play different software instruments, assigning them to different MIDI channels is a good way to go. You can still have a particular software instrument respond to all devices by setting it to receive on all channels.
Take Note Note messages are the bread and butter of MIDI; without notes, what’s the point? The first data value in a Note message specifies the note number—the 128 note numbers cover 10 octaves plus a perfect fifth. Most keyboards offer both octave and semitone shift buttons, but with no shift, playing Middle C sends note number 60. Most monitors display note number 60 as C3 by default, but offer the preference of showing it as C4.
The second data value specifies note Velocity—a measure of how fast the key is descending. That’s a good proxy for the hammer force, and therefore volume, on an acoustic keyboard instrument, but in software, you can assign Velocity to control just about anything—envelope attack time or filter cutoff, for example. Releasing a note usually results in a Note message with Velocity 0, but MIDI provides for separate Note On and Note Off messages, both offering the full Velocity range. At the receiving end, devices that don’t implement that system simply treat all Note Off messages as Note On messages with Velocity 0.
Bend Under Pressure Mono and Poly Pressure messages are generated by pressing a key after it has bottomed out. The difference is that pressure on any key generates the same Mono Pressure messages, whereas each key generates its own Poly Pressure messages. Obviously Poly Pressure involves a lot more data, and few keyboards implement it, but even Mono Pressure can get data intensive. Fortunately, most keyboards let you turn it off.
Pitch Bend is also data-intensive, owing to its large range and need for small steps to make smooth bends. Its 16,384-step range is interpreted as half negative (bend down) and half positive (bend up).
|Fig. 2. It’s best to stick
with the described meaning for the CC numbers shown here. For
controlling a DAW or software instrument from a hardware controller, you
can usually use the remainder of the CC numbers as you see fit. |
Take Control Control Change (CC) messages have the most wide-ranging applications. Although there was an effort in the original MIDI specification and thereafter to standardize their meanings, you can use any CC message for any purpose when using hardware to control a DAW or software instrument. A few conventions, shown in the accompanying table, are almost always followed, however (see Figure 2).
The paramater that each CC message actually controls is either pre-configured in the receiving software or is user-assigned by means of some implementation of MIDI Learn. Most software now has robust and easy-to-use MIDI Learn capability as well as extensive default mappings. For example, Propellerhead Reason has a pre-configured mapping for each of its rack devices.
Get With the Program Notice that CC numbers 0 and 32 are used to select program banks. Actual program selection is made with a different Program Change message, which has a single data value. So, although you can select only 128 different programs, you potentially have access to 16,384 banks containing 128 programs each.
One last thing to keep in mind is that many software instruments don’t support Program Change messages, instead offering their own program browsers. Among those that do support Program Change messages, some also adhere to the General MIDI specification, which dictates what sound goes with each program number. Typically these are no-frills synths intended for sketching and standardized playback of MIDI files.
Len Sasso writes about electronic music technology. You can hear some of his music at swiftkick.com.