Pulseaudio Crossover Rack - multi-way crossover design & implementation with linux

I tried to understand how pipewire works when evaluating an arch installation. But to be honest, I failed miserably.

All in all the route I take a few years ago was flawed right from the start. pulseaudio and it's LADPSA support is just not up to the task to form a reliable and heavily recofigurable DSP chain. So much for being honest to you. Thats why in the background I'm in the process of working on PaXoverNG, a GUI for using camilladsp in the background for processing. Work has been stalled many times up to now, especially as I have been dealing with health issues for the past few months. I hope I will find more time to make progress around a lengthy holiday season this year.

TLDR: pipewire is not a suitable replacement for pulseaudio when you want to use PaXoverRack. Sorry to report that.
 
Updated, and all is working perfectly, many thanks!
Unfortunately I spoke to soon - the updates have solved the previous errors and program crashes, but seems to have created new ones :(

I started the computer this morning and had the same problem with the audio being out of sync - when I start an audio file using a simple two way crossover the tweeter starts instantly, but the woofer starts a few seconds later and then they play together out of sync.

I ran the updates which fixed the sync problem, but when I rebooted it came back.

I tried to insert a module and paxor hung giving this error -

Screenshot from 2022-11-18 08-26-54.png



Screenshot from 2022-11-18 08-29-58.png

Screenshot from 2022-11-18 08-30-36.png


Thanks again for your help, let me know if you need more info . . .
 

Attachments

  • Screenshot from 2022-11-18 08-26-54.png
    Screenshot from 2022-11-18 08-26-54.png
    63.1 KB · Views: 44
Unfortunately I spoke to soon - the updates have solved the previous errors and program crashes, but seems to have created new ones :(

I started the computer this morning and had the same problem with the audio being out of sync - when I start an audio file using a simple two way crossover the tweeter starts instantly, but the woofer starts a few seconds later and then they play together out of sync.

I ran the updates which fixed the sync problem, but when I rebooted it came back.

I tried to insert a module and paxor hung giving this error -

View attachment 1110709


View attachment 1110710
View attachment 1110711

Thanks again for your help, let me know if you need more info . . .
I'm afraid to say that I have reverted back to Linux mint 19 and all is working OK again, I think I'll leave the distribution updates for the time being!
 
Hi, I'm reading here:
https://www.ranecommercial.com/legacy/note160.html

That an L-R8 is just two cascaded L-R4 circuits.

Would making and linking two L-R4 filters with the same specs have the same effect?
Higher order filters are by definition cascaded 2nd order filters with each their specific Q. (A first order filter doesn't have a Q)

Tables can be found which Q factors are needed. I don't think LR8 is two cascaded LR4 filters.
 
ok, biquads for a 4th order butterworth would be of help then :)
Is the next question biquad 2nd order? :ROFLMAO: ;) :)

It has been a long time that I really worked with the formulas themselves.
(therefore I wasn't sure anymore if LR8 was 2 x BW4)

But since you're working with filter blocks, I would just focus on 2nd order filter blocks (since you already have them).
In that case you can just look up those filter tables and the corresponding Q-factors and coefficients.

That's just a matter of googling those tables.

Here some results;

https://www.sciencedirect.com/topics/engineering/butterworth-filter
https://www.electronicshub.org/butterworth-filter/
https://www.ti.com/lit/pdf/sloa049
etc

It doesn't matter if the circuit is like an analog active filter or a digital IIR.
The polynomials are basically the same, you just have to transfer them :)

edit; look what I found here ;)
https://github.com/HEnquist/camilladsp/blob/master/filterfunctions.md
 
Last time I did these (mostly) by hand was the 2nd order filters with Q. And I actually did them by reverse engineering some matlab code and translating them to C code. AND IT WAS PAINFUL. TBH I still don't understand most of the math behind all these quasi-analog filters. I tried to read the DSP design handbooks, but I'm too far away of all the underlying math still. Catching up to it though, recently got a grasp on what all the discrete fourier transform stuff is all about, thanks to youtube :)
 
Having a problem running the PA-Crossoover install. ("sudo apt-get install pulseaudio-crossover-rack") on latest PI-CorePlayer var/proc/version == "Linux version 5.15.76-v8+ (dom@buildbot) (aarch64-linux-gnu-gcc-8 (Ubuntu/Linaro 8.4.0-3ubuntu1) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1597 SMP PREEMPT Fri Nov 4 12:16:41 GMT 2022)

Getting
.
.
.
Unpacking python3-qt5-t5darkstyle (1.2) ...
dpkg-deb: error: archive '/tmp/apt-dpkg-install-BZygep/16-python3-qt5-levelmeter_1.14_all.deb' uses unknown compression for member 'control.tar.zst', giving up
dpkg: error processing archive /tmp/apt-dpkg-install-BZygep/16-python3-qt5-levelmeter_1.14_all.deb (--unpack):
dpkg-deb --control subprocess returned error exit status 2
Selecting previously unselected package pulseaudio-crossover-rack.
Preparing to unpack .../17-pulseaudio-crossover-rack_1.81_all.deb ...
Unpacking pulseaudio-crossover-rack (1.81) ...
Errors were encountered while processing:
/tmp/apt-dpkg-install-BZygep/16-python3-qt5-levelmeter_1.14_all.deb


Then i run "sudo apt --fix-broken install" and get;

dpkg-deb: error: archive '/var/cache/apt/archives/python3-qt5-levelmeter_1.14_all.deb' uses unknown compression for member
'control.tar.zst', giving up
dpkg: error processing archive /var/cache/apt/archives/python3-qt5-levelmeter_1.14_all.deb (--unpack):
dpkg-deb --control subprocess returned error exit status 2
Errors were encountered while processing:
/var/cache/apt/archives/python3-qt5-levelmeter_1.14_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
 
I released a fixed version. Ubuntu based dpkg-deb build process now has zstd as default compression algorithm which is not supported by debian based distros yet. So i fixed all my build scripts to use the old xz compression to retain backwards compatibility. I hate those kind of breaking changes just to spare a few bytes...