Summary
The Meyer Sound Galileo GALAXY 816 is a network loudspeaker management processor in the GALAXY Network Platform family. This spec covers the device's Control Plane server, which exposes two parallel text/binary protocols: a human-readable ASCII server (TCP) and an Open Sound Control (OSC) server (TCP and UDP). Clients (Compass software, Spacemap Go, or third-party controllers) connect over IPv4, IPv6, or mDNS to set, query, describe, subscribe, and unsubscribe from a large tree of OSC-style control points, and to invoke a small set of built-in snapshot/ping commands.
Transport
protocols:
- tcp
- udp
- osc
addressing:
port: 25003 # ASCII server (TCP)
# The OSC server listens on TCP and UDP port 25004. Virtual GALAXY processors use
# additional port schemes - see Notes.
auth:
type: UNRESOLVED # source does not state this (was inferred none: no auth procedure in source)
Connection examples (verbatim from source):
- TCP/IPv4 ASCII:
telnet 192.168.71.146 25003 - TCP/IPv6 ASCII:
telnet fe80::21c:abff:fe00:584c%en12 25003 - mDNS ASCII:
telnet MyGalaxy.MyGroup.local 25003ortelnet mslg-gx-816-16342723.local 25003
Addressing model: the device accepts IPv4, IPv6, or mDNS addresses equivalently. GALAXY exposes two servers — an ASCII server (TCP, port 25003) and an OSC server (TCP and UDP, port 25004). Authentication is not described in the source.
Traits
# Populated from explicit source evidence:
# - queryable (get/describe control point commands present)
# - levelable (input/output gain, mute, delay, EQ settable)
# - routable (matrix processing control points present)
# Power on/off is NOT in the source - no `powerable` trait.
Actions
# CRITICAL: every ASCII text command must end with a CR (`0d`) or LF (`0a`)
# terminator. The OSC equivalents use the same OSC address space with type-tagged
# arguments. Listed verbs are the source's 6 built-in commands plus the 5
# control-point characters (=, no-char, ?, +, -).
# --- Built-in commands ---
- id: recall_snapshot
label: Recall Snapshot
kind: action
command: ":recall_snapshot {snapshot_id} {exclusion_code}" # ASCII form; OSC: /recall_snapshot,i {id} {exclusion}
params:
- name: snapshot_id
type: integer
description: Snapshot identifier (0-255 per source)
- name: exclusion_code
type: integer
description: Optional exclusion bitmask (1, 2, 4, 8, 16, 32, 64, 128, 256; sum values to combine; see Notes)
required: false
- id: update_snapshot
label: Update Snapshot
kind: action
command: ":update_snapshot {snapshot_id}" # ASCII form; OSC: /update_snapshot,i {id}
params:
- name: snapshot_id
type: integer
description: Snapshot identifier (0-255 per source)
- id: create_snapshot
label: Create Snapshot
kind: action
command: ":create_snapshot {name} {comment}" # ASCII form; OSC: /create_snapshot,ss {name} {comment}
params:
- name: name
type: string
description: Name for the new snapshot
- name: comment
type: string
description: Comment string for the new snapshot
required: false
- id: delete_snapshot
label: Delete Snapshot
kind: action
command: ":delete_snapshot {snapshot_id}" # ASCII form; OSC: /delete_snapshot,h {id} (64-bit int)
params:
- name: snapshot_id
type: integer
description: Snapshot identifier (0-255 per source)
- id: ping
label: Ping
kind: action
command: ":ping {keyword}" # ASCII form; OSC: /ping,s {keyword}; no-arg form keeps subscription alive
params:
- name: keyword
type: string
description: Arbitrary string echoed in the pong response (used to match ping to pong)
- id: help
label: List Built-in Commands
kind: query
command: ":?" # ASCII only; OSC form: N/A
params: []
# --- Control-point verbs (apply to any OSC-style address) ---
- id: set_control_point
label: Set Control Point Value
kind: action
command: "{address}={value}" # ASCII form uses `=` as the control character prefix; OSC: same address with type tag (T/F/i/f/s/h)
params:
- name: address
type: string
description: OSC-style control point path, e.g. `/processing/input/1/mute`. Supports regular expressions (`.`, `*`, `\d`, `\d+`, full regex).
- name: value
type: string
description: Value appropriate to the control point (Boolean true/false, integer, float, or string). See Variables section for value types per control point.
- id: get_control_point
label: Get Control Point Value
kind: query
command: "{address}" # ASCII form has NO control character; OSC: same address with empty type tag
params:
- name: address
type: string
description: OSC-style control point path. Supports regular expressions to return multiple values.
- id: describe_control_point
label: Get Control Point Description
kind: query
command: "?{address}" # ASCII form uses `?` as the control character prefix; OSC: N/A
params:
- name: address
type: string
description: OSC-style control point path. Returns description, read_only, name, value, minimum, maximum, default, step, units.
- id: subscribe_control_point
label: Subscribe to Control Point
kind: action
command: "+{address} {rate_ms}" # ASCII form uses `+` as the control character prefix; OSC: /subscribe/{address},i {rate_ms}
params:
- name: address
type: string
description: OSC-style control point path. Supports regular expressions. Resubscribing to an already-subscribed address causes the server to re-send the current value.
- name: rate_ms
type: integer
description: Update interval in milliseconds (0-100; default 30 if omitted). If the control point changes faster than this rate, updates are coalesced to this rate; if slower, updates are sent only on change.
required: false
- id: unsubscribe_control_point
label: Unsubscribe from Control Point
kind: action
command: "-{address}" # ASCII form uses `-` as the control character prefix; OSC: /unsubscribe/{address} with empty type tag
params:
- name: address
type: string
description: OSC-style control point path. Only affects addresses the client is currently subscribed to.
# --- Worked examples (kept as illustrative actions; the verbs above are the real commands) ---
- id: mute_input
label: Mute Input
kind: action
command: "/processing/input/{input_number}/mute=true" # ASCII form; OSC: /processing/input/{input_number}/mute,T
params:
- name: input_number
type: integer
description: Input channel number (1-8 per source; 1-32 for matrix inputs)
- id: unmute_input
label: Unmute Input
kind: action
command: "/processing/input/{input_number}/mute=false" # ASCII form; OSC: /processing/input/{input_number}/mute,F
params:
- name: input_number
type: integer
description: Input channel number (1-8 per source; 1-32 for matrix inputs)
- id: mute_output
label: Mute Output
kind: action
command: "/processing/output/{output_number}/mute=true" # ASCII form; OSC: /processing/output/{output_number}/mute,T
params:
- name: output_number
type: integer
description: Output channel number (1-16 per source)
- id: unmute_output
label: Unmute Output
kind: action
command: "/processing/output/{output_number}/mute=false" # ASCII form; OSC: /processing/output/{output_number}/mute,F
params:
- name: output_number
type: integer
description: Output channel number (1-16 per source)
- id: set_input_gain
label: Set Input Gain
kind: action
command: "/processing/input/{input_number}/gain={gain_db}" # ASCII form; OSC: /processing/input/{input_number}/gain,f {gain_db}
params:
- name: input_number
type: integer
description: Input channel number (1-8 per source)
- name: gain_db
type: number
description: Gain in dB (source shows -90 as -inf and 0 as unity)
- id: set_output_gain
label: Set Output Gain
kind: action
command: "/processing/output/{output_number}/gain={gain_db}" # ASCII form; OSC: /processing/output/{output_number}/gain,f {gain_db}
params:
- name: output_number
type: integer
description: Output channel number (1-16 per source)
- name: gain_db
type: number
description: Gain in dB (source shows -90 as -inf and 0 as unity)
# --- Additional literal control-point queries ---
- id: get_matrix_control_point
label: Get Matrix Control Point
kind: query
command: "/processing/matrix/Matrix"
params: []
- id: get_system_firmware_status_string
label: Get System Firmware Status String
kind: query
command: "/system/firmware/status_string"
params: []
- id: get_active_snapshot_comment
label: Get Active Snapshot Comment
kind: query
command: "/project/snapshot/active/comment"
params: []
- id: get_active_snapshot_created
label: Get Active Snapshot Created Timestamp
kind: query
command: "/project/snapshot/active/created"
params: []
- id: get_active_snapshot_last_updated
label: Get Active Snapshot Last Updated Timestamp
kind: query
command: "/project/snapshot/active/last_updated"
params: []
- id: get_active_snapshot_locked
label: Get Active Snapshot Locked
kind: query
command: "/project/snapshot/active/locked"
params: []
- id: get_active_snapshot_modified
label: Get Active Snapshot Modified
kind: query
command: "/project/snapshot/active/modified"
params: []
- id: get_active_snapshot_name
label: Get Active Snapshot Name
kind: query
command: "/project/snapshot/active/name"
params: []
# --- Additional literal regular expression examples ---
- id: get_single_digit_input_mutes
label: Get Single Digit Input Mutes
kind: query
command: '/processing/input/\d/mute'
params: []
- id: get_snapshot_control_points
label: Get Snapshot Control Points
kind: query
command: "/project/snapshot/7/.*" # Literal source example; replace the snapshot segment using snapshot_id.
params:
- name: snapshot_id
type: integer
description: Snapshot number (0-255); replaces the literal 7 in the source example.
- id: mute_all_outputs_regex
label: Mute All Outputs With Regular Expression
kind: action
command: "/processing/output/([1-9]|1[0-6])/mute=1"
params: []
- id: set_output_subset_mute_to_zero
label: Set Output Subset Mute To Zero
kind: action
command: "/processing/output/([1-8]|1[1-6])/mute=0" # Source row title conflicts with its ASCII command; the literal command is retained.
params: []
- id: unmute_all_outputs_regex
label: Unmute All Outputs With Regular Expression
kind: action
command: "/processing/output/([1-9]|1[0-6])/mute=false"
params: []
- id: unmute_outputs_one_to_eight
label: Unmute Outputs One To Eight
kind: action
command: "/processing/output/([1-8])/mute=false"
params: []
- id: unmute_outputs_nine_to_sixteen
label: Unmute Outputs Nine To Sixteen
kind: action
command: "/processing/output/([9]|1[0-6])/mute=false"
params: []
- id: unmute_single_digit_outputs
label: Unmute Single Digit Outputs
kind: action
command: '/processing/output/\d/mute=false'
params: []
Feedbacks
# Status control points are read-only. Subscribing to a control point causes
# the server to push current and changed values back to the client.
- id: pong
label: Pong Response
description: Returned by the server after a :ping command. Server CANNOT send a pong unprompted - pong is only ever a reply to ping. Includes the keyword supplied in the original ping.
source: ":pong {keyword}"
- id: snapshot_recall_in_progress
label: Snapshot Recall In Progress
type: boolean
description: True while a snapshot recall is being applied.
address: /status/snapshot/recall_in_progress
query_command: "/status/snapshot/recall_in_progress"
default: false
- id: connected_client_count
label: Connected Client Count
type: integer
description: Total number of clients currently subscribed to this GALAXY server.
address: /status/connected_client_count
query_command: "/status/connected_client_count"
default: 3
- id: connected_osc_tcp_client_count
label: Connected OSC-over-TCP Client Count
type: integer
address: /status/connected_osc_tcp_client_count
query_command: "/status/connected_osc_tcp_client_count"
default: 0
- id: connected_osc_udp_client_count
label: Connected OSC-over-UDP Client Count
type: integer
address: /status/connected_osc_udp_client_count
query_command: "/status/connected_osc_upd_client_count" # Literal source spelling; see Notes.
default: 0
- id: connected_text_tcp_client_count
label: Connected ASCII-over-TCP Client Count
type: integer
address: /status/connected_text_tcp_client_count
query_command: "/status/connected_text_tcp_client_count"
default: 3
- id: beam_control_input_source
label: Beam Control Input Source
type: integer
description: Read-only status; values may differ per device.
address: /status/beam_control_input_source
query_command: "/status/beam_control_input_source"
default: 0
- id: aes_output_clock_input_number
label: AES Output Clock Input Number
type: integer
address: /status/clock/aes_output/input_number
query_command: "/status/clock/aes_output/input_number"
default: 1
- id: aes_output_clock_sample_rate
label: AES Output Clock Sample Rate
type: integer
description: Sample rate in Hz.
address: /status/clock/aes_output/sample_rate
query_command: "/status/clock/aes_output/sample_rate"
default: 96000
- id: aes_output_clock_source
label: AES Output Clock Source
type: integer
address: /status/clock/aes_output/source
query_command: "/status/clock/aes_output/source"
default: 0
- id: aes_output_clock_sync
label: AES Output Clock Sync State
type: integer
address: /status/clock/aes_output/sync
query_command: "/status/clock/aes_output/sync"
default: 2
- id: gptp_clock_port_locked
label: gPTP Clock Port Locked
type: boolean
address: /status/clock/gptp/{port_number}/port_locked
query_command: "/status/clock/gptp/1/port_locked" # Literal source example; replace port segment 1 with port_number (1 or 2).
default: true
- id: gptp_clock_as_capable
label: gPTP Clock AS Capable
type: boolean
address: /status/clock/gptp/{port_number}/as_capable
query_command: "/status/clock/gptp/1/as_capable" # Literal source example; replace port segment 1 with port_number (1 or 2).
default: false
- id: gptp_clock_grand_master_id
label: gPTP Clock Grand Master ID
type: string
address: /status/clock/gptp/{port_number}/grand_master_id
query_command: "/status/clock/gptp/1/grand_master_id" # Literal source example; replace port segment 1 with port_number (1 or 2).
default: 00-1C-AB-FF-FE-00-8D-80
- id: input_clock_sample_rate
label: Input Clock Sample Rate
type: integer
address: /status/clock/input/{input_number}/sample_rate
query_command: UNRESOLVED # Source marks up the numeric path segment; no unformatted literal query is supplied.
default: 0
- id: input_clock_sync
label: Input Clock Sync State
type: integer
address: /status/clock/input/{input_number}/sync
query_command: UNRESOLVED # Source marks up the numeric path segment; no unformatted literal query is supplied.
default: 3
- id: network_carrier
label: Network Carrier
type: integer
address: /status/network/{port_number}/carrier
query_command: "/status/network/1/carrier" # Literal source example; replace port segment 1 with port_number (1 or 2).
default: 1
- id: network_duplex
label: Network Duplex
type: string
values: [full, half]
address: /status/network/{port_number}/duplex
query_command: "/status/network/1/duplex" # Literal source example; replace port segment 1 with port_number (1 or 2).
default: full
- id: network_ip_address
label: Network IP Address
type: string
address: /status/network/{port_number}/ip_address
query_command: "/status/network/1/ip_address" # Literal source example; replace port segment 1 with port_number (1 or 2).
default: 169.254.7.39
- id: network_mac_address
label: Network MAC Address
type: string
address: /status/network/{port_number}/mac_address
query_command: "/status/network/1/mac_address" # Literal source example; replace port segment 1 with port_number (1 or 2).
default: 00:1C:AB:00:8D:80
- id: network_speed
label: Network Speed
type: integer
description: Speed in Mbps.
address: /status/network/{port_number}/speed
query_command: "/status/network/1/speed" # Literal source example; replace port segment 1 with port_number (1 or 2).
default: 1000
- id: network_net_mask
label: Network Net Mask
type: string
address: /status/network/{port_number}/net_mask
query_command: "/status/network/1/net_mask" # Literal source example; replace port segment 1 with port_number (1 or 2).
default: 255.255.0.0
- id: gptp_clock_as_path_trace_id
label: GPTP Clock AS Path Trace ID
type: string
description: Read-only trace identifier; port_number selects 1 or 2 and trace_number selects the documented entries 1 through 18. Replace the corresponding numeric segments in the literal query example.
address: /status/clock/gptp/{port_number}/as_path/{trace_number}/trace_id
query_command: "/status/clock/gptp/1/as_path/1/trace_id"
default: ""
- id: gptp_clock_as_path_trace_length
label: GPTP Clock AS Path Trace Length
type: integer
description: Read-only trace length; replace port segment 1 in the literal query example with port_number (1 or 2).
address: /status/clock/gptp/{port_number}/as_path/trace_length
query_command: "/status/clock/gptp/1/as_path/trace_length"
default: 0
- id: gptp_clock_peer_delay
label: GPTP Clock Peer Delay
type: number
description: Read-only peer delay; units and range are UNRESOLVED. Replace port segment 1 in the literal query example with port_number (1 or 2).
address: /status/clock/gptp/{port_number}/peer_delay
query_command: "/status/clock/gptp/1/peer_delay"
default: 0
- id: gptp_clock_port_role
label: GPTP Clock Port Role
type: integer
description: Read-only port role; value enum is UNRESOLVED. Replace port segment 1 in the literal query example with port_number (1 or 2).
address: /status/clock/gptp/{port_number}/port_role
query_command: "/status/clock/gptp/1/port_role"
default: 3
- id: rtc_date_and_time
label: RTC Date And Time
type: string
address: /status/clock/rtc/date_and_time
query_command: "/status/clock/rtc/date_and_time"
default: "2019-08-08T05:23:11"
- id: system_clock_input_number
label: System Clock Input Number
type: integer
address: /status/clock/system/input_number
query_command: "/status/clock/system/input_number"
default: 1
- id: system_clock_sample_rate
label: System Clock Sample Rate
type: integer
address: /status/clock/system/sample_rate
query_command: "/status/clock/system/sample_rate"
default: 96000
- id: system_clock_source
label: System Clock Source
type: integer
description: Read-only clock source; value enum is UNRESOLVED.
address: /status/clock/system/source
query_command: "/status/clock/system/source"
default: 0
- id: system_clock_sync
label: System Clock Sync State
type: integer
description: Source lists this path twice with conflicting defaults 2 and 0; default and value enum are UNRESOLVED.
address: /status/clock/system/sync
query_command: "/status/clock/system/sync"
- id: word_clock_sync
label: Word Clock Sync State
type: integer
description: Read-only sync state; value enum is UNRESOLVED.
address: /status/clock/word_clock/sync
query_command: "/status/clock/word_clock/sync"
default: 3
- id: word_clock_termination
label: Word Clock Termination
type: integer
description: Read-only termination status; value enum is UNRESOLVED.
address: /status/clock/word_clock/termination
query_command: "/status/clock/word_clock/termination"
default: 0
- id: network_gateway
label: Network Gateway
type: string
description: Read-only gateway; replace port segment 1 in the literal query example with port_number (1 or 2).
address: /status/network/{port_number}/gateway
query_command: "/status/network/1/gateway"
default: ""
Variables
# Control points are the settable/readable state tree. The full tree has
# hundreds of leaves; this spec enumerates the major categories and a few
# representative leaves per category. Use the get/describe control-point
# verbs (Actions section) at runtime to inspect defaults and ranges per
# device. Regular expressions are accepted in the address field for
# bulk operations.
# --- Input processing (per source: inputs 1-8) ---
- id: input_gain
label: Input Gain
type: number
units: dB
address: /processing/input/{input_number}/gain
default: 0
scope: input_number in 1..8
- id: input_mute
label: Input Mute
type: boolean
address: /processing/input/{input_number}/mute
default: true
scope: input_number in 1..8
- id: input_delay
label: Input Delay
type: number
address: /processing/input/{input_number}/delay
default: 0
scope: input_number in 1..8
- id: input_delay_type
label: Input Delay Type
type: integer
address: /processing/input/{input_number}/delay_type
default: 0
scope: input_number in 1..8
- id: input_eq_bypass
label: Input EQ Bypass
type: boolean
address: /processing/input/{input_number}/eq/bypass
default: false
scope: input_number in 1..8
- id: input_eq_band_bypass
label: Input EQ Band Bypass
type: boolean
address: /processing/input/{input_number}/eq/{band_number}/band_bypass
default: false
scope: input_number in 1..8, band_number in 1..5
- id: input_eq_bandwidth
label: Input EQ Band Bandwidth
type: number
address: /processing/input/{input_number}/eq/{band_number}/bandwidth
default: 1
scope: input_number in 1..8, band_number in 1..5
- id: input_eq_frequency
label: Input EQ Band Frequency
type: number
units: Hz
address: /processing/input/{input_number}/eq/{band_number}/frequency
scope: input_number in 1..8, band_number in 1..5
# Per-band default frequencies from source: band 1=32, band 2=125, band 3=500, band 4=2000, band 5=8000
- id: input_eq_gain
label: Input EQ Band Gain
type: number
units: dB
address: /processing/input/{input_number}/eq/{band_number}/gain
default: 0
scope: input_number in 1..8, band_number in 1..5
- id: input_equalization_bypass
label: Input Equalization Bypass
type: boolean
address: /processing/input/{input_number}/equalization_bypass
default: false
scope: input_number in 1..8
- id: input_ushaping_bypass
label: Input U-Shaping Bypass
type: boolean
address: /processing/input/{input_number}/ushaping/bypass
default: false
scope: input_number in 1..8
- id: input_ushaping_frequency
label: Input U-Shaping Band Frequency
type: number
units: Hz
address: /processing/input/{input_number}/ushaping/{band_number}/frequency
scope: input_number in 1..8, band_number in 1..5
# Per-band default frequencies from source: band 1=62, band 2=250, band 3=1000, band 4=4000, band 5=undefined (gain only)
- id: input_ushaping_gain
label: Input U-Shaping Band Gain
type: number
units: dB
address: /processing/input/{input_number}/ushaping/{band_number}/gain
default: 0
scope: input_number in 1..8, band_number in 1..5
- id: input_ushaping_slope
label: Input U-Shaping Band Slope
type: integer
address: /processing/input/{input_number}/ushaping/{band_number}/slope
default: 2
scope: input_number in 1..8, band_number in 1..4
# --- Output processing (per source: outputs 1-16) ---
- id: output_gain
label: Output Gain
type: number
units: dB
address: /processing/output/{output_number}/gain
default: 0
scope: output_number in 1..16
- id: output_mute
label: Output Mute
type: boolean
address: /processing/output/{output_number}/mute
default: false
scope: output_number in 1..16
- id: output_delay
label: Output Delay
type: number
address: /processing/output/{output_number}/delay
default: 0
scope: output_number in 1..16
- id: output_delay_type
label: Output Delay Type
type: integer
address: /processing/output/{output_number}/delay_type
default: 0
scope: output_number in 1..16
- id: output_polarity_reversal
label: Output Polarity Reversal
type: boolean
address: /processing/output/{output_number}/polarity_reversal
default: false
scope: output_number in 1..16
- id: output_atmospheric_bypass
label: Output Atmospheric Bypass
type: boolean
address: /processing/output/{output_number}/atmospheric/bypass
default: true
scope: output_number in 1..16
- id: output_atmospheric_distance
label: Output Atmospheric Distance
type: number
address: /processing/output/{output_number}/atmospheric/distance
default: 0
scope: output_number in 1..16
- id: output_atmospheric_gain
label: Output Atmospheric Gain
type: number
address: /processing/output/{output_number}/atmospheric/gain
default: 10
scope: output_number in 1..16
- id: output_highpass_bypass
label: Output Highpass Bypass
type: boolean
address: /processing/output/{output_number}/highpass/bypass
default: true
scope: output_number in 1..16
- id: output_highpass_frequency
label: Output Highpass Frequency
type: number
units: Hz
address: /processing/output/{output_number}/highpass/frequency
default: 40
scope: output_number in 1..16
- id: output_highpass_type
label: Output Highpass Type
type: integer
address: /processing/output/{output_number}/highpass/type
default: 11
scope: output_number in 1..16
- id: output_lowpass_bypass
label: Output Lowpass Bypass
type: boolean
address: /processing/output/{output_number}/lowpass/bypass
default: true
scope: output_number in 1..16
- id: output_lowpass_frequency
label: Output Lowpass Frequency
type: number
units: Hz
address: /processing/output/{output_number}/lowpass/frequency
default: 160
scope: output_number in 1..16
- id: output_lowpass_type
label: Output Lowpass Type
type: integer
address: /processing/output/{output_number}/lowpass/type
default: 11
scope: output_number in 1..16
- id: output_eq_bypass
label: Output EQ Bypass
type: boolean
address: /processing/output/{output_number}/eq/bypass
default: false
scope: output_number in 1..16
- id: output_eq_band_bypass
label: Output EQ Band Bypass
type: boolean
address: /processing/output/{output_number}/eq/{band_number}/band_bypass
default: false
scope: output_number in 1..16, band_number in 1..10
- id: output_eq_bandwidth
label: Output EQ Band Bandwidth
type: number
address: /processing/output/{output_number}/eq/{band_number}/bandwidth
default: 1
scope: output_number in 1..16, band_number in 1..10
- id: output_eq_frequency
label: Output EQ Band Frequency
type: number
units: Hz
address: /processing/output/{output_number}/eq/{band_number}/frequency
scope: output_number in 1..16, band_number in 1..10
# Per-band default frequencies from source: 32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000
- id: output_eq_gain
label: Output EQ Band Gain
type: number
units: dB
address: /processing/output/{output_number}/eq/{band_number}/gain
default: 0
scope: output_number in 1..16, band_number in 1..10
- id: output_equalization_bypass
label: Output Equalization Bypass
type: boolean
address: /processing/output/{output_number}/equalization_bypass
default: false
scope: output_number in 1..16
- id: output_ushaping_bypass
label: Output U-Shaping Bypass
type: boolean
address: /processing/output/{output_number}/ushaping/bypass
default: false
scope: output_number in 1..16
- id: output_ushaping_frequency
label: Output U-Shaping Band Frequency
type: number
units: Hz
address: /processing/output/{output_number}/ushaping/{band_number}/frequency
scope: output_number in 1..16, band_number in 1..5
# Per-band default frequencies from source: 62, 250, 1000, 4000, band 5 (gain only)
- id: output_ushaping_gain
label: Output U-Shaping Band Gain
type: number
units: dB
address: /processing/output/{output_number}/ushaping/{band_number}/gain
default: 0
scope: output_number in 1..16, band_number in 1..5
- id: output_ushaping_slope
label: Output U-Shaping Band Slope
type: integer
address: /processing/output/{output_number}/ushaping/{band_number}/slope
default: 2
scope: output_number in 1..16, band_number in 1..4
# --- Matrix processing (per source: inputs 1-32, crosspoints 1-16) ---
- id: matrix_gain
label: Matrix Crosspoint Gain
type: number
units: dB
address: /processing/matrix/{matrix_input}/{crosspoint}/gain
scope: matrix_input in 1..32, crosspoint in 1..16
note: Source notes only matrix input 1 crosspoints 1-8 and matrix input 2 crosspoints 9-16 default to 0; all other crosspoints default to -90. The maximum number of matrix crosspoints that may be set simultaneously is 232.
- id: matrix_delay
label: Matrix Crosspoint Delay
type: number
address: /processing/matrix/{matrix_input}/{crosspoint}/delay
default: 0
scope: matrix_input in 1..32, crosspoint in 1..16
- id: matrix_delay_bypass
label: Matrix Crosspoint Delay Bypass
type: boolean
address: /processing/matrix/{matrix_input}/{crosspoint}/delay_bypass
default: false
scope: matrix_input in 1..32, crosspoint in 1..16
- id: matrix_delay_type
label: Matrix Crosspoint Delay Type
type: integer
address: /processing/matrix/{matrix_input}/{crosspoint}/delay_type
default: 0
scope: matrix_input in 1..32, crosspoint in 1..16
# --- System control points ---
- id: system_front_panel_lockout
label: Front Panel Lockout
type: boolean
address: /system/hardware/front_panel_lockout
default: false
- id: system_meter_demo_active
label: System Meter Demo Active
type: boolean
address: /system/meter/demo/active
default: false
- id: system_mode_running
label: System Mode Running
type: boolean
description: True when the GALAXY is in normal operating mode (vs. Spacemap mode or similar).
address: /system/mode/running
default: true
- id: system_network_type
label: System Network Port Type
type: integer
address: /system/network/{port_number}/type
default: 0
scope: port_number in 1..2
- id: system_network_static_ip_address
label: System Network Static IP Address
type: string
address: /system/network/{port_number}/static/ip_address
default: 192.168.0.2
scope: port_number in 1..2
- id: system_network_static_net_mask
label: System Network Static Net Mask
type: string
address: /system/network/{port_number}/static/net_mask
default: 255.255.255.0
scope: port_number in 1..2
- id: system_network_static_gateway
label: System Network Static Gateway
type: string
address: /system/network/{port_number}/static/gateway
default: 192.168.0.1
scope: port_number in 1..2
- id: system_firmware_code
label: System Firmware Code
type: integer
address: /system/firmware/code
default: 0
- id: system_firmware_status
label: System Firmware Status
type: integer
address: /system/firmware/status
default: 0
# --- Device preferences and SIM ---
- id: device_preferences_brightness
label: Device Front-Panel Brightness
type: integer
address: /device/preferences/brightness
default: 1
- id: device_preferences_display_color
label: Device Display Color
type: integer
address: /device/preferences/display_color
default: 3
- id: device_sim_bus_address
label: SIM3 Bus Address
type: integer
address: /device/sim/bus_address
default: 10
- id: device_sim_configured
label: SIM3 Configured
type: boolean
address: /device/sim/configured
default: false
- id: device_sim_mute_relay
label: SIM3 Mute Relay
type: boolean
address: /device/sim/mute_relay/{relay_number}
default: true
scope: relay_number in 1..4
- id: device_sim_probe_channel
label: SIM3 Probe Channel
type: integer
address: /device/sim/probe/{probe_number}/channel
default: 1
scope: probe_number in 1..2
- id: device_sim_probe_point
label: SIM3 Probe Point
type: integer
address: /device/sim/probe/{probe_number}/point
scope: probe_number in 1..2
# Source defaults: probe 1 point=2, probe 2 point=4
# --- Device input (per source: inputs 1-8 named A-H; matrix inputs 9-32) ---
- id: device_input_name
label: Device Input Name
type: string
address: /device/input/{input_number}/name
default: "Input A" # default names A-H for inputs 1-8
scope: input_number in 1..8
- id: device_input_mode
label: Device Input Mode
type: integer
address: /device/input/{input_number}/mode
default: 1
scope: input_number in 1..8
- id: device_input_scale
label: Device Input Scale
type: integer
address: /device/input/{input_number}/scale
default: 26
scope: input_number in 1..8
- id: device_input_select
label: Device Input Select
type: boolean
address: /device/input/{input_number}/select
default: false
scope: input_number in 1..32
- id: device_input_isolate
label: Device Input Isolate
type: boolean
address: /device/input/{input_number}/isolate
default: false
scope: input_number in 1..8
- id: device_input_link_group
label: Device Input Link Group
type: integer
address: /device/input/{input_number}/input_link_group
default: 0
scope: input_number in 1..32
- id: device_input_aes_enable_asrc
label: Device Input AES Enable ASRC
type: boolean
address: /device/input/{input_number}/aes/enable_asrc
default: true
scope: input_number in 1..8
- id: device_input_avb_controller_mode
label: Device Input AVB Controller Mode
type: integer
address: /device/input/avb/controller_mode
default: 0
- id: device_input_link_group_bypass
label: Device Input Link Group Bypass
type: boolean
address: /device/input_link_group/{group_number}/bypass
default: true
scope: group_number in 1..4
- id: device_input_link_group_name
label: Device Input Link Group Name
type: string
address: /device/input_link_group/{group_number}/name
default: "Group 1" # default names Group 1..Group 4
scope: group_number in 1..4
# --- Device output (per source: outputs 1-16) ---
- id: device_output_name
label: Device Output Name
type: string
address: /device/output/{output_number}/name
default: "Output 1"
scope: output_number in 1..16
- id: device_output_scale
label: Device Output Scale
type: integer
address: /device/output/{output_number}/scale
default: 26
scope: output_number in 1..16
- id: device_output_select
label: Device Output Select
type: boolean
address: /device/output/{output_number}/select
default: false
scope: output_number in 1..16
- id: device_output_isolate
label: Device Output Isolate
type: boolean
address: /device/output/{output_number}/isolate
default: false
scope: output_number in 1..16
- id: device_output_mute_relay
label: Device Output Mute Relay
type: boolean
address: /device/output/{output_number}/mute_relay
default: false
scope: output_number in 1..16
- id: device_output_output_link_group
label: Device Output Link Group
type: integer
address: /device/output/{output_number}/output_link_group
default: 0
scope: output_number in 1..16
- id: device_output_sim_trim
label: Device Output SIM3 Trim
type: integer
address: /device/output/{output_number}/sim/trim
default: 0
scope: output_number in 1..16
- id: device_output_link_group_bypass
label: Device Output Link Group Bypass
type: boolean
address: /device/output_link_group/{group_number}/bypass
default: true
scope: group_number in 1..8
- id: device_output_link_group_name
label: Device Output Link Group Name
type: string
address: /device/output_link_group/{group_number}/name
default: "Group 1" # default names Group 1..Group 8
scope: group_number in 1..8
- id: device_output_avb_presentation_time
label: Device Output AVB Presentation Time
type: integer
units: ns
address: /device/output/avb/presentation_time
default: 2000000
- id: device_output_atmospheric_altitude
label: Device Output Atmospheric Altitude
type: number
address: /device/output/atmospheric/altitude
default: 0
- id: device_output_atmospheric_humidity
label: Device Output Atmospheric Humidity
type: integer
units: "%"
address: /device/output/atmospheric/humidity
default: 50
- id: device_output_atmospheric_temperature
label: Device Output Atmospheric Temperature
type: number
units: K
address: /device/output/atmospheric/temperature
default: 293.15
# --- Project control points ---
- id: project_name
label: Project Name
type: string
address: /project/name
default: Default
- id: project_boot_snapshot_id
label: Project Boot Snapshot ID
type: integer
address: /project/boot_snapshot_id
default: 3
- id: project_metadata_content_type
label: Project Metadata Content Type
type: integer
address: /project/metadata/content_type
default: 2
- id: project_metadata_schema_version
label: Project Metadata Schema Version
type: integer
address: /project/metadata/schema_version
default: 10
- id: project_project_firmware_version
label: Project Project Firmware Version
type: string
address: /project/project_firmware_version
default: none
- id: project_snapshot_name
label: Snapshot Name
type: string
address: /project/snapshot/{snapshot_id}/name
scope: snapshot_id in 0..255
note: Snapshot 0 defaults to name "Factory Defaults" and is locked.
- id: project_snapshot_comment
label: Snapshot Comment
type: string
address: /project/snapshot/{snapshot_id}/comment
scope: snapshot_id in 0..255
note: Snapshot 0 defaults to "All settings are set to default values".
- id: project_snapshot_locked
label: Snapshot Locked
type: boolean
address: /project/snapshot/{snapshot_id}/locked
scope: snapshot_id in 0..255
note: Snapshot 0 defaults to true; other snapshots default to false.
- id: project_snapshot_modified
label: Snapshot Modified
type: boolean
address: /project/snapshot/{snapshot_id}/modified
default: false
scope: snapshot_id in 0..255
- id: project_snapshot_created
label: Snapshot Created Timestamp
type: string
address: /project/snapshot/{snapshot_id}/created
scope: snapshot_id in 0..255
- id: project_snapshot_last_updated
label: Snapshot Last Updated Timestamp
type: string
address: /project/snapshot/{snapshot_id}/last_updated
scope: snapshot_id in 0..255
- id: project_snapshot_active_id
label: Active Snapshot ID
type: integer
address: /project/snapshot/active/id
default: -1
# --- Entity (device identity) control points ---
- id: entity_entity_id
label: Entity ID
type: string
address: /entity/entity_id
default: 0x1cabfffe008d80
- id: entity_entity_model_id
label: Entity Model ID
type: string
address: /entity/entity_model_id
default: 0x1cabb804004005
- id: entity_entity_name
label: Entity Name
type: string
address: /entity/entity_name
default: GALAXY-18139889
- id: entity_firmware_version
label: Entity Firmware Version
type: string
address: /entity/firmware_version
default: 2.1.0-R4-1907032112
- id: entity_group_name
label: Entity Group Name
type: string
address: /entity/group_name
default: GALAXYs
- id: entity_serial_number
label: Entity Serial Number
type: string
address: /entity/serial_number
default: 18139889
- id: entity_input_channel_count
label: Entity Input Channel Count
type: integer
address: /entity/input_channel_count
default: 64
- id: entity_input_stream_count
label: Entity Input Stream Count
type: integer
address: /entity/input_stream_count
default: 18
- id: entity_output_channel_count
label: Entity Output Channel Count
type: integer
address: /entity/output_channel_count
default: 24
- id: entity_output_stream_count
label: Entity Output Stream Count
type: integer
address: /entity/output_stream_count
default: 14
Events
# Unsolicited notifications the server may send:
- id: subscribed_control_point_update
label: Subscribed Control Point Update
description: |
When a control point is subscribed to (via `+` ASCII or `/subscribe/...` OSC),
the server pushes the current value and all subsequent changes to the
subscriber at the requested rate (0-100 ms; default 30 ms).
direction: server -> client
triggered_by: subscribe_control_point
- id: pong
label: Pong Response
description: |
Returned by the server in response to a :ping (ASCII) or /ping (OSC) command.
Includes the keyword string supplied by the client. Source notes: a client
cannot send a pong command - pong is only ever a server reply to ping.
direction: server -> client
triggered_by: ping
Macros
# UNRESOLVED: source documents no multi-step macro sequences.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or
# power-on sequencing requirements.
Notes
Termination. All ASCII text commands must end with a CR (0d) or LF (0a) byte. The command strings in the Actions section show the printable form without the terminator; implementations must append 0d or 0a.
OSC argument types. OSC supports: i 32-bit integer, f 32-bit float, s string, F Boolean false, T Boolean true, h 64-bit integer. Source notes: "Because some clients do not adhere to the OSC protocol governing argument types, GALAXY is programmed to type cast from integer to Boolean. For example, Boolean True is any positive non-zero integer."
Subscription lifetimes.
- TCP: subscription remains active until an unsubscribe or until the TCP connection breaks.
- UDP: subscription remains active until an unsubscribe or until the server receives no UDP packets from the client for at least 30 seconds. Use a no-arg
:ping(or empty OSC ping) as a keepalive.
Regular expressions. Address fields support regex wildcards: . (any single char), * (any sequence), \d (any single digit), \d+ (any integer). Example: /processing/input/\d/mute=true mutes inputs 1-8; /processing/output/\d+/mute=false unmutes all outputs.
Snapshot exclusion codes (for recall_snapshot second argument, sum to combine):
- 1 = exclusion enabled, nothing excluded
- 2 = Input Channel Types
- 4 = Input and Output Voltage Ranges
- 8 = Input and Output Mute
- 16 = Update active snapshot before recall
- 32 = SIM3 Bus Address
- 64 = SIM3 Probe Point
- 128 = Clock Sync Mode
- 256 = AVB Configuration
Virtual GALAXY ports. Physical GALAXY devices use ASCII port 25003 and OSC port 25004. Virtual GALAXY processors use a different port scheme depending on operating mode:
- Normal mode: virtual #1 starts at ASCII 50503 / OSC 50504. Decrement by 100 per additional virtual processor.
- Spacemap mode: virtual #1 starts at ASCII 25003 / OSC 25004. Increment by 100 per additional virtual processor.
- Check the Log tab in Compass to determine the port address of any specific GALAXY device.
Operating modes. The GALAXY has two independent operating modes: normal (loudspeaker management via Compass / Compass Go) and Spacemap (spatial mixing via Spacemap Go). Port numbering for virtual processors differs between modes.
mDNS addressing. Two constructions: (1) <Entity Name>.<Group Name>.local per Compass config, or (2) <device-type-serial>.local where device type is mslg-gx-408, mslg-gx-816, mslg-gx-816aes, or mslg-gx-bluehorn. Example: mslg-gx-816-16342723.local.
Client tooling. Source notes: "Telnet is not available on the current macOS. Use the netcat command (nc) instead."
OSC path typo in source. The source's OSC MSG example for update_snapshot shows /update_snaphot,i 6 (misspelled). The accompanying ASCII Hex bytes spell the path correctly as update_snapshot, and the same spelling is used for ASCII and for the UDP/TCP OSC hex forms. This spec uses the canonical update_snapshot spelling in all action commands.
OSC type typo in source. The source's connected_osc_upd_client_count (UDP) is a misspelling of udp; the same default is shown under the clearly-intended connected_osc_udp_client_count elsewhere. This spec uses connected_osc_udp_client_count.
Status read-only. All /status/... control points are read-only. Attempting to set a status control point returns an error message. Default values shown are representative and may differ per device.
Entity defaults vary by device. Source explicitly notes that only input_channel_count, input_stream_count, output_channel_count, and output_stream_count entity defaults are consistent across all GALAXY devices; other entity defaults (entity_id, entity_name, serial_number, firmware_version, group_name, etc.) are device-specific.
Snapshot range. Snapshots are numbered 0-255. Snapshot 0 is "Factory Defaults" and is locked by default. Recall via :recall_snapshot requires the snapshot to already exist (except :create_snapshot); the active snapshot ID is -1 when no snapshot is selected.
Unknown input/output defaults on isolated controls. The source lists /device/output/atmospheric/altitude with default 0 and /device/output/atmospheric/temperature with default 293.15 (Kelvin). The same atmospheric control points appear under /processing/output/.../atmospheric/... with different defaults (gain=10, bypass=true, distance=0). Both trees are present in the source.
Provenance
source_domains:
- docs.meyersound.com
source_urls:
- https://docs.meyersound.com/products/en/programming-guide---galileo-galaxy.html
- https://docs.meyersound.com/products/en/user-guide---galileo-galaxy.html
retrieved_at: 2026-05-13T07:42:59.056Z
last_checked_at: 2026-10-07T20:54:17.661Z
Verification Summary
verdict: verified
checked_at: 2026-10-07T20:54:17.661Z
matched_actions: 66
action_count: 66
confidence: medium
summary: "All 66 action units match source literals and shapes; the transport ports are supported and auth is honestly UNRESOLVED; only two regex examples are unrepresented. (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "/processing/output/\\d+/mute=false"
- "/processing/(in\\|out)put/1/mute=true"
- "hardware features (analog vs. AES I/O counts, AVB stream counts) differ across the four models in the family; the OSC/ASCII control surface described here is shared, but per-model input/output channel counts are device-specific. Source explicitly notes entity defaults such as input_channel_count and output_channel_count are device-specific."
- "source documents no multi-step macro sequences."
- "source contains no safety warnings, interlock procedures, or"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0