by Todd Albertson
By the time you finish reading this piece, I may need an unlisted phone number . There is no way I can cover this all in one article, so I am going to have to use at least two issues, possibly three. We are finally going to review the different types of MIDI data which can be communicated down the line. Unfortunately, the air gets rather thin at times when dealing with this subject. Remember though, that just about anything which can be sent down a MIDI cable can be recorded by a sequencer, so ALL of this stuff can be used to advantage when composing music, or producing intricate work. As long as you have a sequencer with a powerful editor, you can access most any of this data, and alter it to suit your own needs.
MIDI Events can be grouped together as shown below:
System Exclusive: Let's begin with System Exclusive Codes. In spite of the reputation of "SysEx," this is really one the easiest of all concepts in MIDI. Implementing it can be rough, but understanding it as a concept should pose no problem. Here's the idea - the manufacturers couldn't possibly come up with a way to transmit individual voices from one instrument TYPE to another, without placing too many limitations on product development. System Exclusive Code is the poor substitute. It was absolutely the right decision, but unless you are either blessed with multiple synths of the same type, or HEAVILY into the actual code itself, you will probably never use this feature. For example, let's say you had a nice analog brass sound in some synth and you wished to be able to put that sound into another synth by a different manufacturer. It's simple, you can't. However, if you want to send your sound to your sister station, where they have a synth JUST LIKE YOURS, you could save the system exclusive code for that patch (or even ALL your patches) to a sequencer, and then send the sequence disk to your sister station. There, they could "load" the sequence, run it, and presto, the sound appears in their synth, exactly where you wanted it to be. In fact, with a modem, and identical computer types, you wouldn't even need to mail a disk... you would just send it down the phone line!
If you are crazy enough to actually start taking the System Exclusive Codes apart (like me), you can manipulate individual parameters within each instrument, but since every instrument has its own unique, exclusive (hence the name) code, you have to learn the language of EACH INSTRUMENT in your studio! Unless you are a MUSIC producer, this is probably not worth your time, but I'll tell you how I use it. One day, when I was first learning about System Exclusive codes, I used the sliders on a Yamaha KX-88 to access the SysEx codes controlling the Interval Parameters on a Korg EX 8000. Since I didn't know what the heck I was doing, I accidentally set the range control beyond the published capabilities of the Korg. I was startled to discover that the instrument could reach notes not represented on the front panel! "Ah-ha," I thought, and proceeded to gain SysEx access to every instrument in our facility. As it turned out, quite a few instruments have capabilities not accessible from the front panel. This is undoubtedly due to the fact that hardware is MUCH more expensive than the chips which are generally the heart of these instruments. The manufacturers probably just figured that hitting those excruciatingly high notes in the EX 8000 was unnecessary for the average musician, so they just didn't feel it worth the additional retail cost to tack on features of limited value. I ended up using the unpublished capabilities of the Korg quite a bit in the original Clean Sheets library to create harmonics for unique layered sounds. For most though, System Exclusive is merely a way to catalog sounds, and that is usually handled by the software automatically.
System Common: System Common Events are likewise nothing terribly difficult. Simply put, these events control all units simultaneously in a given system. Unlike SysEx, these messages call the particular function in any MIDI instrument that supports it, no matter the manufacturer. To the best of my knowledge, only four of the seven possible System Common Events have been established at this time. As progress is made, more SC Events will be defined I'm sure. Currently, we have Song Position Pointer, Song Select, Tune Request, and "F7h" (which is hexadecimal for "End of System Exclusive Code").
Song Position Pointer is probably the single most critical item for anyone wishing to slave a sequencer to a tape deck using SMPTE. If your SMPTE-MIDI convertor box has SPP and your sequencer does as well, you may start the tape anywhere in your work as you mix, overdub, etc. because the sequencer will "join up" with the tape deck perfectly. If you do not have this feature built in to your equipment, you will have to start the tape at the BEGINNING of your work EACH TIME you stop. As you can see, if your equipment doesn't support SPP, you can waste a lot of time! SPP is really just a number that is kept track of and sent (in binary code, of course) when you start your machine "rolling." It lets the other machines know where you are in the song or production, so they know where to pick up. If they do not get this number or if they don't know how to interpret it, they must either start wherever they happen to be, or else start from the beginning of the song. If you ever buy any sequencer, MAKE SURE it supports Song Position Pointer.
Song Select is a message sent to let the system know what song you are currently working with. This can be handy on stage, but only if you are working with more than one piece of hardware at a time that must be linked for different songs. For instance, it could happen that you would have three songs in your drum machine, and the same three songs in your sequencer. These would then execute together to create the final completely orchestrated output. Song Select means that when you move from one song to the next on your master unit, the slave would follow suit. More often than not however, I have found Song Select to be a pain. For instance, when I am working with a piece, I may have four different versions loaded into memory simultaneously. I then edit, and combine various aspects of each piece into the final product. Imagine my frustration when the drum box keeps switching to other songs, as I move from song version to song version selecting and editing what will be in my final draft... ACK! I have devised all sorts of devious ways to circumvent this, but in my opinion, it is more trouble than it's worth. If you are a producer and buying equipment, my advice is: Don't panic if you learn this feature is not supported in a product you are considering - I would just count my blessings.
Tune Requests: Most older analog synths will go out of tune a while after you turn them on. This is because the equipment is warming up, and as it does so, the resistances and reactances of the various components change with the temperature. On the old Prophet V, the early Oberheims, and several other synths, there was a button you could push to trigger a series of self-tests and adjustments within the synth that would bring the instrument to near perfect Tempered Scale tuning. It was decided that a MIDI call should be implemented to trigger this "tuning up" system wide. In other words, ALL synths connected would immediately execute their self-testing procedures and realign their oscillators accordingly. Nowadays, this call is virtually useless, as nearly all synths are digitally controlled. This digital control precludes the instrument from ever being out of tune in the first place (the worth of which is hotly debated among musicians).
That's it for this month. I'm over my limit already. If I write anymore, Jerry will hang me out to dry! Next month, I'll cover System Real Time messages, and then on to Channel Events. Thanks for reading.