Skip to content

Super Matrix Mixer Control Protocol

Background

Features to Control

Commands

Action

Format

Unit

Module

Feature

Enumerator

Value

Basic Examples

Range Examples

Return Value

Get Operations

Change Operations

Polling for Changes

Background

Each control is represented by a number in a flat list from 1-10,000. The value of a control is a 16-bit value between 0-65535. The interpretation of that 16-bit controller value is specific to each control and each control knows how to interpret it. For example, a value of 40,000 might represent a gain of -20.7 dB in a gain module, a frequency of 1034 Hz in an EQ, and a release time of 517 ms in a compressor.

In contrast, the new system will refer to parameters in “human readable” terms, e.g. the feature name and input/output number of a matrix gain. Similarly, the value will be expressed in natural units matching the way they are shown in Composer, e.g. dB for gains. Floating point will be used. For backward compatibility, the existing 16-bit value system will also be supported.

Features to Control

The following matrix features can be controlled using the remote control protocol:

  1. Crosspoint Gain

  2. Crosspoint Connect status

  3. Crosspoint Delay

  4. Input Mute

  5. Input Gain

  6. Input Solo

  7. Input Pan

  8. Output Mute

  9. Output Gain

  10. Output Pre/Post

Commands

All commands take the following general format:

CMV \[\] \.\.\.\ [\]

The first part of the command is always “CMV”, which stands for “Control Module Value”. The other parameters will now be explained in detail.

Action

The second argument is the action to take. It can be Set, Get, Modify, Toggle, or Reset. This chooses whether to read the current value or change the value in a variety of ways. As you might guess, “Get” reads and “Set” writes. The “Modify” option allows changing the value relative to the current setting using a positive or negative offset. The “Toggle” value toggles a boolean (button) parameter from on to off or vice versa. The “Reset” option resets a parameter to its default, i.e. what it would be in a fresh module placed in Composer.

Note that not all actions are appropriate for all feature types. For example, “Toggle” is not applicable to continuous parameters such as gains. In these cases, the command does nothing but does not return an error.

“Modify” may be used with boolean parameters, e.g. mutes and grid connect buttons. In this case, any positive modifier will turn the parameter on, any negative modifier will turn the parameter off, and a 0 modifier will do nothing.

Format

The optional \ field allows the user to specify the format of the \. If no option is specified, it uses the native format for that particular control, i.e. dB for gains, 0/1 for Booleans, milliseconds for delay, and percentage for pans. Other options are ‘P’ or ‘%’ for percentage 0-100% and ‘L’ for the legacy 0-65535 range. The format also applies to the returned data.

Unit

The \ field allows the user to specify the unit in the current site. If set to 0, the unit currently being addressed is assumed. Otherwise, it is the enumerator shown in Composer.

Module

The \ field allows the user to specify the module number shown in Composer. For the Super Matrix, the module number is always 1.

Feature

The \ may be any of the following for the matrix mixer:

  1. CPGain Crosspoint Gain

  2. CPConnect Crosspoint Connect status

  3. CPDelay Crosspoint Delay

  4. IMute Input Mute

  5. IGain Input Gain

  6. ISolo Input Solo

  7. IPan Input Pan

  8. OMute Output Mute

  9. OGain Output Gain

  10. OPre Output Pre/Post

Enumerator

The \ specifies which crosspoint, input, output, etc. to control. Matrix crosspoints, will be identified with an “IxOy” syntax, e.g. “I3O4” refers to input #3 output #4. For parameters that refer only to an input or output and not a crosspoint, specify just the “I” or “O” part, e.g. “I3” or “O1”. All values are 1-based so they match what the user sees in Composer.

The \ may also be specified as a contiguous range or arbitrary set of values. If this format is used, the enumerator should be enclosed in {curly brackets}. For a range, a colon is used to separate the beginning and ends of the range. For example “{I1O1:I3O4}” specifies a 3x4 rectangle of values with upper left of Input #1 Output #1 and lower right at Input #3 Output #4.

Sets of values are specified using comma-delimited lists. For example “{I1O1,I3O3,I16O12}” specifies 3 different crosspoints at input 1/output 1, input 3/output 3, and input 16/output 12.

Sets, ranges, and individual values may be combined, so complex groups may be set in a single command, e.g. “{I1O1:I3O4, I8O8:I9O9, I10O10}”. It is legal to include the {curly brackets} even if only a single value is specified. So the brackets may always be included if desired. Spaces between individual comma-separated values in a set may be used for clarity.

Value

The \ may be in 1 of 3 different formats as mentioned in the discussion of the \ field. For percent and native mode, values may be floating-point of any precision. Legacy 16-bit mode uses integers between 0-65535. In native mode, all gains are expressed in dB. Boolean parameters should be either 0 or 1. Delay values are in fractional milliseconds. In percentage mode, a percent sign may or may not be included. In dB mode, anything -72.0 dB of under will be interpreted as fully off or muted. The word “Off” may also be used. Muted values will always read back as -72.0 dB. Values larger than the accepted range will be clamped to their minimum or maximum values.

If multiple enumerators are given, all specified parameters will be set to the same \. Only one \ may be provided in each command.

An optional equals sign may be placed in front of the value, e.g. “CMV Set 0.1.CPGain.I3O6=4.1”. Doing so makes the commands and responses identical.

Basic Examples

CMV Set 0.1.CPGain.I3O6 4.1 – Set the crosspoint gain for input #3 going to output #6 to 4.1 dB.

CMV Set 0.1.CPConnect.I13O76 1 – Turns on the crosspoint for input #13 going to output #76.

CMV Toggle 0.1.OMute.O2 1 – Toggles the output mute for output #2.

CMV SetP 0.1.IGain.I12 100 – Sets the input gain to maximum (100%) for input #12.

CMV Modify 0.1.CPDelay.I1O1 -3.7 – Decrements the crosspoint delay for input #1 going to output #1 by 3.7 milliseconds.

CMV Get 0.1.CPConnect.I13O76 – Returns 0 or 1 based on the crosspoint status for input #13 going to output #76.

CMV GetL 0.1.CPVol.I3O4 – Returns a value between 0-65535 for the crosspoint gain for input #3 going to output #4.

CMV Get% 0.1.OPre.O4 – Returns 0 or 100% based on the output pre/post state of output #4.

Range Examples

CMV Set 0.1.CPGain.{I3O1:I3O20} 4.1 – Set the crosspoint gain for input #3 going to outputs #6 through 20 to 4.1 dB.

CMV Set 0.1.CPConnect.{I1O1:I3O20} 1 – Turn on the crosspoint connect for inputs #1 through 3 going to outputs #1 through 20.

CMV Toggle 0.1.CPConnect.{I5O5:I5O13} – Toggle the crosspoint connect for input #5 going to outputs #5 through 13.

CMV Modify 0.1.InGain.{I3:I17} 3 – Increase the input gain for inputs 3 through 17 by 3 dB.

CMV Get 0.1.OutGain.{O1:O5} – Returns the output gain in dB for outputs 1 through 5.

CMV Reset 0.1.OutGain.{O5:O31} – Set the output gain to the default of 0.0 dB for outputs 5 through 31.

Return Value

Get Operations

For commands that get a value, the value will be returned in the format the user specifies in \. No units will be included, e.g. a gain will be returned as “-4.50” not “-4.50 dB”. Assuming native mode, for gains, 2 decimal places of precision will be given. For milliseconds, 3 decimal places will be given. For Booleans, a 0 or 1 will be returned. For pans, a percentage value with 2 decimal places will be returned.

In percentage mode, a value between 0 and 100 with 3 decimal places will be returned, e.g. “13.347%.” A percent sign will be included.

In legacy 16-bit mode, a value between 0 and 65535 will be returned with no decimal places and no units.

For percentage and 16-bit mode, the scaling of all parameters is linear within. For gains, it is linear in dB, i.e. 50% would be -30 dB for a gain that ranges from -72 dB to +12 dB. For delays, 100% or 65535 is the maximum delay time supported by the current configuration.

In general, percentage and legacy 16-bit mode are discouraged because they require the control system to know the range and scaling of the parameters.

The exact format of the return is dependent on if quiet mode is engaged or not. In quiet mode, the value will simply be returned. In verbose mode, the control being set is included in the same format as a parameter is specified followed by an equals sign, then the actual value:

\.\.\.\=\

The parameter is formatted nicely so it is in a consistent case without any leading digits.

Change Operations

For commands that change a value (set, modify, toggle, reset), in quiet mode, an “ACK” or “NAK \” will be returned depending on if the command was successfully interpreted and executed. Errors include things such as unsupported options, unrecognized features, channel number out of range, or illegal values. When “NAK” is returned, the reason for the failure will be given. Reasons may be any one of the following: Action, Format, Unit, Module, Feature, Enumerator, Value, System, Other. The first 7 are self-explanatory, referring to the format of the CMV command. “System” refers to a system error, e.g. a unit is not responding. “Other” refers to an unknown issue.

In verbose, commands that change a value will respond with the changed parameter followed an equal sign and then the new value in the specified format. If multiple values are changed by a control, i.e. a range of gains, the new value for each will be returned on a separate line. Note this may generate very large volumes of traffic! It is advisable to use the quiet mode option when changing more than a handful of values to avoid this.

For values, in native mode, specifying a value outside of the defined range of the parameter is not considered an error. The value will be clipped to the minimum or maximum value supported. This is done because control systems may not understand the exact ranges of parameters. In percentage or 16-bit mode, values outside of 0-100 or 0-65535 are considered errors.

Reasons may be any one of the following: Action, Format, Unit, Module, Feature, Enumerator, Value, Configuration, System, Other. The first 7 are self-explanatory, referring to the format of the CMV command. “Configuration” means the specified feature is not supported in the current site file configuration, i.e. that feature was disabled in Composer.

Polling for Changes

A command is available to determine if anything has changed in the matrix mixer. This allows requesting a single value rather than many individual parameters. This command is:

GSYSC \.3060.-1,0

If \ is 0, the unit currently being addressed is assumed. Otherwise, it is the enumerator shown in Composer.

The command will return an integer value that increments each time something in the Super Matrix is changed by any mechanism (remote control, Composer, preset recall, etc.). Control systems can check if the value is different from the value last obtained to see if changes have been made. If the value has changed, it can then read back all matrix parameters of interest.