Summary

BSS Audio Soundweb London is a family of networkable DSP processors exposing the London Direct Inject (London DI) protocol over TCP port 1023 and RS-232 (9-pin D-type, pins 2/3/5). This spec covers the binary message framing, opcodes, parameter addressing, and acknowledgement rules documented in the Soundweb London Third Party Control guide.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 1023
serial:
  baud_rate: null  # UNRESOLVED: baud rate not stated in source
  data_bits: null  # UNRESOLVED: data bits not stated in source
  parity: null     # UNRESOLVED: parity not stated in source
  stop_bits: null  # UNRESOLVED: stop bits not stated in source
  flow_control: null  # UNRESOLVED: flow control not stated in source
auth:
  type: none  # inferred: no auth procedure in source

Traits

- queryable  # inferred: SUBSCRIBE / SUBSCRIBE PERCENT opcodes
- routable   # inferred: source selector and multi-state parameters documented
- levelable  # inferred: gain / level parameter types documented

Actions

# London DI opcodes. Each message is framed 0x02 [body] 0x03 [XOR checksum],
# with byte substitution applied to the body after checksum. Addressing fields
# (Node 2B, Virtual 1B, Object 3B, Parameter 2B) shown as {N} {V} {O} {P}.
# Checksum is XOR of all body bytes BEFORE substitution.

- id: set_raw
  label: SET (raw value)
  kind: action
  command: "0x02 0x88 {N} {V} {O} {P} [value 4B] 0x03 [XOR]"  # parameterized
  params:
    - name: node
      type: integer
      description: Node Address, 0x0001 to 0xFFFE
    - name: virtual
      type: integer
      description: Virtual Device (0x03 Audio, 0x02 Logic)
    - name: object
      type: integer
      description: Object ID (3 bytes)
    - name: parameter
      type: integer
      description: Parameter ID (2 bytes)
    - name: value
      type: integer
      description: 32-bit signed raw value

- id: set_percent
  label: SET PERCENT
  kind: action
  command: "0x02 0x8D {N} {V} {O} {P} [percent 4B] 0x03 [XOR]"
  params:
    - name: node
      type: integer
      description: Node Address
    - name: virtual
      type: integer
      description: Virtual Device
    - name: object
      type: integer
      description: Object ID
    - name: parameter
      type: integer
      description: Parameter ID
    - name: percent
      type: integer
      description: 0-100 percentage (Raw = percent * 65536)

- id: set_string
  label: SET STRING
  kind: action
  command: "0x02 0x91 {N} {V} {O} {P} [len] [ascii bytes] 0x00 0x03 [XOR]"
  params:
    - name: node
      type: integer
      description: Node Address
    - name: virtual
      type: integer
      description: Virtual Device
    - name: object
      type: integer
      description: Object ID
    - name: parameter
      type: integer
      description: Parameter ID
    - name: value
      type: string
      description: ASCII string up to 32 bytes, prefixed by length, suffixed 0x00

- id: bump_percent
  label: BUMP PERCENT
  kind: action
  command: "0x02 0x90 {N} {V} {O} {P} [delta 4B] 0x03 [XOR]"
  params:
    - name: node
      type: integer
      description: Node Address
    - name: virtual
      type: integer
      description: Virtual Device
    - name: object
      type: integer
      description: Object ID
    - name: parameter
      type: integer
      description: Parameter ID
    - name: delta
      type: integer
      description: Signed percent delta

- id: subscribe
  label: SUBSCRIBE (raw)
  kind: query
  command: "0x02 0x89 {N} {V} {O} {P} 0x03 [XOR]"
  params:
    - name: node
      type: integer
      description: Node Address
    - name: virtual
      type: integer
      description: Virtual Device
    - name: object
      type: integer
      description: Object ID
    - name: parameter
      type: integer
      description: Parameter ID

- id: subscribe_percent
  label: SUBSCRIBE PERCENT
  kind: query
  command: "0x02 0x8E {N} {V} {O} {P} 0x03 [XOR]"
  params:
    - name: node
      type: integer
      description: Node Address
    - name: virtual
      type: integer
      description: Virtual Device
    - name: object
      type: integer
      description: Object ID
    - name: parameter
      type: integer
      description: Parameter ID

- id: unsubscribe
  label: UNSUBSCRIBE
  kind: action
  command: "0x02 0x8A {N} {V} {O} {P} 0x03 [XOR]"
  params:
    - name: node
      type: integer
      description: Node Address
    - name: virtual
      type: integer
      description: Virtual Device
    - name: object
      type: integer
      description: Object ID
    - name: parameter
      type: integer
      description: Parameter ID

- id: unsubscribe_percent
  label: UNSUBSCRIBE PERCENT
  kind: action
  command: "0x02 0x8F {N} {V} {O} {P} 0x03 [XOR]"
  params:
    - name: node
      type: integer
      description: Node Address
    - name: virtual
      type: integer
      description: Virtual Device
    - name: object
      type: integer
      description: Object ID
    - name: parameter
      type: integer
      description: Parameter ID

- id: recall_preset
  label: RECALL PRESET
  kind: action
  command: "0x02 0x8C [preset_id 4B] 0x03 [XOR]"
  params:
    - name: preset_id
      type: integer
      description: Parameter Preset ID (4 bytes)

Feedbacks

- id: ack
  type: enum
  values: [0x06, 0x15]
  description: RS-232 acknowledgement. 0x06 = receipt and checksum OK. 0x15 = checksum invalid.
- id: set_response
  type: bytes
  description: SET / SET PERCENT message returned after SUBSCRIBE, same framing 0x02 ... 0x03 [XOR] as the action that produced it.

Variables

# UNRESOLVED: source documents parameter value ranges at type level only;
# no concrete named settable parameters enumerated in refined excerpt.

Events

# UNRESOLVED: source does not document unsolicited device-emitted events
# beyond subscription responses and RS-232 acks (covered in Feedbacks).

Macros

# UNRESOLVED: source does not document multi-step sequences.

Safety

confirmation_required_for: []
interlocks: []

Notes

  • Two-state parameters (e.g. mute) use raw values 0 and 1.
  • Multi-state parameters (e.g. source selector) use discrete values 0,1,2,3...
  • Gain parameters: raw range -280617 to 100000 (-80 dB to +10 dB). Unity = 0 (73.73%). Logarithmic from -inf to -10 dB, linear above.
  • Meter parameters: raw range -800000 to 400000 (-80 dB to +40 dB). 0 dB = raw 0 (66.66%). dB = raw / 10000.
  • TCP transport: no acknowledgements (TCP provides reliability); multiple connections accepted; socket left open.
  • RS-232 transport: ack 0x06 / nak 0x15. 1 second timeout, re-transmit on miss. Baud rate not stated in source — must be configured in Audio Architect Properties window.
  • Byte substitution (applied to body AFTER checksum calculation): 0x02 -> 0x1B 0x82, 0x03 -> 0x1B 0x83, 0x06 -> 0x1B 0x86, 0x15 -> 0x1B 0x95, 0x1B -> 0x1B 0x9B.
  • Crown, JBL, AKG devices do not respond to London Direct Inject.
  • BLU-Link, Dante, CobraNet, AVB are not used for control.
  • Subscriptions terminate on UNSUBSCRIBE or device reboot. BUMP PERCENT does not generate SET/SET PERCENT responses on subscribed parameters; re-subscribe to read new values.

Provenance

source_domains:
  - bssaudio.com
source_urls:
  - https://www.bssaudio.com/en/site_elements/soundweb-london-third-party-control-application-guide
retrieved_at: 2026-04-30T04:32:58.671Z
last_checked_at: 2026-06-02T21:41:07.160Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T21:41:07.160Z
matched_actions: 9
action_count: 9
confidence: medium
summary: "All 9 spec actions matched literal opcodes in source; transport parameters verified; complete coverage. (10 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "refined source does not list specific product models; entire Soundweb London series treated as compatible. Baud rate, data bits, parity, stop bits for serial transport not stated."
- "baud rate not stated in source"
- "data bits not stated in source"
- "parity not stated in source"
- "stop bits not stated in source"
- "flow control not stated in source"
- "source documents parameter value ranges at type level only;"
- "source does not document unsolicited device-emitted events"
- "source does not document multi-step sequences."
- "full London DI message structure diagrams (SET STRING, PRESET RECALL) truncated in source. Concrete preset ID list and per-processing-object parameter IDs not enumerated."

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0