• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Sharing my Linux-based Software DSP app for IIR DSP, Loudspeaker Crossovers

charlielaub

Senior Member
Joined
Jan 5, 2023
Messages
305
Likes
445
Location
Bayern DE
I have decided to share my DIY software DSP app "GStreamer Streaming-Audio System Controller" (GSASysCon) with the greater community. It's something I have been using and slowly modifying and enhancing for the last 10 years or so, and it's very stable and reliable. Features include multiple-playback endpoints, synchronous playback, and streaming to remote clients (e.g. other computers on your LAN). A recent addition are "shortcut" names for a wide variety of loudspeaker filters. There are several help documents available that describe all the features and functionality of the app, as well as a setup guide to get you started.

The app automatically builds and launches GStreamer pipelines using GStreamer's command-line interface based on the user configuration. IIR filtering is provided by my ACDf LADSPA filters, which are included with the package. Configuration of routing and DSP is via text-based files. There is also a text-based user interface for controlling playback and basic volume control. It can also be called in a non-interactive mode.

The primary online thread can be found at DIY audio, however, I often log in here and you are welcome to PM me with questions or issues, or simply post in this thread.

Link:
 
Last edited:
This project has been moved to GitHub:
The latest release is 3.15.0:
GSASysCon-3.15.0 GitHub release page

Under Linux you can use wget to download the file into the current directory instead of having to use a browser. Choose one of the following:
To download the ZIP compressed file:
wget https://github.com/charlielaub/GSASysCon/archive/refs/tags/3.15.0.zip
To download the GZIP+TAR compressed file:
wget https://github.com/charlielaub/GSASysCon/archive/refs/tags/3.15.0.tar.gz

Unpack the archive, open the SetupGuide.txt file in the directory /system_control/docs, and then follow the instructions.

To unpack the compressed files: for the zipped archive use the unzip command. For the tar.gz'd file, first gunzip the gz archive and then run tar -xvf on the resulting tar file.
 
Bumping this back up to the first page...

This is a capable and easy to use IIR DSP software for loudspeaker crossovers. I hope you will try it.
 
Chiming to say this looks fabulous. I suspect a lot of readers don't realise what is embodied here.

I use GStreamer a lot in my day job, and had been musing that exactly this approach would be an excellent way forward for a lot of uses. The idea of building up an active loudspeaker with say a Rasberry Pi acting as both streaming endpoint and crossover DSP engine, all managed within a GStreamer pipeline should make a lot of people really enthusiastic.

Maybe one can point out that RTP encapsulated audio is exactly what AES67 uses. So this solution is potentially of wider interest.

AES67 doesn't define the discovery protocol, but in a domestic setting you don't always need one. GStreamer provides a simple RTSP receiver, so if needed one could in principle slot that in on an end point. RTSP service is also possible with GStreamer, albeit with more work. So a very sophisticated home streaming environment is possible.

Heck, add PTP to the system and you have essentially full AES67. Although I do note that latency might remain a potential issue. But for replay use, it won't be.
 
Last edited:
@Francis Vaughan Thanks for your comment. I use GSASysCon on a daily basis to stream to endpoints in my home and, there, do any DSP needed. I have incorporated the RTP+RTCP method using rtpbin that is for example described here:
All the port assignments and logins are handled automatically in the background.

This works quite well to synchronize various playback pipelines. When both the TX and RX communication is good and there is a distributed clock (I use chrony and NTP, but PTP is possible) you can synchronize all the endpoints pretty tightly. Using NTP to distribute a clock, I can get sync down to 100 microseconds or less, confirmed with measurements, over WiFi.
 
Chiming to say this looks fabulous. I suspect a lot of readers don't realise what is embodied here.

I use GStreamer a lot in my day job, and had been musing that exactly this approach would be an excellent way forward for a lot of uses. The idea of building up an active loudspeaker with say a Rasberry Pi acting as both streaming endpoint and crossover DSP engine, all managed within a GStreamer pipeline should make a lot of people really enthusiastic.

Maybe one can point out that RTP encapsulated audio is exactly what AES67 uses. So this solution is potentially of wider interest.

AES67 doesn't define the discovery protocol, but in a domestic setting you don't always need one. GStreamer provides a simple RTSP receiver, so if needed one could in principle slot that in on an end point. RTSP service is also possible with GStreamer, albeit with more work. So a very sophisticated home streaming environment is possible.

Heck, add PTP to the system and you have essentially full AES67. Although I do note that latency might remain a potential issue. But for replay use, it won't be.
Yes what you're thinking about is 100% possible with Gstreamer. I use it all the time for AES67 I/O, it also helps cut out the need for virtual AES67 'devices' like virtual soundcards or whatever. It's PTP implementation is good, and works on Windows now (previously I was building it to get gst-ptp-helper, but I think it's in releases now?). It's worth a look if you know what you're doing. There's some references floating around to get you started, you should be able to work out how to deal with the clocking and stuff ^_^
 
Back
Top Bottom