by Jay Williams
Synths and sound cards are set to send and receive data on one of three standard groups of MIDI channels. The choice of a group determines the amount of data that is shared by the instruments in a network.
Basic MIDI Format allows only MIDI channels 13 through 16 to respond to MIDI commands. Extended MIDI Format allows MIDI channels 1 through 10 to respond to MIDI commands. General MIDI Format allows all 16 channels to respond to MIDI commands.
How MIDI Works -- MIDI data does not constitute sound. Rather, it is the software equivalent of switches and sliders. It conveys information such as: which notes to play, when to play them, and their durations..
It can change many parameters on a synth or a sound processor. There are mixers and recorders that can also be operated by MIDI commands.
In order to play music through a MIDI system, a lot of data must be transmitted over a short time. Although a parallel port is the obvious solution, a high-speed serial port is used because it reduces the number of wires in the transmission cables and minimizes radio frequency interference, both important factors when considering the rigors of live performance.
MIDI data is sent at 31.25 kilobaud, that is, 31,250 bits per second. Each data byte begins with a start bit and ends with a stop bit. These added bits make each byte into a ten-bit unit. This translates into a speed of 3125 bytes per second.
Since transmission is serial, a chord is really not a chord, but an arpeggio that is executed so quickly as to produce the illusion of notes being played simultaneously. In the edit mode of some sequencers you can step through the notes of a chord and observe the order in which they are played.
If you enter the notes from the computer keyboard they will be played in the order they were typed. If you modify a note's properties it will appear last in the sequence.
If you play the chord on your synth's keyboard the notes will be played according to the time that each key sent a "note On" message. Many sequencers can resolve timing to 1/192 of a quarter-note. You will notice from the start-times of the notes in the chords you play that you seldom, if ever, play all the notes simultaneously.
MIDI DATA STRUCTURE -- A MIDI message always begins with a "status" byte. A status byte defines actions that affect either the system as a whole, or a specific MIDI channel. If a status byte specifies a parameter that requires numerical definition it is followed by one or two "data bytes."
The value of the most significant bit differentiates a status byte from a data byte, a one for "status" and a zero for "data." Therefore, each data byte can have a value from 0 to 127 and a status byte, 128 to 255.
When a note is played a status byte and two data bytes are transmitted both at its beginning and at its end. The beginning status byte contains a "note on" message and the ending status byte, a "note off" message.
In addition to telling the note to either "turn on," or "turn off," It designates the channel on which the note occurs.
Note-on and note-off messages require two data bytes. The first byte defines the pitch and the second, the "velocity." The note-on message defines the "attack velocity" (the equivalent of the speed of downward motion of a key), and the note-off, the "release velocity" (the upward motion.)
The sequencer increases the efficiency of playback by invoking "running status" for consecutive occurrences of a channel message. A new status byte is sent when the type of message changes.
For example, if you hold a key down and move the pitch-bend wheel back and forth a few times, each increment introduced by the wheel records one status- and two data bytes. When the music is played back the program ignores all those consecutive identical status bytes and sends just the pairs of data bytes.
When a different channel message occurs such as the release of the key, action of another key, or any other message than "pitch-bend," a new status byte is sent to the instrument.
There are three broad categories of MIDI messages: channel voice, channel mode and system messages. All such messages can be entered into a sequence at any time. This means that changing from one voice to another and adjustments to tonal characteristics can occur automatically. you will employ channel voice messages most often.
CHANNEL VOICE MESSAGES -- There are seven channel-voice messages: note-on, note-off, channel pressure, (usually called "aftertouch"), key pressure (called "key aftertouch"), program change, controller messages, and pitch-bend.
The note-on and note-off messages Their each comprise one status byte and two data bytes. The status byte indicates that a key is being either depressed or released and on what channel this is happening. The two data bytes convey the pitch and the velocity, respectively. The note-on message specifies attack velocity and the note-off, release velocity.
The pitches are numbered from 0 to 127, encompassing just over ten and one half octaves. Pitch #60 is middle C.
The Velocity ranges from 0 to 127. If the synth doesn't transmit velocity data, the program assigns a velocity of 64 to all notes the synth transmits.
Since a note with a velocity of 0 won't play, the sequencer won't let you assign it. It is employed, however, as part of the "panic button" routines along with the "all notes off" message. The purpose of these routines are to cure mishaps such as stuck notes or some system-wide error.
Velocity can affect volume, filtering, modulation and any other parameter a designer chooses. The effect can be either positive or negative in direction. Some synth's will respond to both the attack velocity and the release velocity of a key. This feature lets you tailor the way a sound ends. That factor is very important when creating an illusion of acoustical phenomena.
Don't confuse velocity with the "volume controller." While velocity can affect the volume of an individual note the volume controller, (number 7), affects the volume for the whole channel. Controller messages can be placed anywhere in a sequence, so the volume controller can produce swells and fades while a note is sustained.
Aftertouch, Key-aftertouch -- Piano tuners beware! This is not some little physical bump in the key's downward motion. Rather, when the key has hit bottom, you can apply additional pressure whose travel distance is very shallow, but whose effect can be quite marked. It is often called "channel pressure."
The difference between aftertouch and "key" aftertouch is that aftertouch affects the whole channel and key aftertouch, only the note played by that key.
As with velocity, aftertouch and key aftertouch can affect any synthesizer parameter in either direction. the synthesizer can be programmed to "scale" these affects. For instance, an aftertouch or velocity change from 0 to 127 could change the pitch by a semitone or, say, 2 octaves.
CONTROLLERS -- Controller messages form a group of 128 software versions of switches and sliders that affect parameters on only the channel where they occur. Controllers 1 through 63 are labeled continuous", each having a range of 0 through 127. Controllers 64 through 95 are switches. For these, a number from 0 through 63 means "off", 64 through 127, "on".
Controllers 95 through 101 are termed "data entry." They are continuous controllers which, by themselves, have no effect, but when run in tandem, affect synth parameters.
Controllers 102 through 121 are left to the manufacturer's discretion. Controllers 122-127 are "channel mode" messages. A complete list of controllers and their assignments comprises Appendix B.
There are "low-resolution" and "high-resolution" controller messages. A low-resolution controller message can have a value from 0-127. It consists of a status byte and one data byte.
A high-resolution message employs two controllers, one representing the "most significant bit," (msb,) and the other, the "least significant bit," (lsb.) The synth combines these two messages into one whose message having a status byte and two data bytes, thus defining a value that can range from 0-16,383.Within
the group of controllers, 0-63 a high-resolution message uses controllers 0-31 for the "msb" and controllers 32-63 as the "lsb."
For example, the "foot pedal controller," controller 4, is a high-resolution device. So, for the finest resolution a number from 0 to 127 is assigned to controller 4 and another, to controller 38. If you assign a number for the lsb controller for a function such as volume (controller 7), which doesn't respond to the lsb, that information that you place on controller 39 is ignored.
Although treated as a separate category, the "pitch-bend" wheel functions as a high-resolution controller. Its message consists of one status byte and two data bytes and thus, covers a range of 16.383. When at rest in its Center position, the pitch-bend wheel has no influence and is therefore, designated by a 0.
Its top extreme is +8191 and its bottom, -8192. On most synths this range can be programmed to cover a shift as small as two half-steps to two octaves.
Channel Mode Messages -- These commands determine the synth's responses to channel-specific information and the number of notes and voices the synth will play at once. They are: All Notes Off, Local On, Local Off, Omni On, Omni Off, Poly On/Mono Off, and Mono On/Poly Off.
The "All Notes Off" message turns all notes off on all channels. You rarely use it, but if you know the command for it you will avoid the rising anxiety produced by a note that won't quit.
Local Mode -- If your synth has its own keyboard you will normally have Local Mode turned on. In this setting the keys play the synth and any others that are connected to its MIDI-out port.
When Local Mode is off the synth's keyboard is disconnected from the synth. Keyboard data is still present on the MIDI-out port, so it can play some other instrument. Meanwhile, the synth to which it is normally dedicated can be played by another keyboard connected to its MIDI-in port.
Omni -- When Omni is on, the synth responds to all incoming MIDI data regardless of its channel assignment. It plays it on the channel that is set to "Receive."
With omni off, All of the synth's channels can receive data provided the synth has a "polytimbral" mode. With Omni off the data affects only the channel to which it is assigned.
Poly and Mono -- If Poly is on, more than one note will play at once. When Mono is on the synth plays only one note at a time.
The omni, mono, and poly modes are combined in four mode messages as follows:
1. Omni on/Poly. The synth responds polyphonically to all incoming MIDI data regardless of channel designations. The data is fed to the synth on the channel set to Receive.
2. Omni off/Poly. If the synth is polytimbral it will respond polyphonically to data according to its channel assignment. In other words, all 16 channels are open and the synth will respond according to the channel designations in the data.
3. "Omni on/Mono" The synth responds to all incoming data. It ignores channel designations and sends the data to the channel set to Receive. Since Mono is on, it plays only one note at a time.
4. "Omni Off/Mono" This mode will be useful only on polytimbral synths. Each channel responds monophonically, but if you hold down the keys you play, the synth assigns each consecutive note to a consecutive channel. this mode can produce some amazing effects, especially if each channel is assigned a different voice and a different audio output on a mixer.
System Messages -- These messages occur throughout the whole MIDI system and are therefore, not channel specific. There are three types of these messages: system-real-time, system-common, and system-exclusive.
System-real-time messages synchronize events as the music plays. They include the MIDI clock, and "active sensing.
MIDI defines a quarter note as 24 clock pulses. "Active sensing" is a test signal continuously emitted by a synth in the form of pulses every 300 milliseconds. If misfortune befalls an instrument so that it stops sending this string of pulses all other instruments in a network capable of responding to active sensing will initiate an "all notes off" message. This is handy during a performance where cables may be accidentally unplugged, a switch turned, or a fuse blown.
"System-common" messages include "start", "stop" and "continue" messages. They instruct a sequencer "to play or not to play" the music or, to "continue" playing from a designated point.
Other system-common messages include: "tune request" which instructs all instruments to agree on a common tuning pitch; "system-reset" which tells all instruments to return to their respective default settings; "song select" which tells a sequencer to load a number-designated composition and all system-oriented data pertaining to it; and "song position pointer" which defines a point from 0 to 16,383 sixteenth notes from which you can continue to record or play.
"System-Exclusive" (sys-ex) messages contain information specific to a particular synthesizer or processor. They are used to alter parameters of a patch such as the timbre, curve of the envelope, filtering, vibrato and reverberation.
Many of them have controller message equivalents. The difference in application is that a controller message affects what's happening on a specific channel whereas a sys-ex message produces its effect throughout the whole system.
If the patches on your synth or processor are not programmable, these messages will be ignored. They are not limited to a specific number of data bytes, but can transmit a "dump" containing the data for all of a synth's patches. They are terminated by an EOX (end of exclusive) message.
Since several methods of sound generation are in use, the sys-ex data specific to one instrument will have no effect on another synth unless both are made by the same manufacturer.
This lack of standardization simply indicates that the electronic music field is in a state of youthful flux similar to that of keyboard technology of the Sixteenth century. This issue may be resolved as more data that was contained only in firmware becomes available in computer software.
PATCH LIBRARIAN -- The "Patch Librarian" branch of the sequencer is used when you want to examine or manipulate the data that constitutes the instrument's patches. It also contains a routine for analyzing all types of MIDI messages for the purpose of troubleshooting. These are stored in a buffer so they can be retrieved and examined at one's leisure.
Caution! Be prudent with your experiments. There is an "erase" command which can affect one patch or a bank full of patches. If you know that the data for your synth's patches can be retrieved from your computer, it is instructive to erase a patch and discover how much work it takes to create a voice purely from scratch.
The patch librarian supports a large number of synthesizers and processors. It also provides "generic" files for storing and manipulating data belonging to programmable units which you want to add to the list.
The sequencer manual may tell you that data including that produced by the motion of controls on your instrument's panel can be examined and manipulated. This is true, only if your synth dumps such data through its MIDI-out port.
Return To Making Music With Your Computer
Return to top of page