Electronic Theatre Controls
Welcome to ETC's Online Community

Understanding the MSC Commands Eos Family Receives/Transmits

Table of Contents

Page Details

First published by:
David Hilton
on 06-15-2010
Last revision by:
Hans.Hinrichsen
on 04-27-2012
5 people found this article useful.

100% of people found this useful
Understanding the MSC Commands Eos Family Receives/Transmits This page is locked to prevent further edits

The type of MSC (Midi Show Control) commands Eos, Ion, and Element can take or send are very specific and preprogrammed into the software.  The literal information is transmitted via a special language called a "hexadecimal string." In particular, Midi Show Control is a subset of the MIDI standard known as "SysEx," or System Exclusive, which is typically shown in a hexadecimal format.  Most of the time users interface with a software program that can translate simple information, like "Go Cue#" and "Macro#", into this hexadecimal string.  On very rare occasions, someone may ask you "What is the hex string I'm supposed to send to the console?" This article attempts to break down the hexadecimal string the console looks for to trigger these commands. 

This is a basic hexadecimal string the console will read:

F0 7F 01 02 01 01 31 00 31 F7

This is what that same string looks like, but with the parts you can change to identify specific commands:

F0 7F [device_ID] 02 01 [command] [command_number] F7

So what do these mean?

 

Device_ID:

The console will respond to a range of IDs between 0-126, and ID 127 (which is an "All Call").  It will transmit to IDs between 0-126.  Since this is only one digit of hexadecimal (which is one set of two numbers), the numbers are not always straightforward.  An ID of "1" for example is "01."  An ID of "26" is "1A."  Hexadecimal is wacky, so just use this calculator to determine which number should go in this portion of the string:

http://ascii-table.com/calculator.php

The device_ID can be set on the Eos in Browser > Setup > Show Settings > Show Control.  This is applicable for both transmit and receive of MSC.

 

Command:

The command is established by the MSC standard, and Eos can trigger one of five commands:

01

Go Cue

02

Pause Cue

03

Resume Paused Cue

06

Set Submaster, Master Playback Faders, or Grandmaster

07

Fire Macro

 

Command Number:

Command_number refers to the number of the macro, fader, or cue you're firing.

Firing Macros

Macros have the simplest string to deal with.  You can only fire macros 1-127, and this is represented by one hexadecimal digit.  Use the calculator above to figure out the number.

Macro number example:

On Eos: Macro 2

In Hexadecimal: 02

 

On Eos: Macro 57

In Hexadecimal: 39

Setting Submasters

Three simple rules:

  1. You can only set submasters 1-127.
  2. You must use a "00" when separating the fader number from the set level.
  3. You must use a "00" after the level.

Remember, this is all in hexadecimal, so use the calculator above to figure out what the number should be for both the fader and the level.

Set submaster examples:

On Eos: Submaster 3 @ 50%

In Hexadecimal: 03 00 32 00

 

On Eos: Submaster 10 @ 75%

In Hexadecimal: 0A 00 4B 00

Setting Master Playback Faders and Grandmaster

The master playback fader "up" is represented by the number 128, and the master playback fader "down" is represented by the number 129.  The grandmaster is represented by the number 510.  Since MSC is 7-bit hexadecimal, any number above 127 cannot be expressed as true hexadecimal in the string. For this reason, master playback faders and grandmaster must be represented in another way.

Four simple rules:     

  1. Master playback fader "up" is represented in the string as "00 01."
  2. Master playback fader "down" is represented in the string as "01 01."
  3. Grandmaster is represented in the string as "7E 03."
  4. You do NOT need to use the "00" separator between the master playback faders/grandmaster and the set level.
  5. You DO need to use "00" after the level for the master playback fader or grandmaster. See the examples below.

Set Master Playback Faders and Grandmaster examples:

On Eos: Master Playback Up Fader @ 75%

In Hexadecimal: 00 01 4B 00

 

On Eos: Master Playback Down Fader @ 50%

In Hexadecimal: 01 01 32 00

 

On Eos: Grandmaster @ 75%

In Hexadecimal: 7E 03 4B 00

Go, Pause, and Resume Cue:

In terms of cues, Eos can potentially deal with all the available cues, so this gets a bit tricky since hexadecimal doesn't deal with decimals.  The numbering scheme then is not hexadecimal.

Three simple rules:

  1. Place a "3" in front of every digit of the number.
  2. Place a "2E" wherever there is a decimal.
  3.  Place a "00" when separating a cue number from a cue list.

This can be represented by:

On Eos: Cue xy/ab.c

In Hexadecimal: 3a 3b 2E 3c 00 3x 3y

Cue number examples:

On Eos: Cue 1/54

In Hexadecimal: 35 34 00 31

 

On Eos: Cue 4/101

In Hexadecimal: 31 30 31 00 34

 

On Eos: Cue 10/55.6

In Hexadecimal: 35 35 2E 36 00 31 30 



* The intention of this article is to distill the information down to only relevant numbers in the command string as it refers to Eos, Ion, and Element.  This article only scratches the surface for explaining all of the elements of an MSC command.  For more detailed information about MSC in general, refer to the article http://web.tiscalinet.it/giordy/midi-tech/showctl.htm.

Recent Comments

By: RainyMesa Posted on 03-28-2012 11:41 PM

It might be worth it to mention the cue decimals are the same as the ascii representation of the digets.

By: Ed Doering Posted on 04-04-2013 9:45 AM

Very helpful article! I recently developed an Arduino-based MIDI-to-MSC converter for the ETC ION and could not have completed the project without the level of detail provided by this article. These MSC implementation details should be included in the main ETC documentation, I believe.

Regarding the SET command, perhaps the data format simply boils down to the following: two-byte integer for control number followed by two-byte integer for control value, integers written with low-order byte first, and all bytes adhering to MIDI data-byte format (most-significant bit (MSB) = 0) as required for the contents of any MIDI SysEx message. If this is true, then the section dealing with the SET command could be simplified and made less mysterious. Here's how these basic rules apply to the examples at the end of the article (d=decimal, h=hexadecimal, b=binary):

SET SubMaster 7 @ 72%:

control 7d => 0007h => 07 00 (low-order byte first)

value 72d => 0048h => 48 00

The four-byte sequence is therefore 07 00 48 00 (this is the same sequence as the blue and green values in the fourth example above)

SET MasterPlaybackUp (128) @ 25%:

control 128d => 0080h => 0000000010000000b => 0_0000001b 0_0000000b (repackage as two 7-bit values, append MSB=0) => 01h 00h

 => 00 01 (low-order byte first)

value = 25d => 0019h => 19 00

The four-byte sequence is therefore 00 01 19 00 (matches fifth example above)

SET MasterPlaybackDown (129) @ 25%:

control 129d => 0081h => 0000000010000001b => 0_0000001b 0_0000001b => 01h 01h => 01 01 (low-order byte first)

value = 25d => 0019h => 19 00

The four-byte sequence is therefore 01 01 19 00 (matches sixth example above)

SET Grandmaster (510) @ 60%:

control 510d => 01FEh => 0000000111111110b (binary) => 0_0000011b 0_1111110b => 03h 7Eh => 7E 03 (low-order byte first)

value 60d => 003Ch => 3C 00

The four-byte sequence is therefore 7E 03 3C 00 (matches seventh example above)

It is important to again emphasize at this point that the ION only responds to SET commands for controls 1-129 and 510, and the control value must be in the range 0 to 100.

Powered by Community Server (Commercial Edition), by Telligent Systems