Skip to main content

StormAudio ISP / ISR

StormAudio Immersive Sound Processors (ISP series) and Immersive Sound Receivers (ISR series) are controlled over StormAudio's SSP Telnet control protocol — newline-delimited ssp.* text commands on TCP port 23. GEM sends the room-cinema controls an integrator needs: power, input, master volume, mute, surround-mode and preset recall, tone (bass/treble), speaker-enhance and sub trims, lip-sync, IMAX mode, and front-panel/display controls.

This driver models the processor as a single main-zone device. It does not create a zone of its own — instead you point an AV zone's Volume Device at it so the room's volume slider and mute indicator ride the processor. See "Linking to an AV zone" below.

What's controlled

  • Main-zone power on / off / toggle
  • Master volume — absolute set as a 0100 percentage, plus up/down steps, with an optional safety cap (max_volume)
  • Mute on / off / toggle
  • Input selection by numeric input index (and a separate Zone 2 output input, plus an HDMI pass-through input select)
  • Surround-mode recall and processing trims: surround-enhance, center-enhance, sub-enhance, bass, treble, lip-sync
  • Preset recall
  • IMAX mode on / off / auto
  • Volume dim, display toggle, front-panel colour, and an on-screen navigation cluster (up/down/left/right/enter/back)
  • Live status: the processor pushes state changes as they happen, and the driver also polls power, volume, mute, and input every 30 seconds as a fallback

Prerequisites

  • A StormAudio ISP or ISR with the SSP network control interface enabled and reachable on the LAN over TCP port 23.
  • A stable IP for the processor — assign a static IP or a DHCP reservation so the address never moves.

Setup

  1. On the StormAudio processor, enable network / Telnet control and confirm it answers on port 23.
  2. In GEM, open Devices, add a device, and choose the StormAudio ISP / ISR driver.
  3. Set Processor IP to the unit's address. Telnet Port defaults to 23 — leave it unless the unit was re-mapped.
  4. (Optional) Set Max Allowed Volume to cap how loud the volume command can drive the room. It defaults to 80 (out of 100) as a safety limit — see "Volume scaling" below.
  5. Save. On connect, GEM opens the Telnet session and begins polling power, volume, mute, and input every 30 seconds.

Linking to an AV zone

The processor feeds volume and mute into an AV zone rather than appearing as its own controllable zone:

  1. Open AV Zones and edit (or create) the zone for the room the processor serves.
  2. Set the Volume Device field to this StormAudio device.
  3. Save. From then on, whenever the processor reports a new volume or mute state, GEM mirrors it onto that AV zone's volume slider and mute indicator — and the zone's volume control drives the processor.
note

Selecting an input on the processor is a device command, not an AV source change. The processor's active input is tracked separately from GEM's AV source routing — choosing the room's source on a touchpanel does not, by itself, change the processor's input unless you wire that input select into the source's on-macro.

Volume scaling

The processor reports and accepts volume on the wire as −100 (mute floor) to 0 (maximum). GEM presents this to you as a friendlier 0–100 percentage and does the conversion in both directions, so everywhere in the UI — the AV zone slider, the volume command, the volume status attribute — you work in 0100.

The Max Allowed Volume (max_volume) attribute is a safety cap applied to the volume command only. With the default of 80, a volume command asking for more than 80 is rejected rather than clamped, so an over-eager macro or panel can't slam the room to reference level. Raise it (up to 100) when you genuinely need full output; lower it to protect speakers or neighbours.

caution

volume_up and volume_down step the processor's own volume directly and are not bounded by max_volume — only the absolute volume command honours the cap.

Attributes

Device — required

AttributeTypeDescription
ipstringProcessor LAN IP.

Device — optional

AttributeTypeDefaultDescription
portint23SSP Telnet port.
max_volumeint80Safety cap (0–100) on the absolute volume command.

State attributes (read-only, auto-populated)

As the processor reports state — both from push events and the periodic poll — the driver keeps these attributes on the device current. They are status you read (in widgets, conditions, or macros), not values you set by hand: power_state, volume (0–100), mute_state, input, input_zone2, preset, bass, treble, brightness, dim, center_enhance, surround_enhance, sub_enhance, lipsync, imax_mode, storm_xt, auro_strength, version, brand, and model.

Commands

The driver declares the full command surface below. Commands whose name starts with get_ are status queries; the rest are actions. Arguments you supply (a level, an input index, a preset, a colour) are shown in the Arg column.

Power, volume, mute

CommandArgSendsNotes
power_onssp.power.onPower the processor on.
power_offssp.power.offPower off.
power_togglessp.power.toggleToggle power.
volumelevelssp.vol.<wire>Absolute volume as 0100; honours max_volume.
volume_upssp.vol.upStep up (not bounded by max_volume).
volume_downssp.vol.downStep down.
mute_onssp.mute.onMute.
mute_offssp.mute.offUnmute.
mute_togglessp.mute.toggleToggle mute.
volume_dim_on / volume_dim_off / volume_dim_togglessp.dim.*Dim (night-attenuation) control.

After any volume or mute command the driver re-queries the processor about half a second later, so the cached state — and the linked AV zone — stays in sync with what the unit actually did.

Inputs

CommandArgSendsNotes
inputinputssp.input.<n>Select main input by index. Run list_inputs to see the index-to-name map.
zone2_inputinputssp.inputZone2.<n>Select the Zone 2 output's input.
hdmi_passthrough_inputinputssp.inputHdmiPassThru.<n>Select the HDMI pass-through input.
list_inputsssp.input.listList available inputs.

Surround, presets, tone

CommandArgSendsNotes
surround_modemodessp.surroundmode.<mode>Recall a surround mode.
list_surround_modesssp.surroundmode.listList all surround modes.
get_active_surround_modesssp.allowedmodeThe modes valid for the current source.
presetpresetssp.preset.<n>Recall a preset.
list_presetsssp.preset.listList presets.
bass / bass_up / bass_downlevel (for bass)ssp.bass.*Bass trim.
treble / treble_up / treble_downlevel (for treble)ssp.treb.*Treble trim.
surround_enhance / _up / _downlevelssp.s_en.*Surround-enhance level.
center_enhance / _up / _downlevelssp.c_en.*Center-enhance level.
sub_enhance / _up / _downlevelssp.sub_en.*Sub-enhance level.
lipsync / lipsync_up / lipsync_downlevel (for lipsync)ssp.lipsync.*Lip-sync delay.

IMAX, display, navigation

CommandArgSendsNotes
imax_mode_on / imax_mode_off / imax_mode_autossp.IMAXMode.*IMAX Enhanced mode.
frontpanel_colorcolorssp.frontpanel.color.<color>One of blue, red, green, white, magenta, orange.
brightness_up / brightness_downssp.brightness.*Front-panel brightness.
display_togglessp.display.toggleToggle the front-panel display.
up / down / left / right / enter / backssp.nav.*On-screen menu navigation.
resetssp.resetProcessor reset.
pingssp.keepaliveKeep-alive probe (see Troubleshooting).

Numerous get_* queries are also available — get_power, get_volume, get_mute, get_input, get_bass, get_treble, get_surround_mode, get_preset, get_model, get_version, get_speaker_config, and more — for pulling a specific value on demand. See Commands for how a device's command list is surfaced in the admin UI.

Known limitations

  • Single device, not multi-zone. Even on units with a Zone 2 output, GEM models one StormAudio device with a zone2_input command and an input_zone2 status attribute, rather than a second independent GEM zone.
  • Incompatible surround modes are silently ignored. StormAudio only accepts a surround-mode change when the active input carries a compatible bitstream (e.g. Auro-3D or DTS:X need a matching source). A rejected mode change produces no error — the mode simply stays put.
  • volume_up / volume_down ignore the safety cap. Only the absolute volume command is bounded by max_volume.

Troubleshooting

SymptomCheck
No connectionConfirm SSP / Telnet control is enabled on the processor and that TCP 23 is reachable (not blocked by a VLAN or firewall). Verify the Processor IP.
Volume applies but the room is quieter than expectedMax Allowed Volume is capping the percentage. Raise it (up to 100) if you actually need full output.
Surround-mode change has no effectConfirm the active input carries a compatible bitstream — StormAudio silently ignores incompatible mode requests. Run get_active_surround_modes to see what the current source allows.
Connection drops and reconnectsTelnet has no built-in keepalive, so an upstream firewall idle-timeout can cut an idle session. The driver already polls every 30 seconds; if a site's timeout is shorter, add the ping (ssp.keepalive) command to a periodic macro.

See also

  • AV Zones — set this processor as a zone's Volume Device.
  • AV Sources — how room sources route, and where an input-select macro would live.
  • Devices — adding and configuring the device.
  • Commands — viewing and running a device's command list.