MIDI Channel Modes and the Basic ChannelMIDI Devices - Physical vs. VirtualModern keyboards, synthesizers and sound modules are often capable of sending or receiving messages on several MIDI Channels at once. Thus, a single physical MIDI device may be structured as several independent 'virtual' devices, each being a receiver or transmitter of MIDI Channel Voice messages, and each having its own independent Channel Mode and Basic Channel. In the following discussion, the terms 'MIDI receiver' and 'MIDI transmitter' refer to a single 'virtual' device. The terms Basic Channel and Channel Mode apply to a single 'virtual' device. Not all MIDI devices implement all Channel Modes as described below. In the event that a particular mode is not implemented, a suitable alternate mode should be selected. Basic ChannelThe concept of the Basic Channel of a MIDI device is a little slippery, as it depends on the current Channel Mode the device. However, a useful definition might be be as follows:
The word 'normally' is used here because a MIDI receiver in Mode 4 may sound notes on channels other than the Basic Channel (if m>1). A more precise definition would be:
A MIDI device must only recognize a mode-change message which it receives on its Basic Channel. (note 1) The Basic Channel of a device may be permanently assigned, or configurable by the user, or configured by a System Exclusive message. It may not be changed by any Channel Mode message. MIDI Channel ModesA MIDI device may have up to 4 different modes. These are controlled by two switches:
When a MIDI Device is put into a Monophonic mode, it is given a parameter 'm', which is used in Mode 4 to define the number of MIDI Channels to be used. (note 3) Whilst a MIDI receiver is in a Mono Mode, if a 2nd note-on message is received before the note-off message for the previous note, for example 90 3C 40 90 3D 40 80 3C 40 80 3D 40 ----------- ~ ----------- ~ ----------- ~ -------------> time note-on(1) note-on(2) note-off(1) note-off(2) |<------------------------->| then the MIDI receiver must sound only one voice (for that MIDI Channel). Beyond this requirement, the precise response of the receiver is not specified. However, it is suggested that the frequency of the sound may be shifted from the 1st note to that of the 2nd, without restarting the envelope. Regardless of the Channel Mode, a note-off message must still be sent for each note-on message.
|
Omni | Poly/Mono | MIDI Receiver behavior | MIDI Transmitter behavior | |
---|---|---|---|---|
Mode 1 | On | Polyphonic | The receiver will respond to Channel Voice messages on any and all MIDI channels. Multiple notes will be played at once, if required. | The transmitter sends Channel Voice messages on one channel only. This is the Basic Channel of the transmitter. Multiple notes may be 'on' at any given time. |
Mode 2 | On | Monophonic | The receiver will respond to Channel Voice messages on any and all MIDI channels, playing only one note at a time (ie one note only across all MIDI channels). The Mono Mode parameter 'm' is ignored, and m=1 is assumed. | The transmitter sends Channel Voice messages on one channel only. This is the Basic Channel of the transmitter. The transmitter may continue to send notes in a polyphonic manner. |
Mode 3 | Off | Polyphonic | The receiver will respond to Channel Voice messages on one channel only. This is the Basic Channel of the receiver. Multiple notes will be sounded at once, if required by note-on messages. | The transmitter sends Channel Voice messages on one channel only. This is the Basic Channel of the transmitter. Multiple notes may be 'on' at any given time. |
Mode 4 | Off | Monophonic | The receiver will respond to only one voice per channel, on channels:
inclusive, where: Whilst in this mode, a Control Change message received on channel:
is a Global Control message, affecting all the receiving channels (note 4) | The transmitter sends Channel Voice messages on channels:
inclusive, where: Only one note may be 'on' for each channel at any given time. |
|
midi_messages.html Contents midi_channel_voice.html |