Summary

Class D amplifier with DSP. Supports RS-232 serial and TCP/IP (Telnet) control. Same command/response protocol over both transports: ASCII text commands starting with = and ending with !. Supports volume, mute, EQ, compression, crossover, presets, sleep mode, and VU metering.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 23  # default; configurable: 23, 10001-10008, 50001-50008
serial:
  baud_rate: 9600  # default; configurable: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
  data_bits: 8  # default; configurable: 7 or 8
  parity: none  # default; configurable: even, odd
  stop_bits: 1  # default; configurable: 1 or 2
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable      # reboot command present
- levelable      # volume, EQ, compression, makeup gain
- routable       # input selection (dienab), speaker offset
- queryable      # get commands for all parameters

Actions

- id: set_output_volume
  label: Set Output Volume
  kind: action
  params:
    - name: value
      type: integer
      description: Output volume in ½ dB steps, range -128 to 48 (-64 dB to +24 dB). -128 = mute.
  command: "=sov:{value}!"

- id: set_output_mute
  label: Set Output Mute
  kind: action
  params:
    - name: value
      type: integer
      enum: [0, 1]
      description: 0 = unmute, 1 = mute
  command: "=somute:{value}!"

- id: set_digital_input_volume
  label: Set Digital Input Volume
  kind: action
  params:
    - name: value
      type: integer
      description: Digital input volume in ½ dB steps, range -128 to 0 (-64 dBFS to 0 dBFS). -128 = mute.
  command: "=siv0:{value}!"

- id: set_analog_input_volume
  label: Set Analog Input Volume
  kind: action
  params:
    - name: value
      type: integer
      description: Analog input volume in ½ dB steps, range -128 to 0 (-64 dBFS to 0 dBFS). -128 = mute.
  command: "=siv1:{value}!"

- id: set_digital_input_mute
  label: Set Digital Input Mute
  kind: action
  params:
    - name: value
      type: integer
      enum: [0, 1]
      description: 0 = unmute, 1 = mute
  command: "=simute0:{value}!"

- id: set_analog_input_mute
  label: Set Analog Input Mute
  kind: action
  params:
    - name: value
      type: integer
      enum: [0, 1]
      description: 0 = unmute, 1 = mute
  command: "=simute1:{value}!"

- id: set_input_enable_mask
  label: Set Digital Input Enable Mask
  kind: action
  params:
    - name: value
      type: integer
      enum: [1, 2, 3]
      description: "1 = S/PDIF coax only, 2 = TOSLINK optical only, 3 = both enabled"
  command: "=sdienab:{value}!"

- id: set_output_eq_frequency
  label: Set Output EQ Frequency
  kind: action
  params:
    - name: band
      type: integer
      enum: [0, 1, 2, 3, 4]
      description: "EQ band: 0=bass, 1=mid1, 2=mid2, 3=mid3, 4=treble"
    - name: frequency
      type: integer
      description: Frequency in Hz, range 20-20000. Recommended values: 20,25,32,40,50,63,80,100,125,160,200,250,315,400,500,630,800,1000,1250,1600,2000,2500,3150,4000,5000,6300,8000,10000,12500,16000,20000
  command: "=s@eqf{band}:{frequency}!"

- id: set_output_eq_boost_cut
  label: Set Output EQ Boost/Cut
  kind: action
  params:
    - name: band
      type: integer
      enum: [0, 1, 2, 3, 4]
      description: "EQ band: 0=bass, 1=mid1, 2=mid2, 3=mid3, 4=treble"
    - name: value
      type: integer
      description: Boost/cut in ½ dB steps, range -24 to 24 (-12 dB to +12 dB). 0 = flat.
  command: "=seq{band}:{value}!"

- id: set_output_eq_q
  label: Set Output EQ Q
  kind: action
  params:
    - name: band
      type: integer
      enum: [1, 2, 3]
      description: "EQ band: 1=mid1, 2=mid2, 3=mid3"
    - name: value
      type: integer
      description: Q in 1/10 steps, range 1 to 100 (0.1 to 10.0). Recommended: 15 (1.5).
  command: "=seqq{band}:{value}!"

- id: set_compressor_threshold
  label: Set Compressor Threshold
  kind: action
  params:
    - name: value
      type: integer
      description: Threshold in ½ dB steps, range -128 to 0 (-64 dBFS to 0 dBFS). 0 = no compression.
  command: "=scpthr:{value}!"

- id: set_compressor_ratio
  label: Set Compressor Ratio
  kind: action
  params:
    - name: value
      type: integer
      description: Ratio in 1/10 steps, range 10 to 100 (1.0:1 to 10.0:1). 10 = no compression.
  command: "=scprat:{value}!"

- id: set_compressor_attack
  label: Set Compressor Attack Time
  kind: action
  params:
    - name: value
      type: integer
      description: Attack time in 2 msec steps, range 1 to 250 (2 msec to 500 msec).
  command: "=scpatt:{value}!"

- id: set_compressor_release
  label: Set Compressor Release Time
  kind: action
  params:
    - name: value
      type: integer
      description: Release time in 10 msec steps, range 1 to 250 (10 msec to 2500 msec).
  command: "=scprel:{value}!"

- id: set_compressor_makeup_gain
  label: Set Compressor Make-up Gain
  kind: action
  params:
    - name: value
      type: integer
      description: Make-up gain in ½ dB steps, range 0 to 48 (0 dB to +24 dB).
  command: "=scpmak:{value}!"

- id: set_stereo_effect
  label: Set Stereo Effect
  kind: action
  params:
    - name: value
      type: integer
      description: Stereo effect, range -100 to +100. +100 = widened, 0 = normal, -100 = mono.
  command: "=ssteff:{value}!"

- id: set_left_right_crossover_filter_type
  label: Set L/R Crossover Filter Type
  kind: action
  params:
    - name: value
      type: integer
      enum: [0, 1, 2, 3]
      description: "0=none, 1=Butterworth, 2=Linkwitz-Riley, 3=Bessel"
  command: "=sxomtype:{value}!"

- id: set_subwoofer_crossover_filter_type
  label: Set Sub Crossover Filter Type
  kind: action
  params:
    - name: value
      type: integer
      enum: [0, 1, 2, 3]
      description: "0=none, 1=Butterworth, 2=Linkwitz-Riley, 3=Bessel"
  command: "=sxostype:{value}!"

- id: set_left_right_crossover_frequency
  label: Set L/R Crossover Frequency
  kind: action
  params:
    - name: value
      type: integer
      description: Crossover edge frequency in Hz, range 20 to 20000.
  command: "=sxomf:{value}!"

- id: set_subwoofer_crossover_frequency
  label: Set Sub Crossover Frequency
  kind: action
  params:
    - name: value
      type: integer
      description: Crossover edge frequency in Hz, range 20 to 20000.
  command: "=sxosf:{value}!"

- id: set_crossover_high_pass_filter
  label: Set Crossover High-Pass Filter
  kind: action
  params:
    - name: value
      type: integer
      enum: [0, 1]
      description: "0 = 40 Hz HPF off, 1 = 40 Hz HPF on"
  command: "=sxohpf:{value}!"

- id: set_left_right_speaker_offset
  label: Set L/R Speaker Offset
  kind: action
  params:
    - name: value
      type: integer
      description: Offset in ½ dB steps, range -128 to 48 (-64 dB to +24 dB). -128 = mute.
  command: "=sspmoff:{value}!"

- id: set_subwoofer_speaker_offset
  label: Set Sub Speaker Offset
  kind: action
  params:
    - name: value
      type: integer
      description: Offset in ½ dB steps, range -128 to 48 (-64 dB to +24 dB). -128 = mute.
  command: "=sspsoff:{value}!"

- id: load_preset
  label: Load Preset
  kind: action
  params:
    - name: value
      type: integer
      description: "Preset number: 1-4 (user), 11-13 (factory). 11=2.0 stereo, 12=3.0 mono, 13=2.1 stereo"
  command: "=slprs:{value}!"

- id: save_preset
  label: Save Preset
  kind: action
  params:
    - name: value
      type: integer
      description: "User preset number: 1-4"
  command: "=ssprs:{value}!"

- id: reboot
  label: Reboot Amplifier
  kind: action
  params:
    - name: value
      type: integer
      description: Must be 1.
  command: "=sreboot:1!"

- id: set_sleep_delay
  label: Set Sleep Delay
  kind: action
  params:
    - name: value
      type: integer
      description: Delay in minutes, range 0 to 120. 0 = disabled.
  command: "=ssleepdly:{value}!"

- id: set_sleep_threshold
  label: Set Sleep Threshold
  kind: action
  params:
    - name: value
      type: integer
      description: Audio level threshold in dBFS, range -80 to -30.
  command: "=ssleepthr:{value}!"

- id: set_serial_baud_rate
  label: Set Serial Baud Rate
  kind: action
  params:
    - name: value
      type: integer
      enum: [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200]
      description: Baud rate. Takes effect after next power-on or reboot.
  command: "=sserbaud:{value}!"

- id: set_serial_data_format
  label: Set Serial Data Format
  kind: action
  params:
    - name: value
      type: string
      enum: ["8N1", "8N2", "7E1", "7E2", "7O1", "7O2"]
      description: "8N1=8bit/no parity/1stop, 8N2=8/none/2, 7E1=7/even/1, 7E2=7/even/2, 7O1=7/odd/1, 7O2=7/odd/2. Takes effect after next power-on or reboot."
  command: "=sserfmt:{value}!"

- id: set_network_ip_address
  label: Set Network IP Address
  kind: action
  params:
    - name: value
      type: string
      description: Static IP address (e.g. "10.1.2.3"). Use "0.0.0.0" for dynamic (DHCP/BOOTP/AutoIP). Takes effect after next power-on or reboot.
  command: "=snetip:{value}!"

- id: set_network_subnet_mask
  label: Set Network Subnet Mask
  kind: action
  params:
    - name: value
      type: string
      description: Subnet mask (e.g. "255.255.255.0"). Use "0.0.0.0" for dynamic IP. Takes effect after next power-on or reboot.
  command: "=snetsubm:{value}!"

- id: set_network_gateway
  label: Set Network Gateway
  kind: action
  params:
    - name: value
      type: string
      description: Gateway IP address. Use "0.0.0.0" for dynamic IP. Takes effect after next power-on or reboot.
  command: "=snetgw:{value}!"

- id: set_network_telnet_port
  label: Set Network Telnet Port
  kind: action
  params:
    - name: value
      type: integer
      enum: [23, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008]
      description: TCP port for Telnet server. Takes effect after next power-on or reboot.
  command: "=snetport:{value}!"

- id: set_vu_meter_rate
  label: Set VU Meter Rate
  kind: action
  params:
    - name: value
      type: integer
      description: VU reports per second, range 0 to 30. 0 = off.
  command: "=svurat:{value}!"
- id: step_output_volume
  label: Step Output Volume
  kind: action
  params:
    - name: value
      type: integer
      description: Relative output volume adjustment in ½ dB steps, range -12 to 12 (-6.0 dB to +6.0 dB). Amplifier responds with new absolute volume level.
  command: "=sovstep:{value}!"

- id: step_digital_input_volume
  label: Step Digital Input Volume
  kind: action
  params:
    - name: value
      type: integer
      description: Relative digital input volume adjustment in ½ dB steps, range -12 to 12 (-6.0 dB to +6.0 dB). Amplifier responds with new absolute volume level.
  command: "=siv0step:{value}!"

- id: step_analog_input_volume
  label: Step Analog Input Volume
  kind: action
  params:
    - name: value
      type: integer
      description: Relative analog input volume adjustment in ½ dB steps, range -12 to 12 (-6.0 dB to +6.0 dB). Amplifier responds with new absolute volume level.
  command: "=siv1step:{value}!"

Feedbacks

- id: output_volume
  type: integer
  description: Output volume in ½ dB steps, range -128 to 48. Responds to "=sov!" or "=gov!"
  values: [-128, 48]
  command: "=sov:{value}!"

- id: output_mute_state
  type: enum
  description: Output mute state. 0 = not muted, 1 = muted.
  values: [0, 1]
  command: "=somute:{value}!"

- id: digital_input_volume
  type: integer
  description: Digital input volume in ½ dB steps, range -128 to 0.
  command: "=siv0:{value}!"

- id: analog_input_volume
  type: integer
  description: Analog input volume in ½ dB steps, range -128 to 0.
  command: "=siv1:{value}!"

- id: digital_input_mute_state
  type: enum
  values: [0, 1]
  command: "=simute0:{value}!"

- id: analog_input_mute_state
  type: enum
  values: [0, 1]
  command: "=simute1:{value}!"

- id: digital_input_enable_mask
  type: enum
  values: [1, 2, 3]
  description: "1=S/PDIF only, 2=TOSLINK only, 3=both"
  command: "=sdienab:{value}!"

- id: boot_firmware_version
  type: string
  description: Boot firmware version. Format: major/minor combined (e.g. 2015 = v2.15).
  command: "=gverboot!"

- id: cpu_firmware_version
  type: string
  description: Main CPU firmware version. Same format as verboot.
  command: "=gvercpu!"

- id: dsp1_firmware_version
  type: string
  description: DSP1 firmware version. Same format as verboot.
  command: "=gverdsp1!"

- id: dsp2_firmware_version
  type: string
  description: DSP2 firmware version. Same format as verboot.
  command: "=gverdsp2!"

- id: all_configuration
  type: string
  description: Returns all configuration values as if a get was issued for each parameter. Does not include status or VU.
  command: "=gall!"

- id: assigned_ip_address
  type: string
  description: Dynamically assigned IP address (DHCP/BOOTP/AutoIP).
  command: "=gnetasgip!"

- id: assigned_subnet_mask
  type: string
  description: Dynamically assigned subnet mask.
  command: "=gnetasgsubm!"

- id: assigned_gateway
  type: string
  description: Dynamically assigned gateway address.
  command: "=gnetasggw!"

- id: mac_address
  type: string
  description: MAC address of network port.
  command: "=gnetmacaddr!"

- id: vu_meter_report
  type: string
  description: 4-character VU meter string. Characters: compressor RMS input, gain reduction, left peak, right peak. Values: 0-9, A-G (0 = <-65 dBFS, G = 0 dBFS).
  command: "=svurat:{rate}!"  # enables auto-reports at specified rate

Variables

- id: output_eq_frequency
  type: integer
  get_command: "=geqf{bands}!"
  set_command: "=seqf{bands}:{value}!"
  description: EQ band frequency in Hz. Bands 0-4 (bass, mid1, mid2, mid3, treble).
  range: [20, 20000]

- id: output_eq_boost_cut
  type: integer
  get_command: "=geq{bands}!"
  set_command: "=seq{bands}:{value}!"
  description: EQ boost/cut in ½ dB steps. Range -24 to 24.
  range: [-24, 24]

- id: output_eq_q
  type: integer
  get_command: "=geqq{bands}!"
  set_command: "=seqq{bands}:{value}!"
  description: EQ Q factor in 1/10 steps (0.1 to 10.0). Only mid bands 1-3 adjustable.
  range: [1, 100]

- id: compressor_threshold
  type: integer
  get_command: "=gcpthr!"
  set_command: "=scpthr:{value}!"
  description: Compressor threshold in ½ dB steps, range -128 to 0.
  range: [-128, 0]

- id: compressor_ratio
  type: integer
  get_command: "=gcprat!"
  set_command: "=scprat:{value}!"
  description: Compression ratio in 1/10 steps (1.0:1 to 10.0:1).
  range: [10, 100]

- id: compressor_attack
  type: integer
  get_command: "=gcpatt!"
  set_command: "=scpatt:{value}!"
  description: Attack time in 2 msec steps. Range 1-250.
  range: [1, 250]

- id: compressor_release
  type: integer
  get_command: "=gcprel!"
  set_command: "=scprel:{value}!"
  description: Release time in 10 msec steps. Range 1-250.
  range: [1, 250]

- id: compressor_makeup_gain
  type: integer
  get_command: "=gcpmak!"
  set_command: "=scpmak:{value}!"
  description: Make-up gain in ½ dB steps. Range 0-48.
  range: [0, 48]

- id: stereo_effect
  type: integer
  get_command: "=gsteff!"
  set_command: "=ssteff:{value}!"
  description: Stereo effect. Range -100 to +100. 0 = normal.
  range: [-100, 100]

- id: left_right_crossover_type
  type: enum
  get_command: "=gxomtype!"
  set_command: "=sxomtype:{value}!"
  values: [0, 1, 2, 3]
  description: "0=none, 1=Butterworth, 2=Linkwitz-Riley, 3=Bessel"

- id: subwoofer_crossover_type
  type: enum
  get_command: "=gxostype!"
  set_command: "=sxostype:{value}!"
  values: [0, 1, 2, 3]
  description: "0=none, 1=Butterworth, 2=Linkwitz-Riley, 3=Bessel"

- id: left_right_crossover_frequency
  type: integer
  get_command: "=gxomf!"
  set_command: "=sxomf:{value}!"
  description: Crossover frequency in Hz. Range 20-20000.
  range: [20, 20000]

- id: subwoofer_crossover_frequency
  type: integer
  get_command: "=gxosf!"
  set_command: "=sxosf:{value}!"
  description: Crossover frequency in Hz. Range 20-20000.
  range: [20, 20000]

- id: crossover_high_pass_filter
  type: enum
  get_command: "=gxohpf!"
  set_command: "=sxohpf:{value}!"
  values: [0, 1]
  description: "0 = 40 Hz HPF off, 1 = 40 Hz HPF on"

- id: left_right_speaker_offset
  type: integer
  get_command: "=gspmoff!"
  set_command: "=sspmoff:{value}!"
  description: Speaker offset in ½ dB steps. Range -128 to 48.
  range: [-128, 48]

- id: subwoofer_speaker_offset
  type: integer
  get_command: "=gspsoff!"
  set_command: "=sspsoff:{value}!"
  description: Speaker offset in ½ dB steps. Range -128 to 48.
  range: [-128, 48]

- id: sleep_delay
  type: integer
  get_command: "=gsleepdly!"
  set_command: "=ssleepdly:{value}!"
  description: Sleep delay in minutes. Range 0-120. 0 = disabled.
  range: [0, 120]

- id: sleep_threshold
  type: integer
  get_command: "=gsleepthr!"
  set_command: "=ssleepthr:{value}!"
  description: Sleep threshold in dBFS. Range -80 to -30.
  range: [-80, -30]

- id: serial_baud_rate
  type: enum
  get_command: "=gserbaud!"
  set_command: "=sserbaud:{value}!"
  values: [1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200]
  description: Serial baud rate. Takes effect after reboot.

- id: serial_data_format
  type: enum
  get_command: "=gserfmt!"
  set_command: "=sserfmt:{value}!"
  values: ["8N1", "8N2", "7E1", "7E2", "7O1", "7O2"]
  description: Serial data format. Takes effect after reboot.

- id: network_ip_address
  type: string
  get_command: "=gnetip!"
  set_command: "=snetip:{value}!"
  description: Network IP address. "0.0.0.0" = dynamic. Takes effect after reboot.

- id: network_subnet_mask
  type: string
  get_command: "=gnetsubm!"
  set_command: "=snetsubm:{value}!"
  description: Subnet mask. Takes effect after reboot.

- id: network_gateway
  type: string
  get_command: "=gnetgw!"
  set_command: "=snetgw:{value}!"
  description: Gateway IP. Takes effect after reboot.

- id: network_telnet_port
  type: enum
  get_command: "=gnetport!"
  set_command: "=snetport:{value}!"
  values: [23, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008]
  description: Telnet TCP port. Takes effect after reboot.

- id: vu_meter_rate
  type: integer
  get_command: "=gvurat!"
  set_command: "=svurat:{value}!"
  description: VU reports per second. Range 0-30. 0 = off.
  range: [0, 30]

Events

# UNRESOLVED: the source describes no unsolicited event messages.
# VU meter reports are sent automatically when vurat is set > 0, but only in response to a prior set command.

Macros

# UNRESOLVED: no explicit multi-step macros described in source

Safety

confirmation_required_for:
  - reboot  # command reboots device; may cause audio dropout
interlocks: []
# Output volume levels above +12.5 dB should be used with caution (per source).
# UNRESOLVED: no formal interlock procedure described in source

Notes

Command format: =gITEM! (get) or =sITEM:VALUE! (set). Response mirrors set format. Characters outside = and ! are ignored (allows CR/LF line termination).

Network port supports one client via Telnet. IP address assignment: DHCP/BOOTP, AutoIP (169.254.xxx.yyy), or static. All network and serial config changes take effect after next power-on or reboot.

Provenance

source_domains:
  - digitalaudio.com
source_urls:
  - https://www.digitalaudio.com/wp-content/uploads/2017/08/PowerShape-Manual-PS-2.1-V1.2.pdf
retrieved_at: 2026-04-30T04:31:37.803Z
last_checked_at: 2026-06-03T06:39:11.088Z

Verification Summary

verdict: verified
checked_at: 2026-06-03T06:39:11.088Z
matched_actions: 38
action_count: 38
confidence: medium
summary: "Complete cross-check confirms all entries present (7 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "IR remote control is described but not machine-protocol; excluded from this spec"
- "the source describes no unsolicited event messages."
- "no explicit multi-step macros described in source"
- "no formal interlock procedure described in source"
- "IR remote control uses NEC protocol — documented for user convenience but not machine-protocol; excluded from this spec"
- "specific firmware version compatibility not stated in source"
- "default VU meter state (rate=0, reports off) on power-on not explicitly confirmed"

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