Cognio Control Protocol - JSON RPC
Overview
The Cognio Control Protocol is a request-response model where the client first connects to a remote-control protocol server. Cognio uses the JSON-RPC 2.0 specification to format and send remote control commands.
Differences Between Cognio and Composer
With existing Composer compatible products remote-control was done using remote control numbers assigned by the user to specific controls and managed using the Remote-Control Manager. These same numbers were used by both proprietary and non-proprietary control products for runtime control. UDP and TCP interfaces were provided to access these remote-control numbers using a text-based protocol, “Symetrix Remote Control Protocol”.
The Cognio Control Protocol replaces the numeric control system with a standardized communication format utilizing the JSON-RPC 2.0 specification. By using JSON messages instead of raw integers, the protocol provides more structured and readable control, allowing you to control devices using named methods and arguments.
Examples Comparing Composer and Cognio
In Composer, to get the values of four gain faders and four mute buttons, you would typically assign 8 unique control numbers (e.g., 101–108) using the Remote Control Manager and use the GS2 command for each individual control.
GS2 101<CR>
GS2 102<CR>
GS2 103<CR>
GS2 104<CR>
GS2 105<CR>
GS2 106<CR>
GS2 107<CR>
GS2 108<CR>
This would return:
101 43323<CR>
102 65535<CR>
103 41245<CR>
104 00000<CR>
105 32768<CR>
106 65535<CR>
107 28934<CR>
108 00000<CR>
In Cognio, you refer to controls by name using the NamedControl.Get method.
{
"jsonrpc": "2.0",
"method": "NamedControl.Get",
"params": [
"MyCPG/channel1_gain",
"MyCPG/channel1_mute",
"MyCPG/channel2_gain",
"MyCPG/channel2_mute",
"MyCPG/channel3_gain",
"MyCPG/channel3_mute",
"MyCPG/channel4_gain",
"MyCPG/channel4_mute"
],
"id": "getMixerValues"
}
This would return:
{
"jsonrpc": "2.0",
"result": [
{ "name": "MyCPG/channel1_gain", "text": "-6.0 dB", "value": -6.0 },
{ "name": "MyCPG/channel1_mute", "text": "muted", "value": 1 },
{ "name": "MyCPG/channel2_gain", "text": "-3.0 dB", "value": -3.0 },
{ "name": "MyCPG/channel2_mute", "text": "unmuted", "value": 0 },
{ "name": "MyCPG/channel3_gain", "text": "0.0 dB", "value": 0.0 },
{ "name": "MyCPG/channel3_mute", "text": "muted", "value": 1 },
{ "name": "MyCPG/channel4_gain", "text": "+3.0 dB", "value": 3.0 },
{ "name": "MyCPG/channel4_mute", "text": "unmuted", "value": 0 }
],
"id": "getMixerValues"
}
Using JSON and named controls makes your control system easier to read and maintain. You can work directly with meaningful names instead of tracking arbitrary numbers, and responses include both readable text and precise values.