Summary

The Audac MTX48 and MTX88 are audio matrix processors (4-in/8-out and 8-in/8-out respectively) controllable over RS-232, RS-485, or TCP/IP. The spec covers the full ASCII command set for routing, per-zone volume, bass, treble, mute, querying state, saving settings, and resetting to factory defaults.

Transport

protocols:
  - serial
  - tcp
addressing:
  port: 5001  # TCP/IP port stated in source
serial:
  baud_rate: 19200  # stated: 19200 baud
  data_bits: 8      # stated: 8 data bits
  parity: none      # stated: no parity
  stop_bits: 1      # stated: 1 stop bit
  flow_control: none  # UNRESOLVED: flow control not stated in source
auth:
  type: none  # inferred: no auth procedure in source

Traits

- routable     # inferred from SR/SRU/SRD routing commands
- levelable    # inferred from volume, bass, treble commands
- queryable    # inferred from GV/GR/GM/GB/GT/GZI query commands

Actions

- id: set_volume_zone
  label: Set Output Volume (per zone)
  kind: action
  command: "#|X001|web|SV{x}|{level}|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)
    - name: level
      type: integer
      description: Volume in negative dB (0 = max, 70 = min)

- id: volume_up_zone
  label: Volume Up 3dB (per zone)
  kind: action
  command: "#|X001|web|SVU0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: volume_down_zone
  label: Volume Down 3dB (per zone)
  kind: action
  command: "#|X001|web|SVD0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: set_routing_zone
  label: Set Routing / Select Input (per zone)
  kind: action
  command: "#|X001|web|SR{x}|{input}|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)
    - name: input
      type: integer
      description: Input number (0-8)

- id: routing_up_zone
  label: Routing Up (per zone)
  kind: action
  command: "#|X001|web|SRU0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: routing_down_zone
  label: Routing Down (per zone)
  kind: action
  command: "#|X001|web|SRD0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: set_bass_zone
  label: Set Bass (per zone)
  kind: action
  command: "#|X001|web|SB0{x}|{value}|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)
    - name: value
      type: integer
      description: Bass level 0-14 (0=-14dB, 7=0dB, 14=+14dB, 2dB steps)

- id: set_treble_zone
  label: Set Treble (per zone)
  kind: action
  command: "#|X001|web|ST0{x}|{value}|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)
    - name: value
      type: integer
      description: Treble level 0-14 (0=-14dB, 7=0dB, 14=+14dB, 2dB steps)

- id: set_mute_zone
  label: Set Mute (per zone)
  kind: action
  command: "#|X001|web|SM0{x}|{state}|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)
    - name: state
      type: enum
      description: Mute state
      values: [0, 1]
      # 0 = disabled, 1 = output muted

- id: get_volume_all
  label: Get Volume All Zones
  kind: query
  command: "#|X001|web|GVALL|0|U|{return}"
  params: []

- id: get_routing_all
  label: Get Routing All Zones
  kind: query
  command: "#|X001|web|GRALL|0|U|{return}"
  params: []

- id: get_mute_all
  label: Get Mute All Zones
  kind: query
  command: "#|X001|web|GMALL|0|U|{return}"
  params: []

- id: get_volume_zone
  label: Get Volume (per zone)
  kind: query
  command: "#|X001|web|GV0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: get_routing_zone
  label: Get Routing (per zone)
  kind: query
  command: "#|X001|web|GR0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: get_mute_zone
  label: Get Mute (per zone)
  kind: query
  command: "#|X001|web|GM0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: get_bass_zone
  label: Get Bass (per zone)
  kind: query
  command: "#|X001|web|GB0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: get_treble_zone
  label: Get Treble (per zone)
  kind: query
  command: "#|X001|web|GT0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: get_zone_info
  label: Get Full Zone Info (per zone)
  kind: query
  command: "#|X001|web|GZI0{x}|0|U|{return}"
  params:
    - name: x
      type: integer
      description: Zone number (1-8)

- id: save_settings
  label: Save Current Zone Settings
  kind: action
  command: "#|X001|web|SAVE|0|U|{return}"
  params: []

- id: factory_default
  label: Reset to Factory Defaults
  kind: action
  command: "#|X001|web|DEF|0|U|{return}"
  params: []

- id: get_firmware_version
  label: Get Firmware Version
  kind: query
  command: "#|X001|web|GSV|0|U|{return}"
  params: []

Feedbacks

- id: command_ack
  type: string
  description: MTX echoes command back with '+' as argument to acknowledge
  example: "#|web|X001|SV2|+|U|{return}"

- id: volume_update
  type: string
  description: Unsolicited volume update broadcast to all clients (per zone)
  example: "#|ALL|X001|V01|27|U|{return}"

- id: routing_update
  type: string
  description: Unsolicited routing update broadcast to all clients (per zone)
  example: "#|ALL|X001|R01|3|3dc5|{return}"

- id: bass_update
  type: string
  description: Unsolicited bass update broadcast to all clients (per zone)
  example: "#|ALL|X001|B01|8|9dc0|{return}"

- id: treble_update
  type: string
  description: Unsolicited treble update broadcast to all clients (per zone)
  example: "#|ALL|X001|T01|5|fbc6|{return}"

- id: mute_update
  type: string
  description: Unsolicited mute update broadcast to all clients (per zone)
  example: "#|ALL|X001|M01|1|32c6|{return}"

- id: volume_zone_state
  type: string
  description: Per-zone volume query response (Vxx|value)
  example: "#|web|X001|V01|20|U|{return}"

- id: routing_zone_state
  type: string
  description: Per-zone routing query response (Rxx|input)
  example: "#|web|X001|R01|3|U|{return}"

- id: mute_zone_state
  type: string
  description: Per-zone mute query response (Mxx|state)
  example: "#|web|X001|M01|0|U|{return}"

- id: bass_zone_state
  type: string
  description: Per-zone bass query response (Bxx|value)
  example: "#|web|X001|B01|07|U|{return}"

- id: treble_zone_state
  type: string
  description: Per-zone treble query response (Txx|value)
  example: "#|web|X001|T01|07|U|{return}"

- id: zone_full_info
  type: string
  description: Per-zone combined info response (ZIxx|vol^input^mute^bass^treble)
  example: "#|web|X001|ZI01|20^3^0^07^07|U|{return}"

- id: volume_all_zones
  type: string
  description: All-zones volume response (VALL|zones joined by '^')
  example: "#|web|X001|VALL|40^40^20^20^20^20^20^20|U|{return}"

- id: routing_all_zones
  type: string
  description: All-zones routing response (RALL|inputs joined by '^')
  example: "#|web|X001|RALL|3^1^1^1^1^1^1^1|U|{return}"

- id: mute_all_zones
  type: string
  description: All-zones mute response (MALL|states joined by '^')
  example: "#|web|X001|MALL|0^0^0^0^0^0^0^0|U|{return}"

- id: firmware_version
  type: string
  description: Firmware version response
  example: "#|web|X001|SV|V1.1|U|{return}"

Variables

# No discrete variables beyond the parameterized actions above.
# UNRESOLVED: remove this section if not applicable

Events

- id: volume_change_broadcast
  description: Broadcast to all clients when volume changes in any zone
  payload: "#|ALL|X001|V{xx}|{value}|{checksum}|{return}"

- id: routing_change_broadcast
  description: Broadcast to all clients when routing changes in any zone
  payload: "#|ALL|X001|R{xx}|{input}|{checksum}|{return}"

- id: bass_change_broadcast
  description: Broadcast to all clients when bass changes in any zone
  payload: "#|ALL|X001|B{xx}|{value}|{checksum}|{return}"

- id: treble_change_broadcast
  description: Broadcast to all clients when treble changes in any zone
  payload: "#|ALL|X001|T{xx}|{value}|{checksum}|{return}"

- id: mute_change_broadcast
  description: Broadcast to all clients when mute changes in any zone
  payload: "#|ALL|X001|M{xx}|{state}|{checksum}|{return}"

Macros

# UNRESOLVED: no multi-step sequences described in source

Safety

confirmation_required_for:
  - factory_default  # DEF resets ALL zone and device settings
interlocks: []
# UNRESOLVED: no explicit safety warnings or interlock procedures documented in source

Notes

  • Device address is fixed at X001 and cannot be changed.
  • Checksum is CRC-16 calculated over everything except the leading '#'. The literal character 'U' is always accepted as a valid checksum placeholder.
  • Return terminator is CR+LF (0x0d 0x0a).
  • Source address field max length 4 characters; cannot contain '|' or '#'.
  • MTX accepts max 1 simultaneous TCP/IP connection.
  • Volume, routing, and tone settings are lost on power-off unless explicitly saved with SAVE command.
  • Website-configured settings are saved automatically on every change.
  • Per documentation examples, GRALL query uses the command name GVALL in the request but RALL in the response (likely a typo in source).
  • Inputs disabled in the website input selection menu are skipped during SRU/SRD routing up/down operations.

Provenance

source_domains:
  - downloads.pvs.global
source_urls:
  - https://downloads.pvs.global/downloads/audac/products/manuals/MTX_Commands_Manual.pdf
retrieved_at: 2026-05-17T10:48:34.167Z
last_checked_at: 2026-08-19T08:27:37.161Z

Verification Summary

verdict: verified
checked_at: 2026-08-19T08:27:37.161Z
matched_actions: 21
action_count: 21
confidence: medium
summary: "All 21 spec actions (SVx, SVU0x, SVD0x, SRx, SRU0x, SRD0x, SB0x, ST0x, SM0x, GVALL, GRALL, GMALL, GV0x, GR0x, GM0x, GB0x, GT0x, GZI0x, SAVE, DEF, GSV) appear verbatim in the source with correct shapes; transport values port 5001, 19200 baud, 8 data bits, no parity, 1 stop bit also match source verbatim. (6 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "full enumeration of zones per model (MTX48 vs MTX88 zone counts)"
- "flow control not stated in source"
- "remove this section if not applicable"
- "no multi-step sequences described in source"
- "no explicit safety warnings or interlock procedures documented in source"
- "exact zone count differences between MTX48 and MTX88 not clarified in source"

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