Summary

Software toolchain providing VS Code scripting access to the BSS Audio MUSE (Mojo Universal Scripting Engine) Controller. Document covers ICSP, HiQNet, and HControl device bindings, CLI commands, and Thing API used to drive downstream AV devices from scripts. Underlying control plane is TCP/IP; ICSP URL mode listens on TCP 1319 (1320 for ICSPS).

Transport

protocols:
  - tcp
addressing:
  port: 1319  # ICSP URL Mode default; ICSPS uses 1320
auth:
  type: ssh  # SSH login required for CLI on MUSE Controller

Traits

- queryable       # inferred: device:parameters / device:get commands present

Actions

# UNRESOLVED: source describes programmatic API (Thing API, device:invoke) and
# a general CLI command surface, but does not enumerate device-specific
# commands for the MUSE extension itself. Concrete action payloads depend on
# attached peripheral descriptor files.

- id: device_invoke
  label: Invoke Command on Device
  kind: action
  command: "device:invoke {instance_id} {command_name} [{arguments}]"
  params:
    - name: instance_id
      type: string
      description: Device instance id (e.g. dvDVD)
    - name: command_name
      type: string
      description: Command path (e.g. power/0/cycle)
    - name: arguments
      type: string
      description: "Optional name=value pairs"

- id: device_set_parameter
  label: Set Device Parameter
  kind: action
  command: "device:set {instance_id} {parameter_path} {value}"
  params:
    - name: instance_id
      type: string
    - name: parameter_path
      type: string
      description: e.g. discTransport/0/discTransport
    - name: value
      type: string

- id: device_get_parameter
  label: Get Device Parameter
  kind: query
  command: "device:get {instance_id} {parameter_path}"
  params:
    - name: instance_id
      type: string
    - name: parameter_path
      type: string

- id: device_list
  label: List Devices
  kind: query
  command: "device:list"

- id: device_commands
  label: List Device Commands
  kind: query
  command: "device:commands {instance_id}"
  params:
    - name: instance_id
      type: string

- id: device_parameters
  label: List Device Parameters
  kind: query
  command: "device:parameters {instance_id}"
  params:
    - name: instance_id
      type: string

- id: driver_describe
  label: Describe Device Driver
  kind: query
  command: "driver:describe [-j] {instance_id}"
  params:
    - name: json
      type: boolean
      description: Pass -j to return raw JSON descriptor

- id: log_tail
  label: Tail Log Stream
  kind: query
  command: "log:tail"

- id: network_ip
  label: Get/Set Network IP
  kind: action
  command: "network:ip [options]"
  params:
    - name: ethinterface
      type: string
      description: "eth0 or eth1"
    - name: mode
      type: string
      description: "dhcp | static | ipv6d | ipv6s"
    - name: subnet
      type: string
    - name: gateway
      type: string
    - name: ip
      type: string
    - name: enable
      type: boolean
      description: Enable eth1
    - name: disable
      type: boolean
      description: Disable eth1

Feedbacks

- id: device_online
  label: Device Online State
  type: boolean
  description: "isOnline() / isOffline() method on Device handle; observable via .online()/.offline() callbacks"

Variables

# UNRESOLVED: parameter schema is descriptor-driven and varies per attached device.

Events

- id: parameter_update
  label: Parameter Change
  description: |
    Delivered to .watch() callback. Fields: path (string), id (string),
    value (variant), newValue (variant), oldValue (variant), normalized (float 0..1),
    source (object ref).
  fields:
    - name: path
      type: string
    - name: id
      type: string
    - name: value
      type: variant
    - name: newValue
      type: variant
    - name: oldValue
      type: variant
    - name: normalized
      type: float
    - name: source
      type: object

- id: device_event
  label: Device Event
  description: |
    Delivered to .listen() callback. Fields: path (string), id (string),
    arguments (array), oldValue (variant), source (object ref).
  fields:
    - name: path
      type: string
    - name: id
      type: string
    - name: arguments
      type: array
    - name: oldValue
      type: variant
    - name: source
      type: object

- id: timeline_expired
  label: Timeline Expired
  description: |
    Delivered to tickListener. tlEvent.arguments fields: sequence, time, repetition.
  fields:
    - name: sequence
      type: integer
    - name: time
      type: integer
    - name: repetition
      type: integer

Macros

# UNRESOLVED: no multi-step sequences described.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings or interlock procedures.

Notes

  • MUSE extension is a software developer surface to the MUSE Controller; it is not a standalone controllable AV device.
  • ICSP URL Mode: peripherals connect to MUSE Controller on TCP 1319 (1320 for ICSPS); controller-initiated Listen Mode uses same port.
  • HControl devices: controller connects to device-selected driver com.amx.thing.hcontrol.generic; source gives no default port.
  • SSH login required to reach CLI (web server, SSH, or Virtual COM via USB-C).
  • Timeline service: tick.start([times], relative, repetition) where repetition -1 = forever, 0 = once.
  • Parity enum example on serial port: NONE, EVEN, ODD, MARK, SPACE (default NONE).
  • Serial poll example byte stream from log:tail: STX>PLYcFWD 17ETX (request) / STX >PLYsFWD 27 ETX (ack) — vendor-specific framing for downstream device, not for the MUSE extension itself.

Provenance

source_domains:
  - dextra.com.mx
  - amx.com
source_urls:
  - https://dextra.com.mx/img/files/PRODUCTOS/AMX/05-MU-1000/Programming-Guide---AMX-MUSE.pdf
  - https://www.amx.com/en/products/muse-extension-for-vscode
retrieved_at: 2026-06-30T02:59:18.902Z
last_checked_at: 2026-06-30T06:58:27.612Z

Verification Summary

verdict: verified
checked_at: 2026-06-30T06:58:27.612Z
matched_actions: 9
action_count: 9
confidence: medium
summary: "All 9 spec actions match literal CLI commands in source; TCP/SSH transport verified; complete coverage of MUSE CLI and Thing API. (6 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "spec describes programming interface rather than a single end-device protocol. Action surface is bound to attached peripheral descriptors, not enumerated here."
- "source describes programmatic API (Thing API, device:invoke) and"
- "parameter schema is descriptor-driven and varies per attached device."
- "no multi-step sequences described."
- "source contains no safety warnings or interlock procedures."
- "firmware/protocol version of MUSE Controller not stated. Descriptor files are device-specific; concrete action enumeration requires a target peripheral."

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