This is a universal real time system exclusive message. It was introduced with the General MIDI 2 standard to standardize the control over non-channel specific, system-wide controls, replacing non-registered parameter number messages, especially on devices where there may be more than one instances of an object with the same parameters and there needs to be a way to identify the path or slot of the object, the parameters of this must change.
The MIDI global parameter control messages essentially carries two pieces of information: a path to the object (a slot path), the parameters of which need to change and pairs of parameter identifications and values for these parameters. The slot path, the parameters, and the values are all of variable length. The slot path is carried in pairs of path values, most significant byte first. The parameter identifications may be a single or more bytes, also most significant byte first. The values may be of single or more bytes, least significant byte first.
The format of the MIDI global parameter control message is as follows.
0xF0 0x7F 0xid 0x04 0x05 0xsw 0xpw 0xvw SP PP VV PP VV … 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). 0x04 is sub-ID 1 of the message and, in this case, it shows that this is a device control message. 0x05 is the sub-ID 2 of the message and, in this case, shows that this message the global parameter control message. 0xsw is the length of the slot path, in number of two byte pairs. 0xpw is the length of the parameter identifications, in number of bytes. 0xvw is the length of the parameter values, in number of bytes. SP is the variable length byte array slot path. It has the format 0xsm 0xsl 0xsm 0xsl …, where 0xsm and 0xsl are most significant and least significant byte pairs. PP is a byte array identifying a parameter. VV is a byte array identifying a value for this parameter. There is no limit to the number of PP VV pairs that can be sent. 0xF7 is the end of the system exclusive message.
Messages in which 0xsw is 0x01 and the most significant byte of the slot path SP is also 0x01 are messages reserved for General MIDI 2.
It is recognized that not all controls contained within this message can be real-time, even though this is a real-time universal system exclusive message. Changes that cannot be handled in real time, should be sent at a time when they will not cause an audible effect, such as the beginning of music pieces or during quiet sections.
Example MIDI global parameter control message
The following is an example MIDI global parameter control message.
0xF0 0x7F 0x7F 0x04 0x05 0x01 0x01 0x01 0x01 0x01 0x00 0x04 0xF7
0xF0 0x7F 0x7F shows that this is a universal real time system exclusive message sent to all devices. 0x04 shows that this is a device control message. 0x05 shows that this is the global parameter control message. 0x01 is the length of the slot path (the path consists of 1 byte). 0x01 is the length of the parameter identifications (1 byte per identification). 0x01 shows that the length of the values is also 1 byte. 0x01 0x01 is the slot path 0x0101 (most significant byte first) and shows that this is the reverb effect. 0x00 is the reverb parameter to be controlled, in this case, reverb type. 0x04 is the value for the reverb type, in this case, large hall. 0xF7 is the end of the message. This message tells the device that the reverb unit should use the large hall reverb.
Recommended practice for the MIDI global parameter control message
In the MIDI recommended practice, the slot path to the reverb unit of the device is 0x0101. The slot path to the chorus effect unit is 0x0102. Both reverb parameter messages and chorus parameter messages are not to be treated as real time messages, but should be sent at the beginning of the song or during quiet parts.
For the reverb:
- Parameter identification 0x00 is the reverb type. Possible corresponding values are 0x00 ("small room", reverb length of about 5 milliseconds), 0x01 ("medium room", about 10 ms), 0x02 ("large room"), 0x03 ("medium hall"), 0x04 ("large hall"), 0x08 ("plate reverb"). There are no recommendations for the actual implementation algorithm and its acoustic properties, but only general guidance for the reverb length (see also below). 0x04 is the recommended default.
- Parameter identification 0x01 is the reverb time (the time the original signal decays by -60 dB). The value is to be interpreted as VV = ln(reverb time in seconds) / 0.025 + 40. The following are recommended defaults for the different types.
|Type||Reverb time (seconds)||Value|
|0||1.1||0x2B (44 decimal)|
|1||1.3||0x32 (50 decimal)|
|2||1.5||0x38 (56 decimal)|
|3||1.8||0x40 (64 decimal)|
|4||1.8||0x40 (64 decimal)|
|8||1.3||0x32 (50 decimal)|
For the chorus:
- Parameter identification 0x00 is the chorus type. The following are possible values and corresponding defaults. The default value is 0x02.
|Value||Name||Feedback||Modulation rate||Modulation depth||Reverb sent|
|0x00||Chorus 1||0 (0%)||3 (0.4 Hz)||5 (1.9 ms)||0 (0%)|
|0x01||Chorus 2||5 (4%)||9 (1.1 Hz)||19 (6.3 ms)||0 (0%)|
|0x02||Chorus 3||8 (6%)||3 (0.4 Hz)||19 (6.3 ms)||0 (0%)|
|0x03||Chorus 4||16 (12%)||9 (1.1 Hz)||16 (5.3 ms)||0 (0%)|
|0x04||FB Chorus||64 (49%)||2 (0.2 Hz)||24 (7.8 ms)||0 (0%)|
|0x05||Flanger||112 (86%)||1 (0.1 Hz)||5 (1.9 ms)||0 (0%)|
- Parameter identification 0x01 is the chorus modulation rate. The rate in Hz is set to the V * 0.122, where V is the value.
- Parameter identification 0x02 is the chorus modulation depth. The depth in milliseconds is set to (V + 1) / 3.2, where V is the value.
- Parameter identification 0x03 is the chorus feedback. The feedback in percent is set to V * 0.763, where V is the value.
- Parameter identification 0x04 is the reverb send level for the chorus. The level in percent is set to V * 0.787, where V is the value.