Super Matrix Mixer Control Protocol¶
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:
-
Crosspoint Gain
-
Crosspoint Connect status
-
Crosspoint Delay
-
Input Mute
-
Input Gain
-
Input Solo
-
Input Pan
-
Output Mute
-
Output Gain
-
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 \
Unit
The \
Module
The \
Feature
The \
-
CPGain Crosspoint Gain
-
CPConnect Crosspoint Connect status
-
CPDelay Crosspoint Delay
-
IMute Input Mute
-
IGain Input Gain
-
ISolo Input Solo
-
IPan Input Pan
-
OMute Output Mute
-
OGain Output Gain
-
OPre Output Pre/Post
Enumerator
The \
The \
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 \
If multiple enumerators are given, all specified parameters will be set to the same \
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 \
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 \
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 \
If \
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.