A MIDI event that carries the MIDI controller destination message tells a MIDI device what its response should be to MIDI controllers.
This is a universal real time system exclusive message. It was introduced with the General MIDI 2 standard to standardize responses to common MIDI controllers, such as the MIDI channel pressure message.
As described below, the controller destination message provides the MIDI device with a set of parameters and ranges. The ranges tell the device what the magnitude of its response should be for the specific parameter. For example, the message may tell a device that the change in pitch for the channel pressure controller should be one semitone. There could be more than one set of parameters and ranges and this message has variable length.
Types of MIDI controller destination messages
The message can take one of the two forms. The first is the following.
0xF0 0x7F 0xid 0x09 0xnn 0x0c 0xpp 0xrr 0xpp 0xrr … 0xF7
0xF0 tells the MIDI device that this is a system exclusive message. 0x7F shows that this is a real time universal system exclusive message. 0xid is the target device ID (if this byte is also 0x7F, the message would be sent to all devices). 0x09 is sub-ID 1 of the message and, in this case, it shows that this is the controller destination message. 0xnn is the sub-ID 2 of the message and can be either 0x01 or 0x02, showing that this message defines the response to the channel pressure controller or the polyphonic key pressure controller respectively (only channel pressure is required by General MIDI 2). 0x0c is the MIDI channel (from 0x00 to 0x0F, but the rhythm channel is not supposed to respond). The pairs 0xpp 0xrr are the parameter and range pairs. These are described below. 0xF7 signifies the end of the message.
The second form of the controller destination message is the following.
0xF0 0x7F 0xid 0x09 0x03 0xmm 0x0c 0xpp 0xrr 0xpp 0xrr … 0xF7
As above, 0xF0 0x7F 0xid tells the MIDI device that this is a universal real-time system exclusive message with a target device specified by 0xid. 0x09 shows that this is the controller destination message. 0x03 shows that this is a control change message. 0xmm defines the controller and can have values between 0x01 and 0x1F and between 0x40 and 0x5F (see MIDI Controller message). 0x0c is the MIDI channel. The pairs 0xpp 0xrr are the parameter and range pairs. 0xF7 is the end of the message.
Parameter and range pairs
The following controller parameters and ranges are recommended in the General MIDI 2 standard (for both message forms above).
|Parameter||Parameter description||Range||Range description||Default|
|0x00||Pitch control||0x28-0x58||-24 to +24 semitones||0x40|
|0x01||Filter cutoff control||0x00-0x7F||-9600 to +9450 cents||0x40|
|0x02||Amplitude control||0x00-0x7F||0 to (127/64)*100 percent||0x40|
|0x03||Low-frequency oscillation (LFO) pitch depth||0x00-0x7F||0 to 600 cents||0x00|
|0x04||LFO filter depth||0x00-0x7F||0 to 2400 cents||0x00|
|0x05||LFO amplitude depth||0x00-0x7F||0 to 100 percent||0x00|
An example controller destination message
The following is an example MIDI controller destination message.
0xF0 0x7F 0x7F 0x09 0x01 0x02 0x00 0x41 0x05 0x10 0xF7
0xF0 0x7F 0x7F shows that this is a universal real time system exclusive message sent to all devices. 0x09 shows that this is the controller destination message. 0x01 shows that this is the channel pressure controller. 0x02 is the MIDI channel. 0x00 is the pitch control destination. 0x41 is +1 semitone for the pitch control destination. 0x05 is the LFO amplitude depth control. 0x10 is the range sent to the LFO amplitude depth control (about 13 percent). 0xF7 is the end of the message.