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

Hi Tfive,


just checked the latest update (quite a lot going on here :D), but unfortunately, during one of the latest versions, the dependency for pulseaudio changed from ≥ 10 to ≥ 11, which breaks it for Debian Strech, and Raspbian, which is based on Stretch. Is there any chance to revert back to 10, or do I have to manually upgrade to pulseaudio ≥ 11?


I got myself a cheap 5.1 USB soundcard, and, again only stereo output possible. After a little web research I found out that you have to change the default channel number from 2 to 6 in /etc/pulse/daemon.conf ( see PulseAudio › Wiki › ubuntuusers.de for reference). It is also recommended to uncomment and enable

enable-lfe-remixing = yes

So, who knows, maybe 8 channel audio with a Asus Xonar U7 might be possible after all.


Best regards,


hallodeletue
 
I changed the dependency recently because a user from russia contacted me via email, he couldn't get it running... After a lengthy chat session we discovered that it didnt't work for him because he used debian stable and he had to upgrade to pulseaudio 11 to make it work.

I just packaged and released 1.19 with no other changes than the reverted dependency.

Please report back if it now works for you again...
 
Hi,

thanks a million for this quick fix, works perfectly! And with the right number of channels in /etc/pulse/daemon.conf Asus Xonar U7 shows 8 channels!

I hope I will find some time over the weekend to hook it up to make some measurements, I will report back.

Best regards,

hallodeletue
 
What's the exact option you had to set in the daemon.conf? Actually it "just works" with linux mint >=18. Of course I had to set the soundcard to multichannel mode as shown in the online help, section prerequisites.

<rantmode="on">using distros with outdated packages is not recommended, at least not by me.</rantmode> :D

While we're at it, I recommend to enable the following options in /etc/pulse/daemon.conf:

Code:
# this prevents resampling to integer samples between the different ladspa sinks
default-sample-format = float32le
# especially when using the subsample delay use the highest sample rate
# you can get away with performance-wise
default-sample-rate = 192000
avoid-resampling = true
resample-method = speex-float-6

I will mention this in the online help soon...
 
oh goodie, been after something like this. Been meaning to play with jack on a old laptop but this looks like it might be easier :)

hmm can it take input from aux in as well as system? i guess a pulseaudio conf would do it if not already.
With aux input, people can plug there own device into aux input of audio interface for dsp laptop connected to sound system for events. :)
Being able to have system input and aux input at same time would be really handy or a switch between the two.

I would be interested in mutli channel support. for things like surround sound. right now my computer has a diy 7.1 surround setup. dont need crossover for it right now but for a bigger setup with my other speakers, i guess i would be wishing for a crossover to limit freq range which those various pa/hifi/etc speakers would get. :)

i recently got CDD6 | Ultra-compact Coaxial Differential Dispersion System half price
it would be really nice to be able to have a little dsp laptop that i can just import the presets and have the speakers protected from being over driven(?) and running at there best, with flat eq response :D

Thanks for you work, i look forward to getting around to playing with this :D
gotta sort up some laptops/os upgrade/install.
 
Last edited:
Nice!

Hi, first post. Just wanted to say thanks for some great software! Nice interface into a domain with a lot of finicky details.


FWIW, I got it working, following your instructions, on a fresh Raspian download, Pi3, in a few hours. Had a slight detour trying to get Pulse to see my cheap USB soundcard, but not too bad.


I hope to do some testing with actual sound this weekend, once I get a little speaker/amp set up, and want to look into exporting the configured filters PaXoverRack generates for use on a Pi without all the GUI overhead.


Anyway, good work! I feel like this will be a key piece of the puzzle for me.


Good luck with the job hunt - you've earned it.
 
hmm can it take input from aux in as well as system? i guess a pulseaudio conf would do it if not already.
With aux input, people can plug there own device into aux input of audio interface for dsp laptop connected to sound system for events. :)
Being able to have system input and aux input at same time would be really handy or a switch between the two.

This might do the trick for you (not tested):
linux - Pipe/Mix Line In to Output in PulseAudio - Unix & Linux Stack Exchange

I would be interested in mutli channel support. for things like surround sound. right now my computer has a diy 7.1 surround setup. dont need crossover for it right now but for a bigger setup with my other speakers, i guess i would be wishing for a crossover to limit freq range which those various pa/hifi/etc speakers would get. :)

The problem right now is that this would either require a plugin for pulseaudio to be written to take input from X (8 in case of 7.1 for example) channels and output to Y channels (Y < X) otherwise you would have to have X * N (N = number of paths in a N-way system) outputs on your soundcard. OK that was probably not very helpful and explaining, I'll try again:
Say you have a 5.1 setup with front-right/left being 3way, one sub and center/rear being two way. For this you'd need 13 channels on your soundcard. at the moment the limitation in pulseaudio is that i cannot get rid of the unneeded extra channels for the sub and the two way speakers, so this setup would require 6 * 3 = 18 channels of output, I don't know how feasible that is... At the moment also the measurement support is clearly higher prio on my todo list, we'll see...

Thanks for you work, i look forward to getting around to playing with this :D
gotta sort up some laptops/os upgrade/install.

You're welcome & have fun :)
 
Last edited:
Hi, first post. Just wanted to say thanks for some great software! Nice interface into a domain with a lot of finicky details.

FWIW, I got it working, following your instructions, on a fresh Raspian download, Pi3, in a few hours. Had a slight detour trying to get Pulse to see my cheap USB soundcard, but not too bad.

I hope to do some testing with actual sound this weekend, once I get a little speaker/amp set up, and want to look into exporting the configured filters PaXoverRack generates for use on a Pi without all the GUI overhead.

Once the filters are setup on your pi they are persisted in the $HOME/.config/default.pa file, so you will not need the GUI anymore (even after restarting your system)! You can even confgure the filters via GUI on one system and just copy the default.pa file to a headless system and it should "just work" :)

Anyway, good work! I feel like this will be a key piece of the puzzle for me.

Good luck with the job hunt - you've earned it.

Thanks very much, appreciated! :D
 
For this you'd need 13 channels on your soundcard. at the moment the limitation in pulseaudio is that i cannot get rid of the unneeded extra channels for the sub and the two way speakers, so this setup would require 6 * 3 = 18 channels of output,

How about configuring the alsa route plugin in .asoundrc (e.g. Alsa Opensrc Org - Independent ALSA and linux audio support site) ) and let PA output to this virtual device instead of directly to the raw device hw:XX? The route plugin can drop any input channel.
 
How about configuring the alsa route plugin in .asoundrc (e.g. Alsa Opensrc Org - Independent ALSA and linux audio support site) ) and let PA output to this virtual device instead of directly to the raw device hw:XX? The route plugin can drop any input channel.

Can surely be done, but it feels like a hack to me. And it would surely complicate things for the user because now he also has to know about the underlying ALSA layer and not only about pulseaudio (which in itself is probably complicated enough).

By the time I get around to actually implement multichannel support I will look into options. One is to write a pulseaudio plugin that can do the job. As I dind't look at any pulseaudio internal code yet I cannot tell how much work whis would be and how complex/complicated the task is.

If you really want to convince me to implement multichannel support, feel free to open a bug/feature request on gitlab and get people to vote on it - this way I can estimate ACTUAL demand ;)
 
Well, it was a way for the user. If the demand is low, why implement everything into your system. My position is if a user needs something special, the learning experience never hurts. But this is your project, you call the shots.

Honestly, I would not want to maintain a pulseaudio plugin unless it made it straight into the upstream :)
 
New release with security fix!

I just tagged and released version 1.20. Changelog:

Code:
pulseaudio-crossover-rack (1.20) stable; [COLOR="red"]urgency=high[/COLOR]
[COLOR="Red"]* security fixes:[/COLOR]
  - Only allow certain specific classes while unpickling zodb stuff.
    Before the fix loading .paxor files from untrusted sources was
    not advisable as it opened the possibility of arbitrary code
    execution! This was brought to my attention a few days ago by a posting
    on the ZODB-dev mailing list.
* bugfixes:
  - Do not crash when soundcard reports < 2 outputs.
* features:
  - Made it possible to output downmixed mono audio to a single soundcard
    channel only.
  - using keepPhaseBounded() on all phase response graphs
-- Jürgen Herrmann <t-5@t-5.eu> 2019-01-27
 
Editing sound in real time

Sorry, bit of a problem for me.

VLC will play a pink noise .flac file OK, but altering the parameters in in a crossover module does not affect the sound. What have I done wrong?

PaXoverRack doesn't appear to be writing the modules into /home/pi/.config/pulse/default.pa. I set up a "Speaker_Test.paxor" file with
Input >> LR-4 Highpass >> LR-4 Highpass >> LR-4 Lowpass >> LR-4 Lowpass >> Output modules - the idea being to set the first and last modules to protect the speaker(s), and play with the middle two. Right now, I have it hooked up to a TPA3116 amp and a small 2-way speaker, and was testing the outputs of the soundcard. It works. I have to say, up to this, it has been way less of a pain in the wahine than other forays into multichannel pi audio I've done - I guess Murphy will have his due.

When I try to change the F3 frequency in one of the modules, and click Load-Module, the following error appears in the console:

Code:
REMOVING PAXOVERRACK MODULES...
[10:19:12.563968] No modules found for unloading.

REMOVING OLD PAXOVERRACK CONFIG...
[10:19:12.594494] wrote backup of ~/.config/pulse/default.pa
[10:19:12.602106] wrote ~/.config/pulse/default.pa

INSERTING NEW PAXOVERRACK MODULES...
[10:19:12.681747] inserted module for 'Test_Out'
[10:19:12.723145] ERROR inserting module for 'Top_Limit'

REMOVING PAXOVERRACK MODULES...
[10:19:12.809988] Unloaded module '26'.
There are no entries in the default.pa file with string "PaXoverRack". There is a /home/pi/.config/pulse/default.pa.backup_by_paxoverrack file, so PaXoverRack is able to write to the folder.

The apt-get install worked without error. I altered/added the recommended lines to /etc/pulse/daemon.conf.

Code:
 default-sample-format = float32le ;s16le
 default-sample-rate = 192000 ;44100
 avoid-resampling = true ;line added
 resample-method = speex-float-6 ;speex-float-1
and, additionally:

Code:
 enable-lfe-remixing = yes ;no
 default-sample-channels = 8 ;2
If it helps, I have had to manually run, in LXTerminal:

Code:
pacmd load-module module-udev-detect
a few times, after a reboot, to get pulse to see my usb soundcard. Not every time, though.

Code:
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 7/7
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: XS71U [XS71U], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
Pavucontrol sees the XS71U Analog Surround 7.1 on the Hardware tab, and has Analog Surround 7.1 Output + Analog Stereo Input under XS71U on the Configuration tab.
 
PulseAudio

OK, cut to the chase - no meaningful pulseaudio upgrade path appears to exist for Raspian stretch. The Pi will not cut it.

I downloaded Mint Cinnamon 19.1 64, checked the download, and am burning it to disc right now. I'll install it on an old Core 2 Duo laptop I have sitting around, and will check back when PAXover rack is running.

At least I got the lawn mowed this weekend :)
 
Just to be sure you could try to compile the next version up, which is 11.x on the pi. Some folks already got it to run on the pi so I know that the problem is not the LADSPA plugins package.

Very good choice on the linux distro for your laptop imho. Easy to setup and very polished, you should be up and running in minutes :)
 
Just a quick update... The last few days I revived my old Fullrange+Subwoofer monitor speakers I built around 10 years ago. I did some major cosmetics to them, closed the bass port and gave them nice rounded edges. The speakers are Tangband W3-315 and W69-1042. Today evening I finally had the chance to set them up temporarily in the living room of my parents (where I do the woodworking because my dad has all the tools) and try my own software the way it is intended to be used - not just as a parametric eq but actually as a crossover :D

I'm quite pleased how it worked out. Though I have no measurement microphone tweaking the setup by ear was done in about half an hour... Being able to immediately hear what I was tweaking was immensely helpful. So far I like it very much. :)

The measurement portion of the software is up next and once I buy a mic I will report back...
 

Attachments

  • IMG_20190129_192158.jpg
    IMG_20190129_192158.jpg
    406.1 KB · Views: 254
  • IMG_20190129_190038.jpg
    IMG_20190129_190038.jpg
    466.7 KB · Views: 232