Run Sonic Spatial live on your Linux machine with one click. Download the local bridge, start it, then use RUN LIVE in the app.
Save surroundmix-bridge.py, then in a terminal:
python3 surroundmix-bridge.py
To have the bridge serve the console itself, put sonicspatial-web.zip beside the script — it is extracted automatically into web/. Then open http://127.0.0.1:8765 and the app runs straight from your machine.
Requires PulseAudio + LADSPA swh-plugins. openSUSE Leap 15.6: sudo zypper install python3 pulseaudio-utils swh-plugins
The 15-band EQ needs real PulseAudio. pipewire-pulse only loads its own modules, so on a PipeWire session the bridge still creates the 8 SonicSpatial devices (visible in pavucontrol, volume and mute work) but without EQ. To get the EQ, run the PulseAudio server instead of pipewire-pulse and restart the bridge.
Optional on Leap 15.6 — run the bridge automatically at login with systemd:
mkdir -p ~/.local/bin ~/.config/systemd/user cp surroundmix-bridge.py ~/.local/bin/ cp surroundmix-bridge.service ~/.config/systemd/user/ systemctl --user daemon-reload systemctl --user enable --now surroundmix-bridge.service
With the bridge running, open http://127.0.0.1:8765 (or the hosted console) and click RUN LIVE — the bridge builds the SonicSpatial sinks, applies volume, mute, EQ and effects, moves playing audio onto them and makes them the default. The status bar shows the bridge version and the active sink. If the bridge isn't running, RUN LIVE falls back to downloading the script.
Save pulsefield.desktop, then:
cp pulsefield.desktop ~/.local/share/applications/ update-desktop-database ~/.local/share/applications
Search "Sonic Spatial" in your app menu and pin it to the dash.
The bridge binds to 127.0.0.1 only and accepts structured audio settings as JSON — it never executes shell commands from the browser. Sinks appear in pavucontrol as SonicSpatial .... Stop it (Ctrl+C, or systemctl --user stop surroundmix-bridge when installed as a service) when you're not using Sonic Spatial.