PASHA
PASHA, the MediaMatrix Serial Handling Adapter, is a software application that provides external serial command and read-back of designer selected controls in a MediaMatrix View File. The hardware required for this is a standard PC serial port (usually RS-232). Multiple serial ports, or serial command streams, can be accommodated. RS-232, RS-422, and other cards and serial driver software modules, available from other manufacturers, can add both additional serial port features and increase communications reliability. The serial command protocol used by PASHA is human-readable ASCII, so it is possible to test and debug PASHA control of a specific MediaMatrix View File using just a Windows-based PC with a spare serial port - MediaMatrix hardware is not required. With a second serial port and a null-modem cable, a Windows terminal program can simulate the controlling machine.
It is important to note that in MediaMatrix 3.x the need for the PASHA.INI file has been eliminated - Control Grouping is the method used to export controls. You may find it necessary to import View Files created in earlier versions of MediaMatrix, and these may include a PASHA.INI file for external control via serial ports. In order to do this, use the "Tools | Import/Export | Import PASHA.INI..." command. Be aware that in earlier versions the Control IDs used were hexadecimal numbers, and were not case sensitive. In version 3.x the Control Group name used can be any 3 alphanumeric characters, and IS case sensitive. Therefore it is possible that a PASHA.INI file that was working in an earlier version may not work, or may have some controls that do not work, after being imported into MWare 3.x.
Software Architecture (Severely Abridged)
In MediaMatrix, there are two Windows applications that work together: PAVCON (Peavey Audio Virtual Console), which is the graphical user interface, and PADPU (Peavey Audio Digital Processing Unit), which contains the devices and controls and governs the DSP hardware. Serial control is accomplished with the addition of a third application, PASHA (Peavey Audio Serial Handling Adapter), which, through a Windows serial port, turns external serial commands into MediaMatrix commands. There is a client/server relationship between these applications, with PADPU being the server and PAVCON and PASHA being clients. PASHA translates serial commands into the same kind of commands that PAVCON uses to set and display the control values in PADPU. Only PAVCON has a user interface.
Configuring PASHA
Go to the Tools | Options | Remote Services page, and click on 'Add PASHA Port...' A dialog box will appear. Choose the correct serial port, baud rate, and data bits for your application. Only one PASHA service is allowed per serial port, but multiple serial ports can be opened at once. If the PASHA service fails to start, it is probably a conflict with the serial port. Either another program has already opened that serial port, or the serial port does not exist on the system.
User IDs and Control Groups
PASHA user IDs correspond to 3 character Control Group names in View Files. To specify a user ID for a control in MediaMatrix, open its Control Object Properties page and select the Group tab. Enable Control Grouping and give the control the desired 3 character Group Name. Any alphanumeric character may be used, and the protocol is case sensitive, so "aaa" is different from "AAA". Control Group names of other lengths are possible in MediaMatrix, but only those exactly 3 characters long can be used for serial control via PASHA.
Message Protocol
Messages are ASCII (text) strings. While they contain hexadecimal numbers, the Hex numbers are represented by ASCII (text). Do not send actual hex data, but an ASCII (text) string that represents the value to be sent.
Each message begins with a message-type character and ends (with the exception of the NAK message) with an end-of-message character '.'. Each message to PASHA results in a response message from PASHA. PASHA never sends a message except in response to an external message.
In general, the protocol supports Setting and Getting control values. User IDs are entered into Control Groups which identify a unique control or group of controls. They are specified for use with PASHA with 3 alphanumeric characters. Control values are specified with a 2 digit hexadecimal number, 00 through FF.
Controls are set to a position using the cSETVALUE 'S' command. You can determine the current setting of a control using the cGETVALUE 'G' command. The 256 values that a control can take on correspond to 256 equidistant positions of a control in a MediaMatrix view file. It is possible, and normal in some cases, for the value that a control actually takes on (and returns) to not match the value to which it was set. For instance, in the case of a switch-style control, any value sent between 00 and 7F will result in a return value of 00, and any value sent between 80 and FF will result in a return value of FF. This is because a switch can only be either ON or OFF. If it is ON, it will return a value of FF, while if it is OFF, it will return a value of 00. If commanding a Level with Trim device's Trim control, the dB range of the Trim control (set up by Trim Min. and Trim Max.) is simply divided into 256 possible values. Most devices' gain controls, however, are non-linear, and the math is not so simple. For those controls, tables are included below that map linear control values to dBs of gain, one for a gain control with range of -100dB to +12dB, another for a gain control with a range of -100dB to 0dB. Also included are tables that map control values to Router channel selections for various sized Routers.
For example, to set the channel 2 input gain specified in the demo view file PASHA32.PAV to fully counter clockwise, one first look up the UID specified in the Control Group for the control in question. In this case it is 2iG. Fully counter clockwise is 00 Hex. The cSETVALUE command is 'S' and the end-of-message character is '.'. Putting this all together gives a command string:
S2iG00.
Note that it is not required or desirable to put a carriage return after the end-of-message (EOM) character '.'. PASHA will accept the command when it receives the EOM character. Shortly thereafter it will return the value that the control has been set to:
V2iG00.
To check what a control is set to, you can use the cGETVALUE 'G' command. For example to check the setting of the channel 1 parametric EQ center frequency control, you send:
G1Cf.
Note that since you are requesting a control value, you do not send one. If the control was set to the mid point of its rotation you will get a response:
V1Cf80.
Remember it is possible, and normal in some cases, for the value that a control actually takes on (and returns) to not match the value to which it was set. For instance, in the case of a switch-style control, any value sent between 00 and 7F Hex will result in a return value of 00 Hex, and any value sent between 80 and FF Hex will result in a return value of FF Hex. For example you may have sent to the Channel 2 output mute:
S2oM3E.
However since the switch can only be on or off it will be set to off and return:
V2oM00.
If you send a command using a UID that is not in a Control Group in the view file, PASHA will respond with a cUNLISTEDUID 'U' and repeat back the Uid it does not find in the PASHA.INI file. For example if there was no Control Group hat in the view file, and you sent:
Shat48.
the response would be:
Uhat.
If you send a command using a valid UID (a 3 character Control Group name) in the view file, but one or more of the controls that Control Group references is not found in the view file, PASHA will respond with a cUNLISTEDCID 'C' and repeat back the UID you sent. For example if there was a UID ukc in the view file, and one or more of the controls to which it referred are "dead" or "orphaned", and you sent:
Sukc48.
the response would be:
Cukc.
A "dead" control will occur if the algorithm it is part of did not compile. This will happen if the algorithm is not properly wired. An "orphan" control will occur when the algorithm it was copied from has been deleted from the view file.
If you send an illegal message such as specifying a value as part of a get message, or scramble the order of message components, or there are certain other communications errors, PASHA may respond with a Negative Acknowledge mNAK '?' instead of the normal response. For example if you sent:
GHLP57.
PASHA will respond with:
?
Note this is the only message in the PASHA protocol, which does not end in an end of message character cEOM '.'.
No response will be sent if garbled data or illegal commands are received by PASHA. While PASHA will respond with a Negative Acknowledge mNAK '?' for certain communications errors, you can't be assured that it will always do so.
If there is a serial port error or communications timeout, or if there is a communications failure between PASHA and PADPU, you will get the Fail mFail 'X' message from PASHA as follows:
X.
If you send a valid message to PASHA, but PADPU is either not running, or a view file is not compiled and running, then PASHA will respond with a mNotReady message. For example if you sent:
SDeD48.
but the view file was not compiled, then you would receive back:
R.
C-LIKE MESSAGE DEFINITION
This section defines the message protocol using "C-like" declarations of constants and structures. The convention here is that words beginning with 'c', such as cSETVALUE and cGETVALUE, are character constants. Words beginning with 'f'', such as fUid and fVal, are message field structures. Words beginning with 'm', such as mSetValue and mGetValue, are message structures.
//---- Message constants
const char cSETVALUE = 'S'; // an fType value
const char cGETVALUE = 'G'; // an fType value
const char cVALUE = 'V'; // an fType value
const char cNOTREADY = 'R'; // an fType value
const char cUNLISTEDUID = 'U'; // an fType value
const char cUNLISTEDCID = 'C'; // an fType value
const char cFAIL = 'X'; // an fType value
const char cNAK = '?'; // an fType value
const char cEOM = '.'; // an fEom value
//---- Message fields
/* fType: Message Type. 1 character, denotes the message type. */
struct fType {
char data;
};
/* fUid: User ID. 3 ASCII characters, specifies one of the
User IDs entered as a Control Group name in the View File. */
struct fUid {
char data[3];
};
/* fVal: Control Value. 2 ASCII hexadecimal digits, specifies
a control value between 0 and 255. */
struct fVal {
char data[2];
};
/* fEom: End Of Message. 1 character, appears at the end
of every message, excepting mNak. */
struct fEom {
char data = cEOM;
};
//---- Messages
/* mNak: Negative Acknowledge. Response sent to client upon receipt of
unintelligible data. This could be due to a communications error or to
data out of order. An mNak is not necessarily sent for every byte of bad
data. */
struct mNak {
fType = cNAK;
};
/* mSetValue: Set Control Value. Request sent by a client
to set the value of a Control Group. */
struct mSetValue {
fType type = cSETVALUE;
fUid id;
fVal val;
fEom eom;
};
/* mGetValue: Get Control Value. Request sent by a client
requesting the value of a Control Group. */
struct mGetValue {
fType type = cGETVALUE;
fUid id;
fEom eom;
};
/* mValue: Control Value. Response sent to the client acknowledging
an mGetValue or mSetValue. Note that it is possible, and normal in some
cases, that the val field will not match the val that was sent in the
mSetValue. */
struct mValue {
fType type = cVALUE;
fUid id;
fVal val;
fEom eom;
};
/* mUnlistedUid: Unlisted User ID error. Response indicating
the fUid specified in the mSetValue or mGetValue does not match any Control
Group name in the currently running View File. */
struct mUnlistedUid {
fType type = cUNLISTEDUID;
fUid id;
fEom eom;
};
/* mUnlistedCID: Unlisted Control ID error. Response indicating
a control withing the Control Group referenced by the fUid specified in
the mSetValue or mGetValue was not found in the currently compiled View
File. Probably means that the Control is "dead" or discarded.
*/
struct mUnlistedCID {
fType type = cUNLISTEDCID;
fUid id;
fEom eom;
};
/* mNotReady: Not Ready. This means that there is no View
File currently compiled and running in MediaMatrix. */
struct mNotReady {
fType type = cNOTREADY;
fEom eom;
};
/* mFail: Something Has Failed. This is sent in response
to serial port errors, communication time-outs, and other internal errors
not covered directly. */
struct mFail {
fType type = cFAIL;
fEom eom;
};
MESSAGE STRUCTURES QUICK CHART
|
Message name |
Message fields |
Style | |||
|
Type |
Alphanumeric |
Hex Value |
End of |
||
|
Set Value |
S |
XXX |
XX |
. |
request |
|
Get Value |
G |
XXX |
|
. |
request |
|
Value |
V |
XXX |
XX |
. |
response |
|
Not Ready |
R |
|
|
. |
response |
|
Unlisted UID |
U |
XXX |
|
. |
response |
|
Unlisted CID |
C |
XXX |
|
. |
response |
|
Fail |
X |
|
|
. |
response |
|
Nak |
? |
|
|
|
response |
Real-time Concerns and Flow Control
In general, the serial control throughput into the MediaMatrix computer is dependent upon the number of Windows applications running, and the activity level of those applications. Any application which is actively animating a display on the screen will take time away from other applications, such as PASHA. MediaMatrix itself, if displaying any controls, requires a certain percentage of the processor power to keep those controls updated.
Serial data overruns at the MediaMatrix end can be prevented by having the external serial device wait for the response to each command it sends. If this is not possible, keep in mind that each PASHA service instance can store about 100 unacknowledged commands before overflowing its receive buffer.
Serial data overruns at the external serial device are usually not an issue since PASHA will never speak unless spoken to - the only way to elicit data from PASHA is to send a command.
Serial Control Experimentation
To experiment with PASHA control of MediaMatrix on a desktop PC, with no MediaMatrix hardware required. You'll need two free COM ports, a null-modem cable and a Windows terminal program such as Hyperterminal.
1) Open and Compile the demo view file PASHA32.PAV in the samples directory.
2) Start a PASHA remote service on one of the COM ports using Tools | Options | Remote Services, Add PASHA port...
3) Start the Windows terminal program on the other COM port, making sure to match the communication settings of PASHA.
4) Enable local echo in Hyperterminal so you see what you're typing.
5) To mute the input to channel 1, send:
S001FF.
The response should be:
V001FF.
and the mute button will light.
6) To read the channel 2 center frequency control, send:
G00B.
and the response should be:
V00B99.
with the last two characters depending on the control's position in the view file.
If you are experiencing difficulty, test your COM ports and cable by making sure that you can communicate between two copies of the Windows termainal program assigned to the two COM ports.
You can also enable PASHA debug printout in the Terminal Window. At the top level menu in Terminal Window, type "S" (for (S)ervices), then "H" (for (pas(H)a), then "D" (for (D)ebug). You should then get some printout concerning PASHA activity as it happens.
A Note About Reading Meter Values
It is possible to read MediaMatrix audio meter values with PASHA, but there is an important fact to be aware of when doing so - as an optimization to save CPU cycles, meters are only updated when their controls are being displayed in the user interface. This implies that you must either have meter child windows open on the screen, or one control from each of the meters of interest must be copied out to an open child window or the main View Window. It is preferable to copy out a non-changing control, such as the Meter Time Constant, rather than the meter control itself, to save the user interface the burden of continuously updating the display. If having these controls visible to the user is a problem, they may be rendered invisible by manipulating their Control Object Properties (turn off the following check boxes: Text, Block, Bitmap and Style). Once you make a Control Object invisible it may be very difficult to find again unless you also check Fix Size and give it some nominal size, such as 6 by 6.
A numeric display of the peak hold value is not provided in the meter devices even though the algorithm calculates it. To read a meter's peak hold indicator value, start by copying the numeric control object (the yellow box with the dB value in it). Paste the copy down someplace convenient, perhaps in the meter device. While the new copy is selected, press Alt-Enter to bring up the Control Object Properties window, and select the Id tab. Under Control Id | Control, you will notice the digit entered is 2. If you change this to a 5 and click OK, the new numeric display will now read the peak hold indicator's value. It can then have a Control Group assigned in the usual way.
Known Bugs
A bogus serial data character may be emitted whenever a serial port is closed on the PC.
Serial Control Value to Device Control Value Tables
Some selected mappings of serial control values to device control values follow. You can also generate a table for any other control using a command in the MediaMatrix Terminal window in the following manner - after compiling a View File, twiddle the control of interest, switch to the Terminal window and press the 'v' on your keyboard. This will invoke the (V)alueTable command, which will print the table to the screen. You can also capture the table to a text file or printer by invoking the appropriate Terminal window modes.
Control value to dB's of gain table: -100dB to +12.0dB type control
|
0x00: -100dB |
0x01: -99.3dB |
0x02: -98.6dB |
0x03: -97.8dB |
|
0x04: -97.1dB |
0x05: -96.4dB |
0x06: -95.7dB |
0x07: -95.0dB |
|
0x08: -94.2dB |
0x09: -93.5dB |
0x0a: -92.8dB |
0x0b: -92.1dB |
|
0x0c: -91.3dB |
0x0d: -90.6dB |
0x0e: -89.9dB |
0x0f: -89.2dB |
|
0x10: -88.5dB |
0x11: -87.7dB |
0x12: -87.0dB |
0x13: -86.3dB |
|
0x14: -85.6dB |
0x15: -84.8dB |
0x16: -84.1dB |
0x17: -83.4dB |
|
0x18: -82.7dB |
0x19: -82.0dB |
0x1a: -81.2dB |
0x1b: -80.5dB |
|
0x1c: -79.8dB |
0x1d: -79.1dB |
0x1e: -78.4dB |
0x1f: -77.6dB |
|
0x20: -76.9dB |
0x21: -76.2dB |
0x22: -75.5dB |
0x23: -74.7dB |
|
0x24: -74.0dB |
0x25: -73.3dB |
0x26: -72.6dB |
0x27: -71.9dB |
|
0x28: -71.1dB |
0x29: -70.4dB |
0x2a: -69.7dB |
0x2b: -69.0dB |
|
0x2c: -68.2dB |
0x2d: -67.5dB |
0x2e: -66.8dB |
0x2f: -66.1dB |
|
0x30: -65.4dB |
0x31: -64.6dB |
0x32: -63.9dB |
0x33: -63.2dB |
|
0x34: -62.5dB |
0x35: -61.8dB |
0x36: -61.0dB |
0x37: -60.3dB |
|
0x38: -59.6dB |
0x39: -58.9dB |
0x3a: -58.1dB |
0x3b: -57.4dB |
|
0x3c: -56.7dB |
0x3d: -56.0dB |
0x3e: -55.3dB |
0x3f: -54.5dB |
|
0x40: -53.8dB |
0x41: -53.1dB |
0x42: -52.4dB |
0x43: -51.7dB |
|
0x44: -50.9dB |
0x45: -50.2dB |
0x46: -49.5dB |
0x47: -48.8dB |
|
0x48: -48.0dB |
0x49: -47.3dB |
0x4a: -46.6dB |
0x4b: -45.9dB |
|
0x4c: -45.2dB |
0x4d: -44.4dB |
0x4e: -43.7dB |
0x4f: -43.0dB |
|
0x50: -42.3dB |
0x51: -41.6dB |
0x52: -40.8dB |
0x53: -40.1dB |
|
0x54: -39.4dB |
0x55: -38.7dB |
0x56: -37.9dB |
0x57: -37.2dB |
|
0x58: -36.5dB |
0x59: -35.8dB |
0x5a: -35.1dB |
0x5b: -34.3dB |
|
0x5c: -33.6dB |
0x5d: -32.9dB |
0x5e: -32.2dB |
0x5f: -31.5dB |
|
0x60: -30.7dB |
0x61: -30.0dB |
0x62: -29.3dB |
0x63: -28.6dB |
|
0x64: -27.8dB |
0x65: -27.1dB |
0x66: -26.4dB |
0x67: -25.7dB |
|
0x68: -25.0dB |
0x69: -24.2dB |
0x6a: -23.5dB |
0x6b: -22.8dB |
|
0x6c: -22.1dB |
0x6d: -21.3dB |
0x6e: -20.6dB |
0x6f: -19.9dB |
|
0x70: -19.2dB |
0x71: -18.5dB |
0x72: -17.7dB |
0x73: -17.0dB |
|
0x74: -16.3dB |
0x75: -15.6dB |
0x76: -14.9dB |
0x77: -14.1dB |
|
0x78: -13.4dB |
0x79: -12.7dB |
0x7a: -12.0dB |
0x7b: -11.2dB |
|
0x7c: -10.5dB |
0x7d: -9.80dB |
0x7e: -9.08dB |
0x7f: -8.36dB |
|
0x80: -7.92dB |
0x81: -7.77dB |
0x82: -7.61dB |
0x83: -7.45dB |
|
0x84: -7.29dB |
0x85: -7.14dB |
0x86: -6.98dB |
0x87: -6.82dB |
|
0x88: -6.67dB |
0x89: -6.51dB |
0x8a: -6.35dB |
0x8b: -6.20dB |
|
0x8c: -6.04dB |
0x8d: -5.88dB |
0x8e: -5.73dB |
0x8f: -5.57dB |
|
0x90: -5.41dB |
0x91: -5.26dB |
0x92: -5.10dB |
0x93: -4.94dB |
|
0x94: -4.78dB |
0x95: -4.63dB |
0x96: -4.47dB |
0x97: -4.31dB |
|
0x98: -4.16dB |
0x99: -4.00dB |
0x9a: -3.84dB |
0x9b: -3.69dB |
|
0x9c: -3.53dB |
0x9d: -3.37dB |
0x9e: -3.22dB |
0x9f: -3.06dB |
|
0xa0: -2.90dB |
0xa1: -2.75dB |
0xa2: -2.59dB |
0xa3: -2.43dB |
|
0xa4: -2.27dB |
0xa5: -2.12dB |
0xa6: -1.96dB |
0xa7: -1.80dB |
|
0xa8: -1.65dB |
0xa9: -1.49dB |
0xaa: -1.33dB |
0xab: -1.18dB |
|
0xac: -1.02dB |
0xad: -0.86dB |
0xae: -0.70dB |
0xaf: -0.55dB |
|
0xb0: -0.39dB |
0xb1: -0.24dB |
0xb2: -0.08dB |
0xb3: +0.08dB |
|
0xb4: +0.24dB |
0xb5: +0.39dB |
0xb6: +0.55dB |
0xb7: +0.71dB |
|
0xb8: +0.86dB |
0xb9: +1.02dB |
0xba: +1.18dB |
0xbb: +1.33dB |
|
0xbc: +1.49dB |
0xbd: +1.65dB |
0xbe: +1.80dB |
0xbf: +1.96dB |
|
0xc0: +2.12dB |
0xc1: +2.27dB |
0xc2: +2.43dB |
0xc3: +2.59dB |
|
0xc4: +2.75dB |
0xc5: +2.90dB |
0xc6: +3.06dB |
0xc7: +3.22dB |
|
0xc8: +3.37dB |
0xc9: +3.53dB |
0xca: +3.69dB |
0xcb: +3.84dB |
|
0xcc: +4.00dB |
0xcd: +4.16dB |
0xce: +4.31dB |
0xcf: +4.47dB |
|
0xd0: +4.63dB |
0xd1: +4.78dB |
0xd2: +4.94dB |
0xd3: +5.10dB |
|
0xd4: +5.26dB |
0xd5: +5.41dB |
0xd6: +5.57dB |
0xd7: +5.73dB |
|
0xd8: +5.88dB |
0xd9: +6.04dB |
0xda: +6.20dB |
0xdb: +6.35dB |
|
0xdc: +6.51dB |
0xdd: +6.67dB |
0xde: +6.82dB |
0xdf: +6.98dB |
|
0xe0: +7.14dB |
0xe1: +7.29dB |
0xe2: +7.45dB |
0xe3: +7.61dB |
|
0xe4: +7.77dB |
0xe5: +7.92dB |
0xe6: +8.08dB |
0xe7: +8.24dB |
|
0xe8: +8.39dB |
0xe9: +8.55dB |
0xea: +8.71dB |
0xeb: +8.86dB |
|
0xec: +9.02dB |
0xed: +9.18dB |
0xee: +9.33dB |
0xef: +9.49dB |
|
0xf0: +9.65dB |
0xf1: +9.80dB |
0xf2: +9.96dB |
0xf3: +10.1dB |
|
0xf4: +10.3dB |
0xf5: +10.4dB |
0xf6: +10.6dB |
0xf7: +10.7dB |
|
0xf8: +10.9dB |
0xf9: +11.1dB |
0xfa: +11.2dB |
0xfb: +11.4dB |
|
0xfc: +11.5dB |
0xfd: +11.7dB |
0xfe: +11.8dB |
0xff: +12.0dB |
Control value to dB's of gain table: -100dB to +0.00dB type control
|
0x00: -100dB |
0x01: -99.4dB |
0x02: -98.7dB |
0x03: -98.1dB |
|
0x04: -97.5dB |
0x05: -96.9dB |
0x06: -96.2dB |
0x07: -95.6dB |
|
0x08: -95.0dB |
0x09: -94.4dB |
0x0a: -93.7dB |
0x0b: -93.1dB |
|
0x0c: -92.5dB |
0x0d: -91.8dB |
0x0e: -91.2dB |
0x0f: -90.6dB |
|
0x10: -90.0dB |
0x11: -89.3dB |
0x12: -88.7dB |
0x13: -88.1dB |
|
0x14: -87.5dB |
0x15: -86.8dB |
0x16: -86.2dB |
0x17: -85.6dB |
|
0x18: -84.9dB |
0x19: -84.3dB |
0x1a: -83.7dB |
0x1b: -83.1dB |
|
0x1c: -82.4dB |
0x1d: -81.8dB |
0x1e: -81.2dB |
0x1f: -80.6dB |
|
0x20: -79.9dB |
0x21: -79.3dB |
0x22: -78.7dB |
0x23: -78.0dB |
|
0x24: -77.4dB |
0x25: -76.8dB |
0x26: -76.2dB |
0x27: -75.5dB |
|
0x28: -74.9dB |
0x29: -74.3dB |
0x2a: -73.6dB |
0x2b: -73.0dB |
|
0x2c: -72.4dB |
0x2d: -71.8dB |
0x2e: -71.1dB |
0x2f: -70.5dB |
|
0x30: -69.9dB |
0x31: -69.3dB |
0x32: -68.6dB |
0x33: -68.0dB |
|
0x34: -67.4dB |
0x35: -66.7dB |
0x36: -66.1dB |
0x37: -65.5dB |
|
0x38: -64.9dB |
0x39: -64.2dB |
0x3a: -63.6dB |
0x3b: -63.0dB |
|
0x3c: -62.4dB |
0x3d: -61.7dB |
0x3e: -61.1dB |
0x3f: -60.5dB |
|
0x40: -59.8dB |
0x41: -59.2dB |
0x42: -58.6dB |
0x43: -58.0dB |
|
0x44: -57.3dB |
0x45: -56.7dB |
0x46: -56.1dB |
0x47: -55.5dB |
|
0x48: -54.8dB |
0x49: -54.2dB |
0x4a: -53.6dB |
0x4b: -52.9dB |
|
0x4c: -52.3dB |
0x4d: -51.7dB |
0x4e: -51.1dB |
0x4f: -50.4dB |
|
0x50: -49.8dB |
0x51: -49.2dB |
0x52: -48.5dB |
0x53: -47.9dB |
|
0x54: -47.3dB |
0x55: -46.7dB |
0x56: -46.0dB |
0x57: -45.4dB |
|
0x58: -44.8dB |
0x59: -44.2dB |
0x5a: -43.5dB |
0x5b: -42.9dB |
|
0x5c: -42.3dB |
0x5d: -41.6dB |
0x5e: -41.0dB |
0x5f: -40.4dB |
|
0x60: -39.8dB |
0x61: -39.1dB |
0x62: -38.5dB |
0x63: -37.9dB |
|
0x64: -37.3dB |
0x65: -36.6dB |
0x66: -36.0dB |
0x67: -35.4dB |
|
0x68: -34.7dB |
0x69: -34.1dB |
0x6a: -33.5dB |
0x6b: -32.9dB |
|
0x6c: -32.2dB |
0x6d: -31.6dB |
0x6e: -31.0dB |
0x6f: -30.4dB |
|
0x70: -29.7dB |
0x71: -29.1dB |
0x72: -28.5dB |
0x73: -27.8dB |
|
0x74: -27.2dB |
0x75: -26.6dB |
0x76: -26.0dB |
0x77: -25.3dB |
|
0x78: -24.7dB |
0x79: -24.1dB |
0x7a: -23.4dB |
0x7b: -22.8dB |
|
0x7c: -22.2dB |
0x7d: -21.6dB |
0x7e: -20.9dB |
0x7f: -20.3dB |
|
0x80: -19.9dB |
0x81: -19.8dB |
0x82: -19.6dB |
0x83: -19.5dB |
|
0x84: -19.3dB |
0x85: -19.1dB |
0x86: -19.0dB |
0x87: -18.8dB |
|
0x88: -18.7dB |
0x89: -18.5dB |
0x8a: -18.4dB |
0x8b: -18.2dB |
|
0x8c:-18.0dB |
0x8d: -17.9dB |
0x8e: -17.7dB |
0x8f: -17.6dB |
|
0x90: -17.4dB |
0x91: -17.3dB |
0x92: -17.1dB |
0x93: -16.9dB |
|
0x98: -16.2dB |
0x99: -16.0dB |
0x9a: -15.8dB |
0x9b: -15.7dB |
|
0x9c: -15.5dB |
0x9d: -15.4dB |
0x9e: -15.2dB |
0x9f: -15.1dB |
|
0xa0: -14.9dB |
0xa1: -14.7dB |
0xa2: -14.6dB |
0xa3: -14.4dB |
|
0xa4: -14.3dB |
0xa5: -14.1dB |
0xa6: -14.0dB |
0xa7: -13.8dB |
|
0xa8: -13.6dB |
0xa9: -13.5dB |
0xaa: -13.3dB |
0xab: -13.2dB |
|
0xac: -13.0dB |
0xad: -12.9dB |
0xae: -12.7dB |
0xaf: -12.5dB |
|
0xb0: -12.4dB |
0xb1: -12.2dB |
0xb2: -12.1dB |
0xb3: -11.9dB |
|
0xb4: -11.8dB |
0xb5: -11.6dB |
0xb6: -11.5dB |
0xb7: -11.3dB |
|
0xb8: -11.1dB |
0xb9: -11.0dB |
0xba: -10.8dB |
0xbb: -10.7dB |
|
0xbc: -10.5dB |
0xbd: -10.4dB |
0xbe: -10.2dB |
0xbf: -10.0dB |
|
0xc0: -9.88dB |
0xc1: -9.73dB |
0xc2: -9.57dB |
0xc3: -9.41dB |
|
0xc4: -9.25dB |
0xc5: -9.10dB |
0xc6: -8.94dB |
0xc7: -8.78dB |
|
0xc8: -8.63dB |
0xc9: -8.47dB |
0xca: -8.31dB |
0xcb: -8.16dB |
|
0xcc: -8.00dB |
0xcd: -7.84dB |
0xce: -7.69dB |
0xcf: -7.53dB |
|
0xd0: -7.37dB |
0xd1: -7.22dB |
0xd2: -7.06dB |
0xd3: -6.90dB |
|
0xd4: -6.74dB |
0xd5: -6.59dB |
0xd6: -6.43dB |
0xd7: -6.27dB |
|
0xd8: -6.12dB |
0xd9: -5.96dB |
0xda: -5.80dB |
0xdb: -5.65dB |
|
0xdc: -5.49dB |
0xdd: -5.33dB |
0xde: -5.18dB |
0xdf: -5.02dB |
|
0xe0: -4.86dB |
0xe1: -4.71dB |
0xe2: -4.55dB |
0xe3: -4.39dB |
|
0xe4: -4.23dB |
0xe5: -4.08dB |
0xe6: -3.92dB |
0xe7: -3.76dB |
|
0xe8: -3.61dB |
0xe9: -3.45dB |
0xea: -3.29dB |
0xeb: -3.14dB |
|
0xec: -2.98dB |
0xed: -2.82dB |
0xee: -2.67dB |
0xef: -2.51dB |
|
0xf0: -2.35dB |
0xf1: -2.20dB |
0xf2: -2.04dB |
0xf3: -1.88dB |
|
0xf4: -1.72dB |
0xf5: -1.57dB |
0xf6: -1.41dB |
0xf7: -1.25dB |
|
0xf8: -1.10dB |
0xf9: -0.94dB |
0xfa: -0.78dB |
0xfb: -0.63dB |
|
0xfc: -0.47dB |
0xfd: -0.31dB |
0xfe: -0.16dB |
0xff: +0.00dB |
Control value to Router input selection table: 1x1 Router
|
Input |
Value Range |
|
Off |
0x00 - 0x7F |
|
1 |
0x80 - 0xFF |
Control value to Router input selection table: 2x1 Router
|
Input |
Value Range |
|
Off |
0x00 - 0x3F |
|
1 |
0x40 - 0xBF |
|
2 |
0xC0 - 0xFF |
Control value to Router input selection table: 4x1 Router
|
Input |
Value Range |
|
Off |
0x00 - 0x1F |
|
1 |
0x20 - 0x5F |
|
2 |
0x60 - 0x9F |
|
3 |
0xA0 - 0xDF |
|
4 |
0xE0 - 0xFF |
Control value to Router input selection table: 8x1 Router
|
Input |
Value Range |
|
Off |
0x00 - 0x0F |
|
1 |
0x10 - 0x2F |
|
2 |
0x30 - 0x4F |
|
3 |
0x50 - 0x6F |
|
4 |
0x70 - 0x8F |
|
5 |
0x90 - 0xAF |
|
6 |
0xB0 - 0xCF |
|
7 |
0xD0 - 0xEF |
|
8 |
0xF0 - 0xFF |