M.I.D.I.—Musical Instrument Digital Interface—shook up the industry when it was introduced in 1983, by separating the player’s performance from the sound of the instrument, and this powerful digital communication protocol has been going strong ever since. To make basic use of MIDI, a player or producer really doesn’t have to know much—or anything, really—about how it works under the hood, but eventually even novice users get to the stage where they want to perform more advanced editing on a MIDI recording, or go even further—maybe tweak a sound to respond more expressively to performance gestures. Then they’re probably ready to dig a little deeper, and acquire some technical know-how about the inner working of MIDI, and the various MIDI messages that are used to craft the most expressive, musical performances. There won’t be room here to get into advanced applications, but I will cover the basics about the most common MIDI messages—so here goes.
The bulk of the musical performance data of a MIDI recording falls into the message category of “Channel Voice Messages” (I’m going to ignore the old-school “Channel” designation here). The 7 Voice Messages are:
• Monophonic (Channel) Pressure/Aftertouch
• Polyphonic (Key) Pressure/Aftertouch
• Program Change
• Control Change (or Continuous Controller) messages, a.k.a. CC messages, of which there 127
The first question many people have, when presented with this list is “why are Note-On and Note-Off separate messages?”—in a standard “piano roll”-style MIDI editor display, a single bar includes both the beginning and end of each note. Well, when a Note-On message is generated—by a player depressing a key or tapping on a drum pad—the MIDI recorder (nowadays a Virtual Instrument (V.I.) track in a DAW) has no way of knowing how long that note will be held, and other, additional notes will likely be played before the key is let up. So the MIDI recorder keeps track of what notes are held down, and when the matching Note-Off message is received for each, it assembles the two related Note messages for that key into the one note bar you see in the editor display—the bar’s start & end points indicate when the key was depressed and released, respectively—the Note-On and Note-Off messages, put together for a complete picture of the performance (in respect to that one note!).
This is accomplished by storing the appropriate information in two of the three data Bytes that make up every individual MIDI message. The 1st Byte contains a code to identify the message type as Note-On or Note-Off (the other messages in that list of 7 all have their unique codes, as well). The 2nd Byte (Data Byte 1) identifies the specific note (octave+pitch), and the 3rd Byte (Date Byte 2) registers the Note’s Velocity (I’ll come back to that in a minute). Each of these (8-bit) Bytes can hold 7 bits of usable data, so the range of all MIDI message values can have 128 possible values (27), from 0–127. For example, 128 individual notes are specified in the MIDI spec, extending from about 2 octaves below the lowest note on a standard 88-key piano keyboard to about 1.5 octaves above the highest piano note—Middle C is MIDI Note Number 60. (You should see these data Bytes and their values if you have a look in your DAW’s MIDI Event Editor).
Velocity—the 3rd Byte (Data Byte 2) in each MIDI Note message—is one of the most important (and one of the most frequently-edited) bits of MIDI data. It carries data that describes the player’s touch—specifically how fast (velocity) the key (or drum pad) was pushed down. In more familiar musical terms, this corresponds to how hard the note was played—faster (higher) Velocities, up to the max of 127, indicate harder playing. How this information is interpreted by the sound source—the V.I.—is up to that Instrument’s sound designer, but 999 times out of 1000, the V.I. is programmed to react as a real instrument would—harder playing (higher MIDI Velocity values) results in notes that are louder, brighter, and (for percussive sounds) have sharper attacks. Tweaking Velocity data can be very handy for many reasons—to tame a heavy-handed performer, to compensate for a overly light or heavy MIDI keyboard action, or to simply correct the occasional missed or overplayed note in an otherwise well-played track.
Four of the next message types—PitchBend, CC, and the two types of Aftertouch messages—are intended for streaming-type (continuous) musical gestures. Since all individual MIDI messages are only three Bytes long, and each carries only one piece of performance data, longer strings of Aftertouch, Pitchbend, or CC messages are strung together—their values change gradually as the messages are generated, creating a gradually-changing datastream that is applied to various musically expressive parameters in a V.I., like volume, pitch, tone, brightness, etc.
So these message strings would be utilized if you wanted to, say, hold a sampled trumpet note and swell it (gradually louder and brighter), or simulate the pitchbend or vibrato effect that a guitarist might apply to an otherwise bland sustaining note. (Almost) all these streaming-message types work the same way—they’re categorized by how they’re physically generated.
The two Aftertouch (Pressure) messages are both generated by squeezing down on a key after the note has been triggered and is still being held down. By far the most common one is Channel, or Monophonic, Aftertouch. A pressure-sensitive strip in mounted below the MIDI keybed, and once the note has been struck (hitting the separate Velocity sensors) and is being held (sustained), the player pushes the already-depressed note down further, into the Aftertouch sensor strip. This continuous pressure generates a continuous stream of Aftertouch messages, with the values of each corresponding to the (changing) amounts of pressure being applied. If a V.I. is programmed to respond to this datastream with musical changes to the sound (as above), then the player can add expression to held notes, without needing an extra hand (or foot).
With Channel (Monophonic) Aftertouch, there’s only one sensor for the entire keyboard, and pressing any note will generate Aftertouch messages that will necessarily be applied to all held notes on that particular Instrument. With the other Aftertouch type, Key (Polyphonic) Pressure, there are separate Aftertouch sensors for every key, so each note in a chord can have expression added to it independently. For years there were almost no keyboards available with Poly Pressure, but lately, specialized advanced MIDI controllers are making good use of it in a push for advanced MIDI expression (see Roli and Linn).
PitchBend messages are generated by one of the two wheels present on virtually all MIDI keyboard controllers—usually the left, spring-loaded one. This is another type of message that works by having the wheel generate a string of messages that gradually shifts a V.I.’s pitch either up or down. Unlike other MIDI messages, since PitchBend is bidirectional (up & down!), the Off position is not at the bottom of the wheel’s throw (0), but at the center (spring-loading makes the wheel jump back to the center Off position when you let go), so Off is a value of 64 (halfway between 0 (pitchbend down) and 127 (pitchbend up), of course).
The MIDI PitchBend messages themselves don’t know or care how far the pitch is actually “bent” up or down—they only register the position of the wheel. Once again, the V.I.’s sound designer (or you, if you choose to change the default value) sets how much pitch change will occur at the high and low extremes. The default for most patches (the ones where pitchbend makes sense musically) is usually two semitones up and down, but it could be set to any value, even as much as an octave or two, depending on the range the V.I. offers in its programming parameters.
Program Change messages—to switch from one instrument patch to another—may not be entierely obsolete, but are not really needed these days, and so are rarely used with Virtual Instruments in a DAW. To save space, I’ll skip over them and move straight to...
This is a big category, because it includes 127 (well 120, really) individual CC message types. All CC messages work just like the other continuous message types—long strings of them with gradually changing values provide for gradual, musically expressive performance gestures. Not all of the CC message sub-types are equally common—some are defined, while others are simply available to be assigned to any desired V.I. parameter. I’ll just cover a few of the most common ones..
CC#1 is defined as ModWheel, simply because it’s generated by the other (Modulation) wheel found on virtually all MIDI controllers (the one on the right). Most of the time, V.I.s have it assigned by default to add an automatic (LFO-generated) musical Vibrato effect, or for instruments where that would be inappropriate (piano), possible a Lowpass Filter, for tone control. But, again, it can reassigned (or doubly or triply assigned) to any expressive V.I. feature(s) you want.
CC#64, though it can carry a continuous stream of CC messages, is usually implemented as an On-Off switch to control the MIDI keyboard’s damper pedal (0-63 = pedal up, 64-127 = pedal down). More advanced MIDI keyboards/pedals and V.I.s utilize continuous CC64 data to enable more advanced piano techniques like half-pedaling.
If you happen to utilize one of Roland’s full-size MIDI drum kits to trigger a drum V.I. within your DAW, you’ll quickly learn that, while many drum V.I.s use CC#1 for continuously open/closed hi-hat control, Roland uses CC#4 (officially designated “Foot Control”), so you may have to re-assign this in the V.I. to get the hats to open & close properly.
CC#7 and CC#10 are MIDI Volume and Pan, respectively (here, Volume means mixing volume, not player’s volume). In DAWs, these are not really needed anymore, but some DAW faders may still respond to them, so you should be aware of the possibility of unintentionally messing up mix settings with sliders on your MIDI controller (for example, Logic has a Preference to turn fader response to CC7/10 on or off, as desired).
Finally, CC#11 is defined as “Expression”—this is meant to be the player’s volume control, with a common example being an organ’s volume (swell) pedal. While the reset value is 0 (like almost all other MIDI messages), when it’s programmed into a V.I., the parameter it controls is usually set to a default value equivalent to 127, so if the CC is accidentally reset, the V.I.’s volume may drop to 0 (I’ve seen that happen a couple of times, but now that that you know about it, it'll be an easy fix if it should occur).
I’m already running way long, so I’ll stop here. For anyone who might want to really dig into MIDI, of course Ask.Video/macProVideo has plenty of courseware, and the actual MIDI 1.0 Spec document(s) (previously available only for a fee) have recently been made available for free download from the MIDI Manufacturers Association at www.midi.org, so there’s plenty of material out there to help you immerse yourself in the wonderful world of MIDI.