Sound Control Protocol Digital 6000 (EM 6000 | L 6000)

Table Of Contents
SSC Developer‘s guide for Digital 6000 | 11/57
SSC Data Structure Specification
For command and control applications it is desirable to access single properties independently. This
can be achieved in JSON syntax by the simple convention, that all the properties of a SSC Server that
are not mentioned in a JSON message are left unchanged.
In this way, applied to the example above, the JSON form
{ "audio": { "out1": { "level_db": 5 } } }
can be understood as a SSC Method Call of the SSC Method "/audio/out1/level_db" with the argu-
ment 5, presumably to set the level to that level, or as an SSC Method Reply message stating the
current level.
4.2 JSON Message Transaction Syntax
The SSC Message exchange is described here as transaction using the following syntax:
Prefix "TX:" indicates a SSC Message that a SSC Client is sending to a SSC Server.
Prefix "RX:" indicates a SSC Message that the SSC Server will send back to the Client.
A SSC-Message is written verbatim, enclosed by curly brackets { }.
A transaction to set the level of "audio" of "out1" to 1 then looks like this:
TX: { "audio": { "out1": { "level_db": 1 }}}
RX: { "audio": { "out1": { "level_db": 1 }}}
Note that the execution of the method results in a method reply message, which for simple property
setters states the actual value of the property resulting from executing the message.
The resulting value may be different from the supplied argument, e.g., for a read-only property, or if
the argument is out of range, and the device may adapt it to the allowed range (this is not considered
as an error):
TX: { "audio": { "out1": { "level_db": 20000 }}}
RX: { "audio": { "out1": { "level_db": 6 }}}
Getter-methods, which request the value of a property from the SSC Server, are realised by supplying
the special JSON value null as argument to method sent to the address of the property:
TX: { "audio": { "out1": { "level_db": null }}}
RX: { "audio": { "out1": { "level_db": 6 }}}
Compared to binary OSC, the JSON syntax is slightly more verbose for single attribute settings, but
this is compensated when multiple attributes are set in the same transaction:
TX: { "audio": { "out1": { "level_db": 3, "label": null }}}
RX: { "audio": { "out1": { "level_db": 3, "label": "AF_LABEL" }}}
4.3 SSC JSON Message Syntax
4.3.1 Elementary data types
All SSC data is composed of the primitive JSON data types:
string: a sequence of zero or more Unicode characters in UTF-8 encoding, wrapped in double
quotes, using backslash escapes. A character is represented as a single character string. Binary
zero bytes can be included in a string using Unicode escape notation: "\u0000".
number: a number in conventional "scientific" notation. 0, 42, -23, 3.141259, 1.0e+100
are all valid numbers. A Restricted SSC Server MAY reject non-integer numeric arguments, or it
MAY adapt them by silently converting them to integer values.
true: the boolean true value.
false: the boolean false value.
null: indicates a missing value; used as pseudo argument for getter-methods.