Prismriver is a WLED Audio Reactive server for Linux. It runs as a daemon, analyzing audio from a PipeWire source or monitor and broadcasting WLED-compatible sound sync packets over the network
- FFT over 1024 samples with 50% overlap, Hann window.
- Simple but effective AGC.
- Calibrated with pink noise for a balanced frequency response.
- Efficient, small footprint.
- Automatically pauses processing and broadcasting when the source is silent.
- Can broadcast to multiple addresses. Defaults to WLED's audio sync multicast address
239.0.0.1:11988 - Supports IPv6, even though WLED doesn't. Can be useful for IPv6-mostly setups with NAT64.
- Multicast TTL can be adjusted and defaults to 2. Useful when proxying multicast to a subnet.
- Includes a basic ASCII visualizer for debugging.
- Supports the v2 protocol only, so really old soundreactive setups may not work.
- Targeting Linux, might work on other POSIX-like systems with PipeWire. Windows support is not planned.
- Tested with WLED-MM only, but should work with upstream WLED.
- Doesn't support some WLED-MM-specific features like sound pressure and zero crossings count.
- Many hand-tuned magic numbers that aren't configurable yet.
- No noise gate. Not a problem if monitoring an audio sink, but can be an issue with microphones or line input.
fftw3libpipewire-0.3- Meson (build system)
meson setup --buildtype=release build
cd build
ninja
meson installsystemctl --user enable --now prismriver
The systemd service runs with the default settings. If you need to pass extra arguments, use
systemctl --user edit prismriver to modify the StartExec= line.
There is currently no configuration file. All options are specified on the command line.
Without any parameters, Prismriver will try to attach to the default sink monitor and stream to the default WLED
multicast address. This should just work if your WLED devices are on the same subnet. If this doesn't work for you, you
can manually specify your device addresses with the -a/--address option:
prismriver -a 192.168.67.50 -a dns-also-works.example.com -a 192.168.13.37:42069If you want Prismriver to attach to a specific source device or sink monitor, use the -s/--source option. To attach
to a sink monitor, append .monitor to the name of the sink:
prismriver -s alsa_output.pci-0000_09_00.1.hdmi-stereo.monitorThe easiest way to list all available sources is to use pactl list sources.
If your WLED devices are on a separate subnet, you can still use multicast if you set up something like igmpproxy on your router. Prismriver sets its multicast TTL to 2 to facilitate this use-case. Usually you don't need to change it, but you can if you require more hops or, conversely, want to make sure the multicast packets are not forwarded to another subnet.
prismriver --ttl 3