The next six installments of this series will focus on Digital Audio Workstations (DAWs for short). They are available both as computer/software combinations, and as stand-alone tabletop devices. Most DAWs are MIDI-enabled, to varying degrees, so parts 22 and 23 of this series will focus on elements of MIDI, both as it is used in MIDI sequencing and for other purposes like live performance, synchronization, etc….
When the MIDI specification was put in place, around 1983, it ended an era of “every manufacturer for himself” and began the era of we’re all in this together” that has led to widespread compatibilities between different makes, models, and concepts in musical instruments and music software.
MIDI – what for?
MIDI is a simple binary “language” consisting of a set of messages used for such diverse functions as:
* Live Performance – a performer can remotely control several more instruments than the one they are actually playing. (This was MIDI’s main originally intended use)
* Sequencing – the recording, editing and playback of musical performances (not the sounds, but the MIDI events) from MIDI instruments.
* Synchronization – MIDI is one of several technologies that can be used to make machines and/or software to run “in sync” so as to stay together over time rather than to drift apart, even to slow down and speed up together if the music demands it, esp. useful with for video or film.
* Transport function control – transmitting signals to trigger start, stop, rewind, and fast-forward functions remotely.
* Integration of video or film with audio.
* Triggering - samples or synthesized sounds.
* Lighting control - arrays for live performance.
* Backup - the contents of synthesizer or sampler memory.
In addition to the MIDI set of messages and their data structure, MIDI also consists of standardized hardware, like the ubiquitous 5-pin DIN plugs and sockets usually called MIDI ports.
These days much of MIDI happens inside a computer and it’s software, and we see fewer rats’ nests of MIDI cables or racks full of MIDI gear, but there are still occasions when we need to know how to hook up MIDI equipment.
What is a MIDI interface?
MIDI instruments, and other devices, are interfaced (connected for proper data flow) through MIDI ports. Devices with MIDI ports usually has one or more of the following:
MIDI In – allows messages to be input from an external source. MIDI Out – sends messages to other devices. MIDI Thru – passes messages from the In port, unaltered. This allows connection of multiple devices in series (called daisy-chaining) without generating duplicate or unnecessary messages.
Specialized hardware MIDI interfaces are also available to facilitate more complicated setups as well as the inclusion of a computer. Some simply act as interface/splitters, some include the ability to merge or mix MIDI signals (which isn’t easy to do properly!), and the fancier models allow an expansion of the basic MIDI spec by allowing each port to act as an independent MIDI system. (more on this in TCRM 23)
What is a MIDI controller?
Generally speaking, any device that can produce and transmit live MIDI events (in real-time) can be called a controller: keyboards (with or without built-in sound generators), MIDI guitars, MIDI wind instruments, MIDI drum pads, MIDI pedals, MIDI knob/slider banks (which look a bit like audio mixers), Theremins, interactive sculptures, mannequins,… even household appliances.
For fun one day, I decided to make a MIDI blender and beater; though now MIDI controllers, they are both still fully functional for kitchen chores. In concert I’ve made smoothies while simultaneously making music and shared them with the band and the audience; both yummy and entertaining! (see TCRM22_pic19.jpg) (Probably best if you don’t try making these at home folks as it requires working with 120 Volts AC from the wall!)
MIDI controllers that can produce audio themselves usually contain user settings for Local Control. When Local Control Off is selected, the control surface is disconnected from the internal sound generator and MIDI messages are only sent to external devices through the MIDI Out port.
This is convenient for triggering sounds from secondary synths or samplers without automatically playing some unwanted internal sound. It can also be useful at avoiding MIDI double triggers where a note is played once, but sounds twice. Double triggers can happen when a keyboard controller/synth hybrid triggers its internal synth to play directly, but the MIDI message is sent out to another device or interface and is echoed back to the MIDI In of the original keyboard, where it triggers the note to be played a second time.
This type of situation can go downhill fast, as three or more notes can easily be triggered as external devices respond adding to the confusion of the orignal devices’ double triggering. Finally, more complicated MIDI setups can cause infinite loops of notes, causing the whole thing to crash….
For these reasons, it is good to become well acquainted with local control and the specifics of various MIDI interfacing options.
See TCRM22_pic4.jpg for what happens when you turn local control off.
What is a sequencer?
A sequencer is a device (often a software application) that can record, edit, and playback MIDI messages. The term originated with old modular analog synthesizers, which had simple modules that could step through a sequence of 4-16 control voltages to play simple loops of notes. MIDI offers a lot more complexity than this, and MIDI sequencers reflect that complexity by giving the composer many more options than simply stringing notes together.
Sequencers are to MIDI as word processors are to written languages. The specific features, user interface, and techniques implemented by a sequencer can vary significantly. This is what makes programs such as Cubase, Digital Performer, and Logic so different, even thought the basic functionality is similar. Nowadays most DAWs offer various MIDI sequencing tools as well as digital audio editing.
The MIDI Language
Before learning something about the MIDI language itself, it helps to remember what MIDI was all about when the language was first created.
The idea was to send messages to several devices, over a single cable if necessary, but in such a way that each device could be set up to respond only to messages intended for it and not the others in the chain. To do this, an ID was needed at the beginning of the messages. For technical reasons, a limit of 16 separate identifiers was agreed upon and these separate identifiers were called MIDI channels (not a perfect word, but it’s what we’re stuck with).
Another aspect of the original idea was to have messages that would be recognized by all devices in a system regardless of which MIDI channels the devices were set to respond to. So they created two main types of messages: Channel messages and System messages.
The channel messages, those with one of the 16 channel IDs, are further separated into two kinds Voice and Mode. Channel Voice messages consist of musical performance commands (mostly to do with notes – which ones, how they’re played, etc.). Many of these messages are similar to the notes and other markings in a musical score. Others help control musical nuances and basic mixing functions. Channel Mode messages offer general controls for how a MIDI device functions.
System messages are meant to be broadcast widely to all devices and are, therefore, not channel specific. There are three types of System messages: Real Time, Common, and Exclusive.
System Real Time messages are meant to help all connected devices act together during playback and recording. They include relative types of commands such as clocking, basic transport, sensing and reset functions.
System Common messages are less relative. Many include exact time/location references through MIDI Time Code (MTC), Song Positioning, and Song Pointers.
System Exclusive messages are a way to communicate raw data regarding very specific device functions, data that’s exclusive to just one make and model of device. They can be used to send the contents of a devices memory for backup or retrieval. They can be used to transfer audio samples (though not in real time).
For now, let’s look further into the most common messages in music production, the Channel Voice variety. TCRM 23 will delve further into uses of the channel mode and system messages.
More about MIDI channels
A MIDI channel is a data designation used to mark messages with one of 16 ID numbers. This allows messages to be sorted into separate data paths. Each path can then be assigned a different sound (instrument) and controlled independently. (see TCRM22_pic2.jpg)
When the original MIDI spec was devised it seemed inconceivable that anyone would need (or any synth would perform) more than sixteen instruments simultaneously. In the current worlds of music production and film scoring, however, 16 can seem like a very confining number. Further markers can be added in some software, and/or by using specialized interfaces, allowing multiple independent sets of 16 channels to be created. Generically, these would be called channels A1-16, B1-16, C1-16 etc.. Individual software applications often rename them to something either more musical, studio specific or just plain flashy.
It is important that MIDI channels should not be confused with MIDI tracks! A MIDI track, much like an audio track, is the location for the recorded data. In most sequencers many tracks can be assigned to a single MIDI channel. Working this way can help organize, edit and mix a sequence. For example, you might play a MIDI bass part several times, using the same sound on the same MIDI channel each time but recording each pass of MIDI data to a new track so you can pick the best take later.
Or you may have a sampled drum kit that is actually a collection of sounds mapped across the notes of a single channel. By placing the snare, kick, and hi-hat on separate tracks (all with the same channel designation) changing the dynamics or metric positioning of just the kick (or either of the other two) is made much easier.
Then again, in some sequencers, a single track may even contain messages that address information across numerous MIDI channels. (This can make viewing the entire score easier, but editing more difficult.)
Note that the (binary) language of MIDI starts counting with zero as the lowest number, so you’ll sometimes see reference to MIDI channels 0-15 instead of 1-16, and sometimes a synth or sampler has it’s sound memory listed as, say, 0-99, while another shows 1-100. Be ready to allow for that offset when it happens. These issues are much rarer when all comminication is “in-the-box,” meaning that sequencer, sampler, and synthesizer functions are all performed by a single computer.
In MIDI-speak a program (or patch) is a memory location for sound data in a sampler, synthesizer, or other device. In it’s simplest form, a Program Change message specifies only a channel and patch number. A message of program #32 on channel 12 will recall memory location #32 on all synths or samplers set to respond to channel 12.
MIDI has only 7 data bits available for the program change message, so only 128 numbers can be called up. While this seamed like a huge number of sound memory locations for the synths of the early eighties, it is not enough for more current models with over 1000 sounds. To aid in organizing and recalling so many sounds, synthesizers collect patches into a type of folder, called a bank. Each bank can have up to 128 programs stored in it. Patches can then be recalled by channel, bank and program number (ex: channel 12, bank C (or 3), program #32). Banks are selected with a different MIDI message called Bank Select – we’ll get into that in a moment.
Bank designations are actually made by pairing the program change message with one or two bank select messages. These are actually just two of the 128 possible continuous controller messages. These will be described in greater detail next month.
Some software is designed to hide the numbers and use words to organize patches and banks. The purpose for this approach is to make organizing and recalling patches more user-friendly and it is very helpful when everything is working correctly. When something goes wrong, you wish you could view the cold hard numbers because, when all is said and done, they are what matters when you have to match up two pieces of gear.
Note On/Note Off
The most basic MIDI message is also the most common: the Note On. It starts with a channel designation, followed by a note number, and Velocity value (usu. dynamic intensity). The term velocity was chosen for it’s relation to speed, as what it was originally measuring was the speed at which the key on a MIDI keyboard was being depressed. While this often translates into volume, velocity numbers are also used to adjust timbre in ways that relate to changes in musical dynamic, like brightness.
The MIDI language identifies notes as 0-127, with middle C being 60. This comprises a range of around 10 octaves! Not all sound generators produce sound for all 128 note numbers, however; some simply stop producing notes outside their range, while others may transpose those notes back into the closest octave they are capable of producing.
The simple Note On message is missing one fundamental aspect of the musical note: how long it is held for. There is no duration part of the message, nor is there a separate duration message in MIDI. A note will simply be held until an appropriate Note Off message is received. The length of time between these two messages defines the duration of a note. If the Note Off message gets lost, a note might get “stuck”, and will continue to play beyond the intended duration. An All Notes Off message exists for such embarrassing moments, sometimes available from a special button on MIDI controllers usually called the Panic button. If all else fails, you may have to power cycle the stuck device; not so cool in a live gig.
The Note Off command can actually take either of two forms. The first is a true Note Off message, which (like a Note On) has a channel ID, note number, and Release Velocity (also called Note Off Velocity – see below). The second is another Note On message which shares the same channel ID and note number as the original Note On , but with a velocity value of zero.
Since Velocity measures how fast a key is depressed, a value of zero suggests the key was not depressed at all, so this acts as a Note Off. This can save on the number of messages that have to go down the limited-bandwidth MIDI line when you have a string of messages, all Note messages, going to the same channel. For this, a mode called running status lets you send the channel ID only once, then nothing but note values, with velocity above zero for on and equal to zero for off. No need to keep repeating Channel XX Note On and Channel XX Note Off.
In rare cases, manufacturers have built release velocity into keyboards, which measure the speed at which a key comes back up upon being let go. This can give a player control over the release of notes – how abruptly or gently the notes end. Release velocity sensing was more common in the early years of MIDI but has largely disappeared now; some sequencers don’t even record release velocity data, substituting a dummy value for every Note Off they receive. This is a shame, since release velocity data doesn’t slow anything down (you have a Velocity value for every Note Off anyway!), and the velocity sensors in most keyboards can sense release velocity just as easily as they read attack velocity. (The reason behind giving up on this data…? It takes a lot of adjusting the way you play to get used to thinking about how you release each key, so most players simply find it too frustrating!)
What Note On Velocity values from 1-127 actually do depends on how the patch was programmed – in MIDI it’s just numbers, and the user determines what influence they have on how the sound behaves. Example, you can program three sounds, from dull to medium-bright to very bright, to be triggered by the same note. “Soft” playing, creating values from, say, 1-50, might trigger the dull sample, 51-90 the medium-bright, 91-127 the very bright one. (This is called velocity mapping and is a common feature on samplers, especially the ones that are designed for drum sounds.)
It is important to note that MIDI Note On Velocity and MIDI Volume are not the same. Not only are they distinct MIDI messages (MIDI volume is a Continuous Controller message; these will be discussed further in TCRM 23) but they can accomplish very different things! Velocity, though reliant on exact implementation) can imply a change in both intensity (loudness) as well as timbre (exact tonal character). A change in volume, however, does not change timbre (at least not intentionally). The idea here is similar to the idea that adjusting the level of an instrument in a mix can be accomplished by having the performer play louder or softer versus adjusting the gain of either the mic preamp or the channel fader. For example: a French Horn recorded playing softly, but turned up in the mix does not sound the same as the French Horn recorded playing fortissimo mixed to the same level.
OK, that’s a good place to stop for now. Next time we’ll look further into Continuous Controller messages, System messages, MIDI Time Code and MIDI Machine Control.
John Shirley is a recording engineer, composer, programmer and producer. He’s also a Professor in the Sound Recording Technology program at the University of Massachusetts Lowell and chairman of their music department. You can check out some of his more wacky tunes on his Sonic Ninjutsu CD at http://www.cdbaby.com/cd/jshirley.
Supplemental Media Examples
The following three samples demonstrate what the sound of a MIDI double trigger can be. Using the virtual grand piano in Garage Band, first a single note is heard without any double trigger problems. TCRM22_1.wav
Now, notice the shift in the sound when a very fast double trigger occurs. TCRM22_2.wav
Finally, a more obvious double trigger. TCRM22_3.wav
Next, let’s hear how velocity and volume can differ. First, the same grand piano note is repeated with velocity incrementing by 10 steps each time, starting at 10 (10, 20, 30… 110, 120, then 127). There are 13 notes in total. Listen for how many variations there are in timbre versus just volume (there are several obvious leaps in timbre and 13 steps in volume). TCRM22_4.wav
Now, the 13 repeated notes are all set to a velocity of 10 and MIDI volume is used to create a similar crescendo to the last example. Here, there’s only one timbre and 13 changes in volume. Can you hear the difference between the two examples? TCRM22_5.wav
Let’s try that same experiment with a different virtual piano. This one is the Mini Grand by Advanced Instrument Research found in ProTools. First, the velocity change experiment. How many distinct changes in timbre do you hear in this one? TCRM22_6.wav
Then the Mini Grand with all Note On velocities set to 10 and the volume command used for the crescendo. TCRM22_7.wav
Perhaps a better example of the effects of double triggering can be heard in a melodic context. Here, the Little fugue by J.S. Bach on the AIR Mini Grand without double triggering: TCRM22_8.wav
Now with some very fast double triggering: TCRM22_9.wav
Then some medium length double triggering: TCRM22_10.wav
Finally, some longer double triggering. TCRM22_11.wav
Our last example is a final variant of the velocity vs volume experiments. Here the Bach is set so that all notes have a velocity of 127. TCRM22_12.wav
Then, the Bach is played with all notes set to a velocity of 10 and the volume is raised to match the level of the last example. Compare their tones…. TCRM22_13.wav
Special thanks to Mike Velcheck for the sweet pics of his Roland Axis and Casio DH-100 sax! You can see some of what Mike is up to with his 80s cover-band at www.radiostarband.net