Channel Voice Messages
Table XIII
Channel Voice Messages are the bulk of information transmitted between MIDI instruments. They include all Note On, Note Off, program change, pitch-wheel change, aftertouch pressure and controller changes. These terms are defined below.
A single Note On message consists of 3 bytes, requiring 960 microseconds for transmission. When many notes are played at the same time, the multiple Note On messages may take several milliseconds to transmit. This can make it difficult for MIDI to respond to a large number of simultaneous events without some slight audible delay. This problem can be relieved to some degree by using the Running Status mode described within the "Running Status" paragraphs above and below .
Voice messages are not exclusively for use by keyboard instruments, and may be transmitted for a variety of musical purposes. For example, Note On messages generated with a conventional keyboard synthesizer may be llsed to trigger a percussion synthesizer or lighting controller.
Note Number Each note is assigned a numeric value, which is transmitted with any Note On/Off message. Middle C (C4) has a reference value of 60. This is the middle C of an 88 note piano-style keyboard though it need not be physically located in the center of a keyboard.
Velocity Interpretation of the Velocity byte is left up to the receiving instrument. Generally, the larger the numeric value of the message, the stronger the velocity-controlled effect. If velocity is applied to volume (output level) for instance, then higher Velocity values will generate louder notes. A value of 64 (40Hex) would correspond to a mezzo-forte note and should also be used by device without velocity sensitivity. Preferably, application of velocity to volume should be an exponential function. This is the suggested default action; note that an instrument may have multiple tables for mapping MIDI velocity to internal velocity response.
vvvvvvv = 64: if not velocity sensitive
vvvvvvv = 0: Note Off (with velocity of 64)
Note Off
MIDI provides two roughly equivalent means of turning off a note (voice). A note may be turned off either by sending a Note Off message for the same note number and channel, or by sending a Note On message for that note and channel with a velocity value of zero. The advantage to using "Note On at zero velocity" is that it can avoid sending additional status bytes when Running Status is employed.
Due to this efflciency, sending Note On messages with velocity values of zero is the most commonly used method. However, some keyboard instruments implement release velocity where a Note Off code (80H) accompanied by a "velocity off" byte is used. A receiver must be capable of recognizing either method of turning off a note, and should treat them identically.
The three methods of using Note On (9nH) or Note Off (8nH) are as follows:
1)
Control Change
The Control Change message is used for modifying tones with a controller other than a keyboard key. It is not for setting synthesizer parameters such as VCF cut-off, envelope decay, etc.
There are 121 defined MIDI controllers (numbered 0 through 120). As shown below, controller numbers 32 to 63 are used to define an LSB byte for corresponding controllers 0 through 31. Controller classifications are as follows:
Table XIV
A numeric value (control number) is assigned to the controllers of the transmitting instrument. A receiver may use the message associated with a controller number to perform any operation or achieve any desired effect. Further, a single control number may be used to change a number of parameters. Control numbers are classified by various categories. Each controller number corresponds to one byte of data.
Control Numbers 0 through 31 are for controllers that obtain information from pedals, levers, wheels, etc.
Control Numbers 32 through 63 are reserved for optional use as the LSB (Least Significant Byte) when higher resolution is required and correspond to 0 through 31 respectively. For example, Control Number 7 (Volume) can represent 128 steps or increments of some controller's position. If Control Number 39, the corresponding LSB number to Control Number 7, is also used, 14-bit resolution is obtained. This provides for resolution of 16384 steps instead of 128.
If 128 steps of resolution is sufficient the second byte (LSB) of the data value can be omitted. If both the MSB and LSB are sent initially, a subsequent fine adjustment only requires the sending of the LSB. The MSB does not have to be retransmitted. If a subsequent major adjustment is necessary the MSB must be transmitted again. When an MSB is received, the receiver should set its concept of the LSB to zero.
All transmitters should send a value of 00 to represent minimum and 127 (7FH) to represent maximum. For continuous controllers without a center detented position, it is recommended that the minimum effect position correspond to 00, and the maximum effect position correspond to 127 (7FH).
All Control Numbers 64 and above have single-byte values only, with no corresponding LSB. Of these, 64 through 67 have been defined for switched functions (hold pedal, etc.) while 91 through 95 are for controlling the depth of certain external audio effects.
Controller numbers 16-19 and 80-83 are defined as General Purpose Controllers. They may be used by a manufacturer for any added functions able to send or receive some sort of control information needed for a specific product. They do not have any intrinsic functions assigned to them. General Purpose Controllers 16-19 are two byte controllers (with controller numbers 48-51 for an optional LSB).
General Purpose Controllers 80-83 are single byte controllers. As an example, an instrument with a special, user definable joystick or lever assignable to any internal parameter could send and receive General Purpose Controller numbers for sequencing.
Control numbers 64 through 69 are assigned to functions normally associated with switches (i.e. sustain or soft pedals). However these controllers can be used to send any continuous value. The reverse can also be true for a continuous controller such as Modulation Wheel. While this controller is most often used as a variable control, an on/off modulation switch can also be used. This would be accomplished by sending the Modulation Controller number (01) and a data byte of either 0 (off) or 127 (on).
If a receiver is expecting switch information it should recognize 0-63 (00H-3FH) as "OFF" and 64-127 (40H-7FH) as "ON". This is because a receiver has no way of knowing whether the message information is from a switch or a continuous controller. It is very important to always use an existing control number. The control numbers already adopted for use are listed in Table V.
If a receiving instrument is in Mode 4 (Omni Off, Mono) and is thus able to respond to more than one MIDI channel, it is possible to use a Global Controller to affect all voices regardless of MIDI channel. This is accomplished by sending any controller intended to affect all voices over the MIDI channel one below the basic channel of the receiver. For example, if a receiving synthesizer in Mode 4 is responding to channels 6 through 12, its basic channel is 6. Any controllers received on channel 5 would be Global Controllers and would affect all voices. If the Basic Channel is 1, then the Global Channel wraps to become 16.
Virtually all controllers are defined as 0 being no effect and 127 being maximum effect. There are three defined controllers that are notably different:
BALANCE: a Balance Controller has been adopted as continuous controller number 8 (08H) with value 00 = full volume for the left or lower half, 64 (40H) = equal balance, and 127 (7FH) = full volume for the right or upper half; this controller determines the volume balance between two different sound sources;
PAN: a Pan Controller has been adopted as continuous controller number 10 (0AH) with value 00 = hard left,64 (40H) = center, and 127 (7FH) = hard right; this controller determines where a single sound source will be located in a stereo field.
EXPRESSION: an Expression Controller has been adopted as continuous controller number 11 (0BH); Expression is a form of volume accent above the programmed or main volume.
All controllers are specifically defined by agreement of the MIDI Manufacturers Association (MMA) and the Japan MIDI Standards Committee (JMSC). Manufacturers can request through the MMA or JMSC that logical controllers be assigned to physical ones as needed. A controller allocation table should be provided in the user's operation manual of all products.
Registered and Non-Registered Parameter Numbers
Registered and Non-Registered Parameter Numbers are used to represent sound or performance parameters. As noted below, Registered Parameters Numbers are agreed upon by the MMA and JMSC. Non-Registered Parameter Numbers may be assigned as needed by individual manufacturers. The basic procedure for altering a parameter value is to first send the Registered or Non-Registered Parameter Number corresponding to the parameter to be modified, followed by the Data Entry, Data Increment, or Data Decrement value to be applied to the parameter.
There are several rules and suggestions as to the use of these parameter numbers and controllers:
Pitch Bend Sensitivity Pitch Bend Sensitivity is defined as Registered Parameter Number 00 00. The MSB of Data Entry represents the sensitivity in semitones and the LSB of Data Entry represents the sensitivity in cents. For example, a value of MSB=01, LSB=00 means +/- one semitone (a total range of two semitones).
Master Tuning Registered Parameter numbers 01 and 02 are used for Master Tuning control. They are implemented as follows:
Table XV
Program Change
This message is used to transmit the program or "patch" number when changing sounds on a MIDI instrument. The message does not include any information about the sound parameters of the selected tone. As the various parameters that constitute a program are very different from one MIDI instrument to another it is much more efficient to address a sound simply by its internal number.
Program Change messages are most often sent when physically selecting a new sound on an instrument. However, if the transmitting instrument does not produce its own sound, a button ur any other physical controller can be used for transmitting program change messages to slave devices.
It is not often that the exact same tones are in the transmitting and receiving instruments, so some care must be taken when assigning tones to a given tone number. The ability to reassign programs to a given program change number should be part of an instrument's capabilities. Some instruments number their internal patches in octal numerics. This should have no effect on the numbers used for patch change. Numbering should begih with 00H and increment sequentially. For example, octal 11 would be 00H, 12 would be 01H, etc.
It may not always be desirable for a tone change in a transmitting instrument to cause a program change in a receiving instrument. Some means of disabling the sending or reception of program change should be provided. Program change messages do not necessarily need to change tones. In some instruments, such as a drum machine, the message may be used to switch to a different rhythmic pattern. In MIDI controlled effects devices, the program change message may be used to select a different preset effect.
Pitch Bend Change
This function is a special purpose pitch change controller, and messages are always sent with 14 bit resolution (2 bytes). In contrast to other MIDI functions, which may send either the LSB or MSB, the Pitch Bender message is always transmitted with both data bytes. This takes into account human hearing which is particularly sensitive to pitch changes. The Pitch Bend Change message consists of 3 bytes when the leading status byte is also transmitted. The maximum negative swing is achieved with data byte values of 00, 00. The center (no effect) position is achieved with data byte values of 00, 64 (00H, 40H). The maximum positive swing is achieved with data byte values of 127,127 (7FH, 7FH).
Sensitivity of Pitch Bend Change is selected in the receiver. It can also be set by the receiver or transmitted via Registered Parameter number 00 00.
Aftertouch
Two types of Aftertouch messages are available: one that affects an entire MIDI channel and one that affects each individual note played. They are differentiated by their status byte. In either case, the Aftertouch value is determined by horizontally moving the key (front-to-rear or left-to-right), or by pressing down on the key after it "bottoms out". Devices such as wind controllers can send Aftertouch from increasing breath pressure after the initial attack. The type of tone modification created by the Aftertouch is determined by the receiver. Aftertouch may be assigned to affect volume, timbre, vibrato, etc.
If a "Channel Pressure" (Dn, 0vvvvvvv) message is sent, then the Aftertouch will affect all notes playing in that channel.
If a "Polyphonic Key Pressure" (An, 0kkkkkkk, 0vvvvvvv) message is sent discrete Aftertouch is applied to each note (0kkkkkkk) individually.
[Index | Main Paragraph ]