Hexadecimal and MIDI Show Control Formatting
When configuring other devices to send or receive MIDI Show Control, you may need to consider the hexadecimal data that is sent as a part of a MIDI Show Control command. Many software packages manage this formatting for you, but some instances require you to enter this manually. The following notes are intended as a quick reference for common use cases. For a more exhaustive reference on MIDI Show Control message formatting, please refer to the book referenced at the beginning of this guide – Show Networks & Control Systems by John Huntington.
Structure
A MIDI Show Control string can be written as a short hexadecimal message.
An example string would be:
- F0 7F 01 02 01 01 31 00 31 F7
There is a structure to these strings – this is what the same string looks like with the parts that can be modified identified in brackets:
F0 7F [device_ID] 02 [command format] [command] [command_data] F7
Note: For Eos Family products, the command format field is always 01, for Lighting – General.
The following commands discussed earlier in this document have the following command codes:
- Go - runs a cue = Command 01
- Stop - pauses a cue = Command 02
- Resume - resumes a paused cue = Command 03
- Set - controls a submaster, playback, or Grandmaster = Command 06
- Fire - runs a macro = Command 07
The other parts of the string are standardized. F0 7F and the ending F7 are parts of the standard MIDI System Exclusive message format. The 02 specifies the protocol is MIDI Show Control.
Go, Stop, Resume
The cue commands can target any available cue on the console. Hexadecimal doesn’t natively handle decimal numbers, so the numbers are sent in a different format (ASCII text encoding).
There are four simple rules for formatting:
- Specify the cue number first, and then the cue list
- Place a “3” in front of every digit of the number
- Place a “2E” wherever there is a decimal
- Place a “00” when separating a cue number from the cue list
Examples include:
- Eos - Cue 1/54
- MSC Formatted - 35 34 00 31
- Eos - Cue 4/101
- MSC Formatted - 31 30 31 00 34
- Eos - Cue 10/55.6
- MSC Formatted - 35 35 2E 36 00 31 30
- Eos - Cue 3/ (no cue number provided – play next cue in list 3)
- MSC Formatted - 00 33
- Eos- Cue 1 (no cue list provided – assumes cue list 1)
- MSC Formatted -31 00
For example, sending Device ID 3 a GO command for cue 5.4 in list 99 would be formatted as follows:
F0 7F 03 02 01 01 35 2E 34 00 39 39 7F
Setting Submasters, Playback Masters, or Grandmasters
Submasters from 1-127 are represented as values 01 to 7F
The master playback “up” fader (128) is represented as two hexadecimal numbers in a row - 00 01.
The master playback “down” fader (129) is represented as two hexadecimal numbers in a row – 01 01.
The grandmaster fader (510) is represented as two hexadecimal numbers in a row – 7E 03.
There are three simple rules for formatting:
- Level values are sent as 0-100 in decimal form, which would be sent as 00-64 in hexadecimal
- Submasters – send the fader number, followed by 00 (in hex), then the level value, and finally 00 (in hex). For example, sending submaster 1 to 100% would be sent as 01 00 64 00.
- Playback Masters and Grandmasters – send the fader number, followed by 00 (in hex), and then the level value. You do not need to end the command with 00. For example, setting the grandmaster to 75% would be sent as 7E 03 00 4B
For example, sending Device ID 3 a SET command for sub 4 to 0% would be formatted as follows:
F0 7F 03 02 01 06 04 00 00 00 7F
As a second example, sending Device ID 10 a SET command for the playback master “up” fader to 100% would be formatted as follows:
F0 7F 0A 02 01 06 00 01 00 64 7F
Firing Macros
Macros are relatively simple. Only macros 1-127 can be triggered, represented by one hexadecimal byte.
- Eos - Macro 12
- MSC Formatted - 0C
For example, sending Device ID 5 a FIRE command for macro 17 would be formatted as follows:
F0 7F 05 02 01 07 11 F7