Goffredo Haus, editor
Fall 1995
© IEEE Computer Society Press.


Channel Mode Messages

Table XVI

A Mode message is sent with the same Status Byte as a Control Change message. The second byte of the message will be between 121 (79H) and 127 (7FH) to signify a mode message. Mode messages determine how an instrument will receive all subsequent voice messages. This includes whether the receiver will play notes monophonically or polyphonically and whether it will respond only to data sent on one specific voice channel or all of them.

Mode Messages as All Notes Off Messages

Messages 123 thru 127 also function as All Notes Off messages. They will turn off all voices controlled by the assigned Basic Channel. These messages should not be sent periodically, but only for a specific purpose. In no case should they be used in lieu of Note Off commands to turn off notes which have been previously turned on. Any All Notes Off command (123-127) may be ignored by a receiver with no possibility of notes staying on, since any Note On command must have a corresponding specific Note Off command.

The Basic Channel of an Instrument

Mode messages are recognized only when sent on the Basic Channel to which the receiver is assigned, regardless of the current mode. The Basic Channel is set in the transmitter or receiver either by permanent "hard wiring", by panel controls, or by System Exclusive messages, and cannot be changed by any MIDI mode or voice message. Mode messages can only be transmitted and received on an instrument's Basic Channel.

Receiver's Mode (Omni On/Off & Poly/Mono)

The receiver can be set to any of four modes which determine how it will recognize voice messages. The four modes are set with two mode messages (Omni On/Off, and Poly/Mono):

Mode1: Omni On, Poly
Mode2: Omni On, Mono
Mode3: Omni Off, Poly
Mode 4: Omni Off, Mono
Mono and Poly determine how the receiver's voices will be assigned when more than one note is received simultaneously. In Mono mode, each voice in the receiver will respond monophonically to note messages on a particular MIDI channel. The would be like having several monophonic synthesizers in a single box. In Poly mode, voices in the receiver will respond to note messages polyphonically.
These four modes may be changed by panel controls on the receiver. Care must be taken, however, since it is possible that the receiver may be "disabled" by setting it to a mode where it will not recognize or correctly respond to data received from a transmitter. As the receiver has no way of knowing the mode of the transmitter, there is no guarantee that a receiver will interpret messages as expected if it has been manually set to a different mode.
The recommended start up condition is Omni Mode On. This allows two instruments to be connected and played immediately without concern for selecting the instruments' basic channel. The receiver will respond to voice messages on all MIDI channels. With Omni off, a receiver would only respond to the voice messages on the Basic Channel to which it is set.

Figure 2 - Voice Message Paths with Poly/Mono and Omni On/Off Mode Selections

When the receiver is in Poly mode and more than one note is received on the recognized channel(s), those notes will be played simultaneously to the limit of the receiver's number of voices. The recognizable channel(s) refers to all MIDI channels when Omni is On, or to only the receiver's Basic Channel when Omni is Off.
When the receiver is in Mono mode, notes are assigned differently depending on whether Omni mode is On or Off.

Mono Mode

Mono mode is particularly useful for receiving MIDI data from guitar controllers, but can be used with keyboards and other controller devices as well. It is useful for such purposes as independent pitch bending of individual notes, portamento at specific rates between two notes, or transposition effects.

Omni-Off/Mono

The third byte of a Mono Message specifies the number of channels in which Monophonic Voice messages are to be sent. If the letter M represents the number of acceptable MIDI channels, which may range from 1 to 16, and the letter N represents the basic channel number (1-16), then the channel(s) being used will be the current Basic Channel (N) thru N+M-1 up to a maximum of 16. M=0 is a special case directing the receiver to assign all its voices, one per channel, from the Basic Channel N through 16.
TRANSMITTER: When a transmitter set to Omni-Off/Mono mode, voice messages are sent on channels N through N+M-1. This means that each individual voice (or note) is sent on a single channel. The number of transmitted channels is limited to the number of voices in the transmitter.
Additional notes will be ignored. When transmitting from a 16 voice instrument whose basic channel number N is set higher than 1, N+M-1 will be greater than 16 and notes assigned to nonexistent channels above 16 should not be sent. If full 16 voice transmission is possible, the basic channel N should be set to 1. For example, a four-voice instrument set to a basic channel of 3 would transmit note messages on channels 3, 4, 5 and 6.
RECEIVER: In a receiver set to Omni-Off/Mono mode, the voice messages received in channels N through N+M-1 are assigned monophonically to its internal voices 1 through M. If N=1, and M=16 (maximum), then the messages are received on Channels 1 through 16. Should more than one Note On message be sent for a given channel, the receivers response is not specified. Only one note (or voice) can be assigned to a given MIDI channel in this mode. M=0 is a special case directing the receiver to assign its voices, one per channel, from the basic channel N through 16, until all available voices are used.

Omni-On/Mono

When a transmitter is set to Omni-On/Mono mode, voice messages for each voice are sent on channels N through N+M-1. If a receiver is set to Omni-On/Mono mode, then voice messages received from any voice channel will control a single voice monophonically. Regardless of the number of MIDI channels being received or the polyphony on any of them, the receiver will only play one note at a time.
TRANSMITTER: A transmitter may send a Mono message to put a receiver into Mono mode. However, since a receiver may not be capable of Mono mode, the transmitter may continue to send note messages polyphonically. Even if the transmitter and receiver are both playing monophonically, multiple Note On messages can be sent .
RECEIVER: When a Note On message is sent in the Omni-On/Mono mode, the receiver will play that note regardless of channel number. If the value of M is 2 or greater when receiving a Mono On message and Omni is on, M is ignored and the receiver will still be monophonic. When Omni is on, it is inappropriate to send a Mono message with M greater than 1.
If a particular channel mode is not available on a receiver, it may ignore the message, or it may switch to an alternate mode (usually mode 1, which is Omni On/Poly).

Modes not Implemented in a Recelver

A transmitter could possibly request a mode not implemented in a receiver. For example, a transmitter might request Omni-Off Mono with M=2, but the receiver has only Omni-On Mono or Omni-On Poly capability. In this situation the receiver could do one of two things:
1) It can ignore the request, and no notes will sound; or,
2) it can change to Omni-On Poly, and notes from both channels will play. The latter choice is recommended so that the receiver will respond to notes from the different channels.

Table XVII

There is no way for a transmitter to know if a receiver has responded correctly to a particular Mode message. By implementing the response outlined above, unexpected results will be minimized. If it possible for a receiver to ignore continuous controllers, it should do so in order that pitch bend or modulation intended for a single voice will not affect all the voices in the receiver.
A transmitter may send Omni On or Omni Off messages and Poly or Mono messages in any order. A receiver should set individual flags indicating Omni On/Off and Poly/Mono.
A receiver unable to accommodate a mode message such as Omni-Off Mono may switch to an alternate mode such as Omni-On Poly. If an Omni-Off message is then received, the receiver should not change to Omni-Off unless a Poly message is also received.
It is acceptable to repeat either of the Omni On/Off or Poly/Mono messages when changing modes. For example, if a transmitter sends Omni Off Poly and later sends Omni On Poly, the retransmission of the "Poly" message should cause no problem. If a receiver cannot accommodate an Omni-Off Mono mode change from a transmitter, it should switch to an alternate mode such as Omni-On Poly as outlined above.

Figure 3 - Receive Mode Messages

Table XVIII

All Notes Off

All Notes Off is a mode message which provides an efficient method of turning off all voices turned on via MIDI. While this message is useful for some applications, there is no equirement that a receiver recognize it. Since recognition of All Notes Off is not required of the receiver, all notes should first be turned off by transmitting individual Note Off messages prior to ending an All Notes Off.
In a MIDI keyboard instrument, notes turned on via the local keyboard should be 'differentiated from notes turned on via MIDI In.

Figure 4 - Keyboard and MIDI In notes

In an instrument structured as shown above, it is possible that the instrument may not differentiate between MIDI In and the local keyboard commands. If an All Notes Off is received via MIDI, then all notes will be turned off, including those being played on the instrument's own keyboard. This is not correct implementation of the All Notes Off message. All Notes Off should only turn off those notes that were turned on via MIDI. If an instrument cannot differentiate between its local keyboard and incoming MIDI messages, All Notes Off should be ignored.
Receivers should ignore an All Notes Off message while Omni is on (Modes 1 & 2). For example, if a receiver gets an All Notes Off from a sequencer that inserts such messages, whenever all keys are released on a track, and two tracks were recorded on such a sequencer (even on different MIDI channels), the All Notes Off message would cut off sustaining notes recorded on the other track. While MIDI devices should be able to receive All Notes Off messages, an All Notes Off message should be sent only when a "panic" condition occurs (i.e. hitting the Stop button on a sequencer). They should not be sent periodically as part of normal operation.
When the receiver is set to Omni-Off Poly mode (Mode 3), All Notes Off will cancel Note On messages on the basic channel only. When a receiver is set to Omni-Off Mono mode (Mode 4), All Notes Off should only cancel Note On messages on the channel over which the message was received.

Reset All Controllers

When a device receives the Reset All Controllers message (121), it should reset the condition of all its controllers (continuous and switch controllers, pitch bend, and pressures) to what it considers an ideal initial state (Mod wheel to 0, Pitch Bend to center, etc.). Reception follows the same rules as All Notes Off. Ignore if Omni is On.
Sequencers that wish to implement Reset All Controllers, but want to accommodate devices that do not implement this command, should send what they believe to be the initial state of all controllers first, followed by this message. Devices that respond to this message will end up in their preferred state, while those that do not will still be in the sequencer's chosen initialized state.

Local Control

Control Change 122, Local Control, is used to interrupt the internal control path between the keyboard and the sound-generating circuitry of a MIDI synthesizer. If 0 (Local Off ) is received the path is disconnected, keyboard data goes only to MIDI Out and the sound-generating circuitry is controlled only by incoming MIDI data. If a 7FH (Local On) is received, normal operation is restored. Local Control should be switchable from an instrument's front panel.
When a keyboard instrument is being used as a slave device via MIDI, it may be desirable to disconnect the instrument's keyboard from its internal synthesizer so that local performance cannot interfere with incoming data. This may also save scanning time and thus speed up response to MIDI information. Instruments should power-up in Local On mode. An instrument should continue to send MIDI information from its keyboard while in Local Off.


[Index | Main Paragraph ]