"

6 MIDI Extras (Advanced)

Excerpts from http://www.midi.org/aboutmidi/intromidi.pdf

Advanced MIDI Messages

Control Change Messages

There’s a separate category of MIDI messages called Control Change, or “CC,” messages. Control Change messages cover a wide range of behaviors that can be controlled via MIDI.

Control Change messages are numbered from 0-127, like so many things in MIDI. Some instruments allow you to easily send any Control Change message to another device.

Each sound-producing MIDI device contains an engine of some sort for producing its sounds. This engine has a collection of settings, or “parameters,” that control its behavior. These parameters, and their values, allow the device to produce a range of different sounds. A sound, often called a “patch,” is really nothing more than one set of values for the engine’s parameters. The parameters can be changed/set via Control Change Messages.

Many sound/patch parameters correspond to a Control Change number. This allows a MIDI controller to set the parameters remotely. A properly constructed Control Change message has two elements:

  • First, the desired parameter’s Control Change number is transmitted to the receiving device to let it know the parameter to be set.
  • Second, the desired value for the parameter is transmitted

For example:

  • You send a CC #7 message—CC #7 is the Volume Control Change message—to tell the receiving unit you want to adjust its loudness.
  • Next, you send a value that sets the unit’s loudness as desired.

A Control Change message can act as an:

  • override —that sets the parameter to the transmitted value.
  • offset —that adjusts the parameter up or down by the value’s amount.

MSB and LSB

“MSB” and “LSB” stand for “Most Significant Byte” and “Least Significant Byte,” respectively. MSB Control Change messages typically act as coarse controls, while LSB messages generally allow fine adjustments.

A number of the Control Change messages have both MSB and LSB versions. MIDI devices that contain sounds/patches typically respond to both Bank Select MSB and LSB Control Change messages. Beyond that, MIDI devices may respond only to Control Change MSB messages, or to both MSB and LSB—you can check a device’s documentation for details.

Bank Selects

As we noted earlier, Program Changes allow you to select sounds within the current sound bank. Many instruments, however, have more than 128 sounds, and therefore offer multiple sound banks. Bank Select Control Change messages, or simply “Bank Selects,” allow you to choose different banks within the receiving MIDI device.

In fact, a full Program Change message includes the Bank Select MSB and LSB values that choose the desired sound’s bank, and then the Program Change value for the sound itself within the bank. The message therefore has five elements, sent in the following order:

  1. CC #0 —the Bank Select MSB Control Change message
  2. the MSB value — for the sound bank you want
  3. CC #32 — the Bank Select LSB Control Change message
  4. the LSB value — for the sound bank you want
  5. the Program Change number — for the desired sound within the now-selected bank.

Other Common Control Change Messages

Some of the other most commonly used messages are:

  • CC #1 Modulation —Modulation can add vibrato or other changes to a sound. Modulation messages are usually produced by pushing a pitch bend/modulation lever or modulation wheel forward.
  • CC #7 Volume —This message can control the overall level of the receiving device’s sound.
  • CC # 64 Sustain —This message instructs the receiving unit’s sound that a sustain pedal is being pressed, or not, causing notes to hold, or not.
  • CC #74 Brightness —Brightness adjusts a sound’s filter cutoff, allowing you to create filter “sweeps” in the sound.

Undefined CC Numbers

Some of the 128 Control Change numbers aren’t assigned to MIDI device behaviors. These “undefined” Control Change numbers can be used by MIDI device manufacturers for unique purposes within their own products.

System Exclusive Messages

While MIDI is usually about standardized messages that every MIDI device can understand, MIDI can also be used for communicating things specific to particular devices, such as:

  • the device’s global settings
  • the contents of a device’s memory
  • messages that can remotely operate its controls

These types of data and more can be transmitted and received as “System Exclusive,” or “SysEx,” MIDI data. At the beginning of each SysEx message is information that only the intended receiving device can understand. It’s manufacturer-specific, product-specific, and even individual-device specific, since a SysEx message always contains a SysEx ID number that tags the data as being for a particular device—this is important in situations where there are more than one of the same type of device.

Bulk Dumps

You may be able to back up all of a device’s settings by performing a SysEx “bulk dump” to an external storage device, such as a computer’s hard drive. The charm of a bulk dump is that the storage device doesn’t need to have any idea what the data does or means—it simply directs the data back to its originating device for re-loading.