Summary
AtlasIED Atmosphere AZM4 (4-zone) and AZM8 (8-zone) audio DSP/mixer controllers. Control via JSON-RPC 2.0 over TCP (port 5321) for parameter set/get/subscribe; UDP (port 3131) for metering subscription updates. Parameter names are dynamically assigned during AZM4/AZM8 configuration and may change when zones, sources, mixes, or groups are added/removed.
Transport
protocols:
- tcp
- udp
addressing:
port: 5321
udp_port: 3131
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- queryable # inferred: "get" method returns current parameter values
- levelable # inferred: Gain parameters with -80..0 dB range, pct support
- routable # inferred: ZoneSource and GroupSource route sources to zones/groups
Actions
actions:
- id: set_source_gain
label: Set Source Gain
kind: action
description: Set gain for a source channel
params:
- name: param
type: string
description: "Source parameter name e.g. SourceGain_0"
- name: val
type: integer
description: "Gain in dB (-80 to 0)"
- name: pct
type: integer
description: "Gain as percentage (0 to 100)"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_source_mute
label: Set Source Mute
kind: action
description: Mute or unmute a source channel
params:
- name: param
type: string
description: "Source mute parameter name e.g. SourceMute_2"
- name: val
type: integer
description: "0=unmute, 1=mute"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_mix_gain
label: Set Mix Gain
kind: action
description: Set gain for a mix bus
params:
- name: param
type: string
description: "Mix parameter name e.g. MixGain_0"
- name: val
type: integer
description: "Gain in dB (-80 to 0)"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_mix_mute
label: Set Mix Mute
kind: action
description: Mute or unmute a mix bus
params:
- name: param
type: string
description: "Mix mute parameter name e.g. MixMute_0"
- name: val
type: integer
description: "0=unmute, 1=mute"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_zone_gain
label: Set Zone Gain
kind: action
description: Set gain for a zone
params:
- name: param
type: string
description: "Zone parameter name e.g. ZoneGain_0"
- name: val
type: integer
description: "Gain in dB (-80 to 0)"
- name: pct
type: integer
description: "Gain as percentage (0 to 100)"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_zone_mute
label: Set Zone Mute
kind: action
description: Mute or unmute a zone
params:
- name: param
type: string
description: "Zone mute parameter name e.g. ZoneMute_0"
- name: val
type: integer
description: "0=unmute, 1=mute"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_zone_source
label: Set Zone Source
kind: action
description: Route a source to a zone
params:
- name: param
type: string
description: "Zone source parameter name e.g. ZoneSource_0"
- name: val
type: integer
description: "Source index (-1 = no source, 0-based index from SourceName)"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_group_gain
label: Set Group Gain
kind: action
description: Set gain for a group
params:
- name: param
type: string
description: "Group parameter name e.g. GroupGain_0"
- name: val
type: integer
description: "Gain in dB (-80 to 0)"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_group_mute
label: Set Group Mute
kind: action
description: Mute or unmute a group
params:
- name: param
type: string
description: "Group mute parameter name e.g. GroupMute_0"
- name: val
type: integer
description: "0=unmute, 1=mute"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_group_source
label: Set Group Source
kind: action
description: Route a source to a group
params:
- name: param
type: string
description: "Group source parameter name e.g. GroupSource_0"
- name: val
type: integer
description: "Source index (-1 = no source, 0-based index from SourceName)"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_group_active
label: Set Group Active
kind: action
description: Activate (combine) or deactivate (uncombine) zones in a group
params:
- name: param
type: string
description: "Group active parameter name e.g. GroupActive_0"
- name: val
type: integer
description: "0=deactivate, 1=activate"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: bump_gain
label: Bump Gain
kind: action
description: Relative gain adjustment on any gain-type parameter
params:
- name: param
type: string
description: "Parameter name e.g. SourceGain_0"
- name: val
type: integer
description: "Relative change in dB"
command: '{"jsonrpc":"2.0","method":"bmp","params":[{"param":"{param}","val":{val}}]}\n'
- id: play_message
label: Play Message
kind: action
description: Trigger a pre-configured message/paging announcement
params:
- name: param
type: string
description: "PlayMessage parameter name e.g. PlayMessage_0"
- name: val
type: integer
description: "1 to trigger playback"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: recall_routine
label: Recall Routine
kind: action
description: Recall a pre-configured routine
params:
- name: param
type: string
description: "RecallRoutine parameter name e.g. RecallRoutine_0"
- name: val
type: integer
description: "1 to trigger recall"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: recall_scene
label: Recall Scene
kind: action
description: Recall a pre-configured scene
params:
- name: param
type: string
description: "RecallScene parameter name e.g. RecallScene_0"
- name: val
type: integer
description: "1 to trigger recall"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: recall_gpo_preset
label: Recall GPO Preset
kind: action
description: Recall a GPO preset
params:
- name: param
type: string
description: "RecallGpoPreset parameter name e.g. RecallGpoPreset_0"
- name: val
type: integer
description: "1 to trigger recall"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: set_bell_schedule
label: Set Today's Bell Schedule
kind: action
description: Select which bell schedule is active today
params:
- name: param
type: string
description: "TodaysBellSchedule parameter name e.g. TodaysBellSchedule_0"
- name: val
type: integer
description: "Bell schedule index (0-based from BellScheduleName)"
command: '{"jsonrpc":"2.0","method":"set","params":{"param":"{param}","val":{val}}}\n'
- id: subscribe
label: Subscribe to Parameter
kind: action
description: Subscribe to receive updates for one or more parameters
params:
- name: params
type: array
description: "Array of {param, fmt} objects"
command: '{"jsonrpc":"2.0","method":"sub","params":{params}}\n'
- id: unsubscribe
label: Unsubscribe from Parameter
kind: action
description: Unsubscribe from updates for one or more parameters
params:
- name: params
type: array
description: "Array of {param, fmt} objects"
command: '{"jsonrpc":"2.0","method":"unsub","params":{params}}\n'
- id: get_parameter
label: Get Parameter Value
kind: action
description: Get current value of a parameter at a point in time
params:
- name: param
type: string
description: "Parameter name e.g. ZoneGain_0"
- name: fmt
type: string
description: "Response format: val, pct, or str"
command: '{"jsonrpc":"2.0","method":"get","params":{"param":"{param}","fmt":"{fmt}"}}\n'
- id: keep_alive
label: Keep Alive
kind: action
description: Send keep-alive to prevent connection timeout. Send at least every 5 minutes.
params: []
command: '{"jsonrpc":"2.0","method":"get","params":{"param":"KeepAlive","fmt":"str"}}\n'
Feedbacks
feedbacks:
- id: source_meter
type: number
description: Source audio level in dB (-80 to 0)
transport: udp
- id: mix_meter
type: number
description: Mix bus audio level in dB (-80 to 0)
transport: udp
- id: zone_meter
type: number
description: Zone audio level in dB (-80 to 0)
transport: udp
- id: group_meter
type: number
description: Group audio level in dB (-80 to 0)
transport: udp
- id: loud_noise
type: enum
values: [0, 1]
description: Loud noise detection flag (read-only)
- id: gpo_state
type: enum
values: [0, 1]
description: GPO state (read-only)
- id: zone_grouped
type: enum
values: [0, 1]
description: Whether zone is included in a group (read-only)
- id: firmware_version
type: string
description: Device firmware version (read-only)
Variables
variables:
- id: source_gain
description: Source gain in dB (-80 to 0) or percent (0 to 100)
type: integer
writable: true
- id: source_mute
description: Source mute state (0=unmute, 1=mute)
type: integer
writable: true
- id: mix_gain
description: Mix gain in dB (-80 to 0) or percent (0 to 100)
type: integer
writable: true
- id: mix_mute
description: Mix mute state (0=unmute, 1=mute)
type: integer
writable: true
- id: zone_gain
description: Zone gain in dB (-80 to 0) or percent (0 to 100)
type: integer
writable: true
- id: zone_mute
description: Zone mute state (0=unmute, 1=mute)
type: integer
writable: true
- id: zone_source
description: Zone routed source index (-1=none)
type: integer
writable: true
- id: group_gain
description: Group gain in dB (-80 to 0) or percent (0 to 100)
type: integer
writable: true
- id: group_mute
description: Group mute state (0=unmute, 1=mute)
type: integer
writable: true
- id: group_source
description: Group routed source index (-1=none)
type: integer
writable: true
- id: group_active
description: Group combine state (0=inactive, 1=active)
type: integer
writable: true
Events
events:
- id: subscription_update_tcp
description: Parameter value update pushed via TCP for subscribed non-meter parameters
method: update
format: '{"jsonrpc":"2.0","method":"update","params":[{"param":"{name}","val":{value}}]}'
- id: subscription_update_udp
description: Meter value update pushed via UDP for subscribed meter parameters
method: update
format: '{"jsonrpc":"2.0","method":"update","params":[{"param":"{name}","val":{value}}]}'
- id: error_response
description: Error response from device
method: error
format: '{"jsonrpc":"2.0","method":"error",...}'
# UNRESOLVED: error response payload format not documented beyond method name
Macros
# UNRESOLVED: no multi-step macro sequences documented in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures in source
Notes
- Parameter names are dynamic — assigned during AZM4/AZM8 configuration. Removing/adding zones, sources, mixes, groups, or messages may reassign parameter names. Programming should be done after configuration is finalized.
- Multiple parameters can be addressed in a single message by using an array for
params. - Messages that normally generate no response (e.g.
unsub, orset/bmpon non-subscribed params) can be forced to respond by appending an"id"field. - TCP connection termination (by client or device) drops all subscriptions for that client. Resubscribe in the next session.
- Keep-alive required at least every 5 minutes on idle TCP/UDP connections to avoid termination.
- Read-only parameters (*Name, ZoneGrouped, LoudNoise, GpoState, FirmwareVersion) accept only
sub,unsub, andget— notsetorbmp. - Action parameters (PlayMessage, RecallScene, RecallRoutine, RecallGpoPreset) trigger actions on
set/bmpbut their value does not represent action state. Subscribing yields one update when the action fires. - AZM4 = 4-zone model, AZM8 = 8-zone model. Protocol is identical between models.
Provenance
source_domains:
- atlasied.com
source_urls:
- https://www.atlasied.com/ATS006993-B-AZM4-AZM8-3rd-Party-Control.pdf
retrieved_at: 2026-04-29T17:13:54.183Z
last_checked_at: 2026-06-02T21:39:55.597Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:39:55.597Z
matched_actions: 21
action_count: 21
confidence: medium
summary: "Complete JSON-RPC 2.0 protocol with parameter control, metering, and subscription support (9 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "no power on/off commands found — device may lack remote power control"
- "no error response format documented beyond method name \"error\""
- "error response payload format not documented beyond method name"
- "no multi-step macro sequences documented in source"
- "no safety warnings or interlock procedures in source"
- "maximum number of simultaneous TCP connections not stated"
- "error response format beyond method name \"error\" not documented"
- "UDP metering subscription response format details beyond example"
- "no power on/off commands documented"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0