Summary
Symetrix Jupiter series DSP processors (Jupiter 4, 8, 12) controlled via UDP text protocol on port 48630. Human-readable ASCII commands with CR terminators. Controller-number-based addressing for faders, buttons, selectors, meters, and presets. Supports unsolicited push notifications for parameter changes.
Transport
protocols:
- udp
addressing:
port: 48630
auth:
type: none # inferred: no auth procedure in source
Traits
- queryable # inferred: GS, GS2, GSB, GSB2, GPR, GPU return values
- levelable # inferred: CS controls faders with 0-65535 range
Actions
- id: controller_set
label: Controller Set
kind: action
command: "CS {controller_number} {position}"
params:
- name: controller_number
type: integer
description: "Decimal controller number (1-10000)"
- name: position
type: integer
description: "16-bit controller position (0-65535)"
- id: controller_change
label: Change Controller
kind: action
command: "CC {controller_number} {dec_inc} {amount}"
params:
- name: controller_number
type: integer
description: "Decimal controller number (1-10000)"
- name: dec_inc
type: integer
description: "0 = decrement, 1 = increment"
- name: amount
type: integer
description: "Amount to change (0-65535)"
- id: controller_get
label: Get Controller
kind: query
command: "GS {controller_number}"
params:
- name: controller_number
type: integer
description: "Decimal controller number (1-10000)"
- id: controller_get_with_number
label: Get Controller with Controller Number
kind: query
command: "GS2 {controller_number}"
params:
- name: controller_number
type: integer
description: "Decimal controller number (1-10000)"
- id: controller_block_get
label: Get Controller Block
kind: query
command: "GSB {controller_number} {block_size}"
params:
- name: controller_number
type: integer
description: "Starting decimal controller number (1-10000)"
- name: block_size
type: integer
description: "Number of consecutive controllers to read (max 256)"
- id: controller_block_get_with_number
label: Get Controller Block with Controller Number
kind: query
command: "GSB2 {controller_number} {block_size}"
params:
- name: controller_number
type: integer
description: "Starting decimal controller number (1-10000)"
- name: block_size
type: integer
description: "Number of consecutive controllers to read (max 256)"
- id: preset_get
label: Get Preset
kind: query
command: "GPR D"
params: []
- id: preset_load
label: Load Preset
kind: action
command: "LP {preset_number}"
params:
- name: preset_number
type: integer
description: "Preset number (1-50)"
- id: flash_unit
label: Flash Unit
kind: action
command: "FU"
params: []
- id: push_global_enable
label: Global Push Enable/Disable
kind: action
command: "PU {on_off} {low} {high}"
params:
- name: on_off
type: integer
description: "0 = OFF, 1 = ON"
- name: low
type: integer
description: "Lowest controller number to push (optional, 1-10000)"
- name: high
type: integer
description: "Highest controller number to push (optional, 1-10000)"
- id: push_enable
label: Push Enable
kind: action
command: "PUE {low} {high}"
params:
- name: low
type: integer
description: "Lowest controller number to enable (optional, 1-10000)"
- name: high
type: integer
description: "Highest controller number to enable (optional, 1-10000)"
- id: push_disable
label: Push Disable
kind: action
command: "PUD {low} {high}"
params:
- name: low
type: integer
description: "Lowest controller number to disable (optional, 1-10000)"
- name: high
type: integer
description: "Highest controller number to disable (optional, 1-10000)"
- id: push_get_enabled
label: Get Push-enabled Controllers
kind: query
command: "GPU {low} {high}"
params:
- name: low
type: integer
description: "Lowest controller number to inquire (optional, 1-10000)"
- name: high
type: integer
description: "Highest controller number to inquire (optional, 1-10000)"
- id: push_refresh
label: Push Refresh
kind: action
command: "PUR {low} {high}"
params:
- name: low
type: integer
description: "Lowest controller number to refresh (optional, 1-10000)"
- name: high
type: integer
description: "Highest controller number to refresh (optional, 1-10000)"
- id: push_clear
label: Push Clear
kind: action
command: "PUC {low} {high}"
params:
- name: low
type: integer
description: "Lowest controller number to clear (optional, 1-10000)"
- name: high
type: integer
description: "Highest controller number to clear (optional, 1-10000)"
- id: push_set_interval
label: Set Push Interval
kind: action
command: "PUI {milliseconds}"
params:
- name: milliseconds
type: integer
description: "Push interval in ms (20-30000)"
- id: push_set_threshold
label: Set Push Threshold
kind: action
command: "PUT {parameter_threshold} {meter_threshold}"
params:
- name: parameter_threshold
type: integer
description: "Threshold for non-meter parameters (0-65535, optional)"
- name: meter_threshold
type: integer
description: "Threshold for meter parameters (0-65535, optional)"
- id: set_quiet_mode
label: Set Quiet Mode
kind: action
command: "SQ {on_off}"
params:
- name: on_off
type: integer
description: "0 = OFF, 1 = ON"
- id: set_echo_mode
label: Set Echo Mode
kind: action
command: "EH {on_off}"
params:
- name: on_off
type: integer
description: "0 = OFF, 1 = ON"
Feedbacks
- id: controller_position
type: integer
description: "16-bit controller position (0-65535) returned from GS query"
- id: controller_number_and_position
type: string
description: "Format: #<CONTROLLER NUMBER>=<CONTROLLER POSITION> returned from GS2"
- id: controller_block_positions
type: string
description: "Multiple CR-separated 5-digit values (0-65535 or -1) returned from GSB"
- id: controller_block_with_numbers
type: string
description: "Multiple CR-separated #NNNNN=VVVVV strings returned from GSB2"
- id: preset_number
type: integer
description: "Last loaded preset number (0-50), 0 = no preset recalled, from GPR response format PrstD=<PRESET NUMBER>"
- id: push_enabled_list
type: string
description: "CR-separated list of enabled controller numbers from GPU"
- id: push_settings
type: string
description: "Global push state and settings from GPU 0, format: Global=<0/1> followed by lower/upper/threshold_param/threshold_meter/interval_ms"
- id: push_data
type: string
description: "Unsolicited push data, format: #NNNNN=VVVVV, up to 64 entries per push"
- id: ack
type: enum
values: ["ACK"]
description: "Command accepted"
- id: nak
type: enum
values: ["NAK"]
description: "Command failed or not understood"
Variables
# UNRESOLVED: controller numbers are app-specific and listed per Jupiter App in the
# Appendix of the source document, which was not included in the refined excerpt.
# Controller positions map to faders, buttons, selectors, meters etc. but the
# specific controller number assignments are not documented in this source excerpt.
Events
- id: push_notification
description: "Unsolicited push of controller value changes. Format: #NNNNN=VVVVV<CR>. Up to 64 entries per push interval (default 100ms). Requires global push enabled and individual controller push enabled."
Macros
# UNRESOLVED: no multi-step sequences described in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures found in source
Notes
- All commands terminated with
<CR>(ASCII 13 / hex $0D). Responses also CR-terminated. - Commands must not be split across multiple UDP packets.
- Zero-termination character optional in commands; never present in responses.
- Responses sent to IP and source port of last received packet; saved in non-volatile memory across power cycles.
- Push data not sent until first command received (device needs return address).
- Controller values are 16-bit (0–65535). Fader mapping: 0 = min, 65535 = max, linear in dB. Volume faders typically -72dB to +12dB.
- Buttons use 0 = off, 65535 = on (some use inverse logic, noted per-product in Appendix).
- Meters are read-only. Level mapping: 65535 = +24dBu (0dBFS), 0 = -48dBu (-72dBFS) or less.
- Preset range 1–50 per control application definition.
- Push interval default 100ms, adjustable 20–30000ms. Shorter intervals may degrade system performance.
- Quiet mode ON and echo OFF are defaults and recommended for normal operation.
- Default push state: globally enabled at power-on, but individual controllers disabled for Jupiter devices.
- Source document title references "Jupiter 4, Jupiter 8, Jupiter 12" — no mention of "322 DSP Engine" in source text.
Provenance
source_domains:
- symetrixinc.com
- audiobrains.com
- aca.im
source_urls:
- https://www.symetrixinc.com/wp-content/uploads/2023/05/Symetrix_PROTOCOL_Jupiter_cp2.pdf
- https://audiobrains.com/data/symetrix/others/Composer-Control-Protocol-v7.0-080918.pdf
- https://aca.im/driver_docs/Symetrix/SymNet_Composer_control_prot_2.0.pdf
retrieved_at: 2026-06-12T01:38:22.997Z
last_checked_at: 2026-06-12T20:01:00.985Z
Verification Summary
verdict: verified
checked_at: 2026-06-12T20:01:00.985Z
matched_actions: 19
action_count: 19
confidence: medium
summary: "All 19 spec actions matched literal source commands with correct parameter shapes and ranges; transport declared UDP port 48630 confirmed. (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source document covers Jupiter 4/8/12; user-specified device name \"Symetrix 322 DSP Engine\" does not appear in source text — model mapping unclear"
- "firmware version compatibility not stated in source"
- "RS-485 control mentioned only for ARC devices, not documented for external control"
- "controller numbers are app-specific and listed per Jupiter App in the"
- "no multi-step sequences described in source"
- "no safety warnings or interlock procedures found in source"
- "Appendix with per-product controller number assignments not included in refined source"
- "device name mismatch — user specified \"Symetrix 322 DSP Engine\" but source covers Jupiter 4/8/12"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0