Sennheiser Sound Control Protocol (SSC) versatile command, control, and configuration for networked audio systems Developer‘s guide for Digital 6000 EM 6000 L 6000 Sennheiser electronic GmbH & Co. KG Am Labor 1, 30900 Wedemark, Germany, www.sennheiser.com TI 1109 v2.
Table of Contents 1.... Introduction......................................................................................................................................... 7 2... Open Sound Control Overview..........................................................................................................8 2.1....... JavaScript Object Notation Overview........................................................................................ 8 3... Conventions........................................
8.24.... /rx1/skx/display........................................................................................................................... 21 8.25.... /rx1/skx/capsule........................................................................................................................ 22 8.26.... /rx1/skx/cable_emulation......................................................................................................... 22 8.27.... /rx1/skx/battery.........................................
8.73.... /rx2/skx/autolock...................................................................................................................... 29 8.74.... /rx2/sync_settings/low_cut_frequency.................................................................................. 29 8.75.... /rx2/sync_settings/ignore_low_cut_frequency..................................................................... 29 8.76.... /rx2/sync_settings/gain.........................................................................
8.122... /osc/state/prettyprint............................................................................................................... 36 8.123... /osc/state/subscribe..................................................................................................................37 8.124... /osc/feature/timetag..................................................................................................................37 8.125... /osc/feature/baseaddr.........................................
11.32... /slot4/subslot2/led.................................................................................................................... 49 11.33... /slot4/subslot2/identify............................................................................................................ 49 11.34... /slot4/subslot2/accu_parameter............................................................................................. 49 11.35... /slot4/subslot2/accu_detection.........................................
Introduction 1. Introduction Modern professional audio devices are designed as building blocks for large, complex systems.
Open Sound Control Overview 2. Open Sound Control Overview Open Sound Control (OSC) is a protocol developed at The Center For New Music and Audio Technology (CNMAT) at University of California, Berkeley. The OSC specification Version 1.1 is available from the Open Sound Control website at: http://www.opensoundcontrol.org/ . The OSC Schema defined by MicroOSC at: http://cnmat.berkeley.
Conventions 3. Conventions The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP14/RFC 2119, "Key words for use in RFCs to Indicate Requirement Levels". 3.
SSC Data Structure Specification 4. SSC Data Structure Specification 4.1 Applying JSON to the OSC device model OSC models the controlled device as a tree-shaped hierarchy of methods, with the method addresses constructed from the names of all the nodes in the hierarchy, written like a file path.
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.
SSC Data Structure Specification 4.3.2 SSC Messages A Message is the protocol unit of transmission. Any application that sends SSC Messages is a SSC Client, any application that receives SSC Messages is a SSC Server. A SSC Message MUST be sent as a single closed JSON form describing a JSON object. Extra whitespace between the elements of the message MUST be ignored by the receiver. This means that every SSC Message is enclosed in a pair of curly brackets { }. 4.3.
SSC subscriptions - /osc/state/subscribe 5. SSC subscriptions - /osc/state/subscribe A subscription request is sent by a client to a server for an address pattern to subscribe to. The SSC Server normally accepts the subscription request, and remembers that the requesting client wishes to be notified about value changes of the subscribed addresses. The SSC Server MAY refuse subscription requests, subject to device-specific policy or implementation specific limitations.
SSC subscriptions - /osc/state/subscribe Optional subscription request parameters related to termination: • "cancel" "true" cancels the subscription (default false). • "count" maximum number of notifications to send, default 1000 • "lifetime" maximum lifetime (s) of the subscription, default 10s The SSC Client may renew a subscription at any time, thereby resetting all of the lifetime limitations.
SSC Transport Layer Adaptations 6. SSC Transport Layer Adaptations The SSC data format as defined in the previous sections can be transported by different transport protocols, or stored in persistent files. This section specifies what transports are supported, and how the specific features of transport layers shall be applied to transporting SSC Messages. 6.
Developer’s Guide for EM 6000 7. Developer’s Guide for EM 6000 This chapter describes in detail how a developer should use the SSC interface as implemented for the EM 6000. 7.1 Limitations 7.1.1 SSC Transport Layer The SSC Server implemented for Digital 6000 devices supports only UDP/IP as transport protocol. All the devices support IPv4. 7.1.2 Subscriptions The EM 6000 receiver supports SSC Method subscriptions from up to eight different SSC clients simultaneously.
SSC Method List (EM 6000) 8. SSC Method List (EM 6000) 8.1 /audio/out1/level_db This method sets or returns the analogue audio level (AF out) of each cannel. • type: Read/Write • value: Number • limits type: Number units: dB max: 18 min: -10 inc: 1 Example: Tx: {"audio":{"out1":{"level_db":null}}} Rx: {"audio":{"out1":{"level_db":3}}} 8.2 /audio/out2/level_db see "”8.1 /audio/out1/level_db”" 8.
SSC Method List (EM 6000) 8.10 /rx1/freq/u1/00 - /rx1/freq/u1/99 This methods sets or returns the User Bank/Channel of each receiver channel. • type: Read/Write • value: number Example: Tx: {"rx1":{"freq":{"u1":{"00":null}}}} Rx: {"rx1":{"freq":{"u1":{"00":470200}}}} 8.11 /rx1/freq/u2/00 - /rx1/freq/u2/99 see "”8.10 /rx1/freq/u1/00 - /rx1/freq/u1/99”" 8.12 /rx1/freq/u3/00 - /rx1/freq/u3/99 see "”8.10 /rx1/freq/u1/00 - /rx1/freq/u1/99”" 8.13 /rx1/freq/u4/00 - /rx1/freq/u4/99 see "”8.
SSC Method List (EM 6000) 8.18 /rx1/scan/config This method starts or stops a frequency fullscan. To start a fullscan session the config need the following structure [1, start_frequency_in_hz, stop_frequency_in_hz, stepsize_in_hz]. Frequencies and stepsize will be autocorrected, stepsize to a multiple of 25000 Hz. If starting succeeded the following array will be returned [1,start_frequency_in_hz, stop_frequency_in_hz, stepsize_in_hz, session_id].
SSC Method List (EM 6000) 8.19 /rx1/scan/result If a session with "”8.18 /rx1/scan/config”" is started, this method gives the fullscan data blockwise back. A returned array has the form: [start_frequency_in_hz, stop_frequency_in_hz, stepsize_in_hz, block_start_frequency_in_hz, block_ stop_frequency_in_hz, session_id, (RF1-ch1_val1),(RF2-ch1_val1),(RF1-ch1_val2),(RF2-ch1_val2),...]. See "”8.18 /rx1/scan/config”" for the meaning of the first three values.
SSC Method List (EM 6000) 8.21 /rx1/skx/name This method returns the transmitter name. An empty string indicates that transmitter is not present or doesn’t send valid information. • type: Read only • value: string • subscribable Example: Tx: {"osc":{"state":{"subscribe":[{"#":{"min":0, "max":0,"count":1000, "lifetime":60},"rx1":{"skx":{"name":null}}}]}}} Rx: {"rx1":{"skx":{"name":"DEVICE2 "}}}. 8.22 /rx1/skx/lowcut This method returns the Transmitter lowcut information as a string.
SSC Method List (EM 6000) 8.25 /rx1/skx/capsule This method returns the transmitter capsule information stored as a string. An empty string indicates that skx is not present or doesn’t send valid information. Valid strings: "unknown", "KK 205", "KK 204", "ME 9002", "ME 9004", "ME 9005", "MME 865", "MD 9235", "MMD 945", "MMD 935", "MMD 845", "MMD 835", "MMD 815-1", "MMK 965 sc", "MMK 965 c", "MMD42-I".
SSC Method List (EM 6000) 8.29 /rx1/sync_settings/low_cut_frequency This method sets or returns the sync settings for the low cut frequency. • type: Read/Write • value: Number • limits type: Number max: 4 min: 0 inc: 1 options , option_desc 1. 0 , 30 Hz 2. 1 , 60 Hz 3. 2 , 80 Hz 4. 3 , 100 Hz 5. 4 , 120 Hz Example: Tx: {"rx1":{"sync_settings":{"low_cut_frequency":null}}} Rx: {"rx1":{"sync_settings":{"low_cut_frequency":0}}} 8.
SSC Method List (EM 6000) 8.33 /rx1/sync_settings/display This method sets or returns the sync settings for the display (Frequency or Name). • type: Read/Write • value: Number • limits type: Number max: 1 min: 0 inc: 1 options , option_desc 1. 0 , Frequency 2. 1 , Name Example: Tx: {"rx1":{"sync_settings":{"display":null}}} Rx: {"rx1":{"sync_settings":{"display":0}}} 8.34 /rx1/sync_settings/ignore_display This method sets or returns the sync settings to ignore display.
SSC Method List (EM 6000) 8.37 /rx1/sync_settings/auto_lock This method sets or returns sync settings for auto lock. • type: Read/Write • value: Number • limits type: Number max: 1 min: 0 inc: 1 options , option_desc 1. 0 , Off 2. 1 , On Example: Tx: {"rx1":{"sync_settings":{"auto_lock":null}}} Rx: {"rx1":{"sync_settings":{"auto_lock":0}}} 8.38 /rx1/sync_settings/ignore_auto_lock This method sets or returns the sync settings to ignore the auto lock.
SSC Method List (EM 6000) 8.41 /rx1/identify This method pop up "Identified" window on EM6000 receiver channel 1 and let the triangle LED blink. Returns always true. • type: Read-only • value: boolean Example: Tx: {"rx1":{"identify":null}} Rx: {"rx1":{"identify":true}} 8.42 /rx1/wsm_master_cnt This method returns an "On Change Counter" for receiver channel 1: Sync Settings, Frequency Settings, AF Output, Channel Name, Encryption.
SSC Method List (EM 6000) 8.46 /rx1/active_warnings This method returns active warnings. Warnings: {RFPeak, AFPeak, LowSignal, NoLink, LowBattery, BadClock, NoClock, Aes256Error, AnTxYBNCShorted}. Note that BadClock and NoClock both are displayed as "Clock Error" in the EM. • type: Read only • value: [String] • subscribable Example: Tx: {"rx1":{"active_warnings":null}} Rx: {"rx1":{"active_warnings":["RFPeak","AFPeak"]}} 8.
SSC Method List (EM 6000) 8.57 /rx2/freq/u3/00 - /rx2/freq/u3/99 See "”8.10 /rx1/freq/u1/00 - /rx1/freq/u1/99”" 8.58 /rx2/freq/u4/00 - /rx2/freq/u4/99 See "”8.10 /rx1/freq/u1/00 - /rx1/freq/u1/99”" 8.59 /rx2/freq/u5/00 - /rx2/freq/u5/99 See "”8.10 /rx1/freq/u1/00 - /rx1/freq/u1/99”" 8.60 /rx2/freq/u6/00 - /rx2/freq/u6/99 See "”8.10 /rx1/freq/u1/00 - /rx1/freq/u1/99”" 8.61 /rx2/active_bank_channel see "”8.16 /rx1/active_bank_channel”" 8.62 /rx2/carrier see "”8.17 /rx1/carrier”" 8.
SSC Method List (EM 6000) 8.72 /rx2/skx/battery See "”8.27 /rx1/skx/battery”" 8.73 /rx2/skx/autolock See "”8.28 /rx1/skx/autolock”" 8.74 /rx2/sync_settings/low_cut_frequency See "”8.29 /rx1/sync_settings/low_cut_frequency”" 8.75 /rx2/sync_settings/ignore_low_cut_frequency See "”8.30 /rx1/sync_settings/ignore_low_cut_frequency”" 8.76 /rx2/sync_settings/gain See "”8.31 /rx1/sync_settings/gain”" 8.77 /rx2/sync_settings/ignore_gain See "”8.32 /rx1/sync_settings/ignore_gain”" 8.
SSC Method List (EM 6000) 8.87 /rx2/wsm_master_cnt See "”8.42 /rx1/wsm_master_cnt”" 8.88 /rx2/testtone See "”8.43 /rx1/testtone”" 8.89 /rx2/name See "”8.44 /rx1/name”" 8.90 /rx2/encryption See "”8.45 /rx1/encryption”" 8.91 /rx2/active_warnings See "”8.46 /rx1/active_warnings”" 8.92 /rx2/active_status See "”8.47 /rx1/active_status”" 8.93 /sys/dante/version This method returns the Dante module SW version.
SSC Method List (EM 6000) 8.96 /sys/clock_frequency_measured This method returns the clock frequency measured on the Wordclock input of the receiver. Possible values are [‘< 15378 Hz’, ‘15378 Hz’...’1999998 Hz’, ‘> 1999998 Hz’]. • type: Read only • value: string Example: Tx: {"sys":{"clock_frequency_measured":null}} Rx: {"sys":{"clock_frequency_measured":"48000 Hz"}} 8.97 /sys/clock This method returns the Clock mode for the Wordclock input.
SSC Method List (EM 6000) 8.100 /mm Metering array: [[(RF1-ch1),(RF1-PEAK-ch1),(RF2-ch1),(RF2-PEAK-ch1),(DIV1-ch1),(DIV2-ch1),(LQIch1),(AF-ch1),(AF-PEAK-ch1)],[(RF1-ch2),(RF1-PEAK-ch2),(RF2-ch2),(RF2-PEAK-ch2),(DIV1-ch2),(DIV2ch2),(LQI-ch2),(AF-ch2),(AF-PEAK-ch2)]]. • type: Read only • value: 2x9 array of bytes. Array contains raw metering data for both channels. • RF1/2: RF level for antenna 1/2.
SSC Method List (EM 6000) 8.104 /device/network/ether/macs This method returns a list of MAC addresses which are used in the receiver. • type: Read-only • value: [String] Example: Tx: {"device":{"network":{"ether":{"macs":null}}}} Rx: {"device":{"network":{"ether":{"macs":["00:1b:66:xx:xx:xx", "00:1d:c1:xx:xx:xx"]}}}} 8.105 /device/network/ether/interfaces This method returns a list of all ethernet interfaces.
SSC Method List (EM 6000) 8.109 /device/network/ipv4/static_ipaddr This method sets and returns the IPv4 settings for IP address in manual mode. • type: Read/Write • value: String Example: Tx: {"device":{"network":{"ipv4":{"static_ipaddr":null}}}} Rx: {"device":{"network":{"ipv4":{"static_ipaddr":"192.168.1.1"}}}} 8.110 /device/network/ipv4/static_netmask This method sets and returns the IPv4 settings for IP netmask in manual mode.
SSC Method List (EM 6000) 8.115 /device/network/ipv4_dante/auto This method sets and returns the mode for the Ethernet configuration in the Dante™ audio stream, if the EM6000 DANTE variant is present. All the time auto discovery is active (mdns) (true: use DHCP or ZeroConf (link local); false: set ip address/netmask/gateway manually). • type: Read/Write • value: Boolean Example: Tx: {"device":{"network":{"ipv4_dante":{"auto":null}}}} Rx: {"device":{"network":{"ipv4_dante":{"auto":true}}}} 8.
SSC Method List (EM 6000) 8.120 /device/name User-settable persistent device name (Device ID). This name should be the preferred, and most convenient way for the customer to identify devices. The device name is reflected in the EM6000 menu as well. The Device ID is reflected in the device discovery. The MAC address will be added to the device name automatically to avoid naming conflicts in the device discovery.
SSC Method List (EM 6000) 8.123 /osc/state/subscribe A subscription request is sent by a client to a server for an address pattern to subscribe to. The SSC Server normally accepts the subscription request, and remembers that the requesting client wishes to be notified about value changes of the subscribed addresses.
SSC Method List (EM 6000) 8.127 /osc/feature/pattern Support for address pattern matching is OPTIONAL for an SSC Server; it MAY be left out in a restricted implementation. If the SSC Server does not support address pattern matching, it MUST treat the special pattern characters like normal characters.
SSC Method List (EM 6000) 8.131 /osc/xid When an SSC Client calls the Method /osc/xid, the parameters supplied for the method will be reflected back in the Method Reply of the SSC Server. This can be used by the client to keep track of client-side per-server state. Example: TX: {"osc":{"xid":1234567890},"sys":{"booster":null}} RX: {"osc":{"xid":1234567890},"sys":{"booster":false}} 8.132 /osc/ping SSC Ping. 8.
SSC Error List (EM 6000) 9.
Developer’s Guide for L 6000 10. Developer’s Guide for L 6000 This chapter describes in detail how a developer should use the SSC interface as implemented for the L 6000. 10.1 Limitations 10.1.1 SSC Transport Layer The SSC Server implemented for Digital 6000 devices supports only UDP/IP as transport protocol. All the devices support IPv4. 10.1.2 Subscriptions The L 6000 charger supports SSC Method subscriptions from up to sixteen different SSC clients simultaneously.
SSC Method List (L 6000) 11. SSC Method List (L 6000) 11.1 /slot1/subslot1/led This method returns the subslot LED status. • type: Read • value: String • subscribable • limits type: String options , option_desc 1. OFF , No battery detected 2. GREEN , State of charge in range 97% - 100% 3. GREEN_FLASHING , State of charge in range 81% - 96% 4. YELLOW , State of charge in range 0% - 80% 5. YELLOW_FLASHING , Battery in regeneration 6. RED , Battery defect 7.
SSC Method List (L 6000) 11.4 /slot1/subslot1/accu_detection This method returns the battery detection status. • type: Read • value: Bool • subscribable • limits type: Boolean Example: Tx: {"slot1":{"subslot1":{"accu_detection":null}}} Rx: {"slot1":{"subslot1":{"accu_detection":true}}} 11.5 /slot1/subslot2/led See "”11.1 /slot1/subslot1/led”". • type: Read • value: String • subscribable • limits type: String options , option_desc 1.
SSC Method List (L 6000) 11.9 /slot1/type This method returns the type of slot. • type: Read • value: Number • subscribable • limits type: Number options , option_desc 1. 0 , dummy panel (not connected) 2. 1 , LM6060 slot 3. 2 , LM6061 slot 4. 3 , unknown / fault Example: Tx: {"slot1":{"type":null}} Rx: {"slot1":{"type":1}}} 11.10 /slot2/subslot1/led See "”11.1 /slot1/subslot1/led”".
SSC Method List (L 6000) 11.13 /slot2/subslot1/accu_detection See "”11.4 /slot1/subslot1/accu_detection”". • type: Read • value: Bool • subscribable • limits type: Boolean 11.14 /slot2/subslot2/led See "”11.1 /slot1/subslot1/led”". • type: Read • value: String • subscribable • limits type: String options , option_desc OFF , No battery detected 1. GREEN , State of charge in range 97% - 100% 2. GREEN_FLASHING , State of charge in range 81% - 96% 3.
SSC Method List (L 6000) 11.18 /slot2/type See "”11.9 /slot1/type”". • type: Read • value: Number • subscribable • limits type: Number options , option_desc 1. 0 , dummy panel (not connected) 2. 1 , LM6060 slot 3. 2 , LM6061 slot 4. 3 , unknown / fault 11.19 /slot3/subslot1/led See "”11.1 /slot1/subslot1/led”". • type: Read • value: String • subscribable • limits type: String options , option_desc 1. OFF , No battery detected 2.
SSC Method List (L 6000) 11.22 /slot3/subslot1/accu_detection See "”11.4 /slot1/subslot1/accu_detection”". • type: Read • value: Bool • subscribable • limits type: Boolean 11.23 /slot3/subslot2/led See "”11.1 /slot1/subslot1/led”". • type: Read • value: String • subscribable • limits type: String options , option_desc OFF , No battery detected 1. GREEN , State of charge in range 97% - 100% 2. GREEN_FLASHING , State of charge in range 81% - 96% 3.
SSC Method List (L 6000) 11.27 /slot3/type See "”11.9 /slot1/type”". • type: Read • value: Number • subscribable • limits type: Number options , option_desc 1. 0 , dummy panel (not connected) 2. 1 , LM6060 slot 3. 2 , LM6061 slot 4. 3 , unknown / fault 11.28 /slot4/subslot1/led See "”11.1 /slot1/subslot1/led”". • type: Read • value: String • subscribable • limits type: String options , option_desc 1. OFF , No battery detected 2.
SSC Method List (L 6000) 11.31 /slot4/subslot1/accu_detection See "”11.4 /slot1/subslot1/accu_detection”". • type: Read • value: Bool • subscribable • limits type: Boolean 11.32 /slot4/subslot2/led See "”11.1 /slot1/subslot1/led”". • type: Read • value: String • subscribable • limits type: String options , option_desc OFF , No battery detected 1. GREEN , State of charge in range 97% - 100% 2. GREEN_FLASHING , State of charge in range 81% - 96% 3.
SSC Method List (L 6000) 11.36 /slot4/type See "”11.9 /slot1/type”". • type: Read • value: Number • subscribable • limits type: Number options , option_desc 1. 0 , dummy panel (not connected) 2. 1 , LM6060 slot 3. 2 , LM6061 slot 4. 3 , unknown / fault 11.37 /device/identity/version This method returns the SW version information. • type: Read-only • value: String Example: Tx: {"device":{"identity":{"version":null}}} Rx: {"device":{"identity":{"version":"1.1.3.29"}}} 11.
SSC Method List (L 6000) 11.41 /device/network/ether/interfaces This method returns a list of all ethernet interfaces. • type: Read-only • value: [String] Example: Tx: {"device":{"network":{"ether":{"interfaces":null}}}} Rx: {"device":{"network":{"ether":{"interfaces":["CONTROL"]}}}} 11.42 /device/network/ipv4/auto This method sets or returns the IP mode "Auto". This settings configure the IP setting for the receiver automatically.
SSC Method List (L 6000) Example: Tx: {"device":{"network":{"ipv4":{"static_netmask":null}}}} Rx: {"device":{"network":{"ipv4":{"static_netmask":"255.255.255.0"}}}} 11.47 /device/network/ipv4/static_gateway This method sets and returns the IPv4 settings for IP gateway in manual mode. • type: Read/Write • value: String Example: Tx: {"device":{"network":{"ipv4":{"static_gateway":null}}}} Rx: {"device":{"network":{"ipv4":{"static_gateway":"192.168.1.2"}}}} 11.
SSC Method List (L 6000) 11.52 /device/warnings This method returns the number(s) of active warnings. • type: Read-only • value: Array of Numbers • subscribable • limits – type: Number – options , option_desc 1. 0 , accu too hot slot/subslot 1/1 2. 1 , accu too hot slot/subslot 1/2 3. 2 , accu too hot slot/subslot 2/1 4. 3 , accu too hot slot/subslot 2/2 5. 4 , accu too hot slot/subslot 3/1 6. 5 , accu too hot slot/subslot 3/2 7. 6 , accu too hot slot/subslot 4/1 8.
SSC Method List (L 6000) 11.54 /device/name User-settable persistent device name. This name should be the preferred, and most convenient way for the customer to identify devices. The device name is reflected in the device discovery. The MAC address will be added to the device name automatically to avoid naming conflicts in the device discovery.
SSC Method List (L 6000) 11.58 /osc/feature/timetag A client may query /osc/feature/timetag to inquire whether the SSC Server supports timed method execution. Example: TX: {"osc":{"feature":{"timetag":null}}} RX: {"osc":{"feature":{"timetag":false}}} 11.59 /osc/feature/baseaddr Using a baseaddr helps to explore a device in a truly interactive manner, and may additionally be used to reduce message lengths by shortening addresses in SSC requests.
SSC Method List (L 6000) Examples: TX: {"osc":{"limits":[{"slot1":{"type":null}}]}} RX: {"osc":{"limits":[{"slot1":{"type":[{"type":"Number", "option":[0,1,2,3],"option_desc":["dummy panel (not connected)", "L 6060 slot","L 6061 slot","unknown / fault"]}]}}]}} 11.63 /osc/schema The /osc/schema method exists to allow clients to query servers about what address schemes are available on a specific server. SSC clients MUST be able to understand both bundled and unbundled replies.
SSC Error List (L 6000) 12.