CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc

...and reconfiguring the roon loopback device to 5.1 from the default 2 channels gets me the goods. Happy days!
1749476666941.png


My journey's not over yet, because I was hoping to have camilla DSP handle all output. After a little experimentation, I've found that I can get either plex or roon working using the alsa loopback playback device configured in each app, but they are exclusive, meaning I have to disable it in roon, then enable it in plex for it to work, and vice versa. I also can't get any sound out of netflix or you tube. and I don't know how to set the firefox output device.

How do I get all sounds from the HTPC to route through camilladsp? Edit - and be always on without reconfiguring when switching apps or sessions. Also, how do I get camilladsp to apply the config on boot so I don't have to manually click apply to DSP in the web UI?
 
Last edited:
Minor update in case anyone else stumbles on this. I picked up the don't start on boot and -40db attenuation from mdsimon2's files. https://github.com/mdsimon2/RPi-CamillaDSP

To get camilladsp to auto apply on boot edit and stop the -40db

sudo nano /lib/systemd/system/camilladsp.service

in the ExecStart line, remove the offending entries.

"-w" tells CamillaDSP to wait for a configuration to be applied via the GUI.
“-g-40” sets CamillaDSP volume control to -40 dB every time it starts to avoid accidentally playing something really loud after a system restart. If not using CamillaDSP volume control please delete “-g-40”.
 
After a little experimentation, I've found that I can get either plex or roon working using the alsa loopback playback device configured in each app, but they are exclusive, meaning I have to disable it in roon, then enable it in plex for it to work, and vice versa. I also can't get any sound out of netflix or you tube. and I don't know how to set the firefox output device.
Direct hw access in Alsa is always exclusive. The usual way to get around that is to use pipewire (or PulseAudio). Then all applications output to pipewire, and pipewire mixes the streams and sends the result to the Alsa hw device.
Pipewire configures an Alsa PCM device and sets it as the default. Applications that don't let you choose the audio device usually uses this, so this is probably where Firefox sends its output. You would need to also get roon and plex to use this.
What options for output device do you have in roon and plex?

Edit, looks like this won't work with roon, see: https://help.roonlabs.com/portal/en/kb/articles/audio-on-linux
We only support situations where we have direct and exclusive access to the hardware (in ALSA terms, we are using hw:X,X device identifiers)
 
Last edited:
@HenrikEnquist My roon lists two loopback devices. I just tried both prompted by Chris's comment and one of them worked. The Configured one in the screenshot had an identical label to the one at the bottom of the list. "Loopback PCM" I added the HTPC label. Unfortunately I can't see what device ID is in any aa:x:y:z format be damned.

1749507725653.png


1749507935814.png

1749509036901.png


Roon now works like a charm, on bootup. But sadly, this whole project depends on Plex and Firefox (netflix) working the same way. Plex has the full list of output devices.

1749509265573.png


After stopping roon. Then playing a movie in Plex, I tried literally every option and not a single one would play sound. There has to be a way to route things.

As for getting you tube to play, I discovered pavucontrol, the pulse audio manager that I read runs in between ALSA and pipewire does have an app based audio selection device. In the screenshot below I'm playing some youtube music and the Blue line under Firefox Silence is bouncing up and down like a live VU meter. it knows something is playing. I just can't hear anything.

1749509740650.png
 
@HenrikEnquist Is literally the entire Camilla DSP community using this for one application exclusively?

Also, while roon may require exclusive hw:x:y:z access, I don't need Plex, Roon and Firefox to play at the same time. (Would be nice) When I stop roon, it should relinquish exclusive access. Then I open Plex and it can pick it up, close that, then open Firefox and play that. Is this situation not possible?

"What is stop on inactive" on the capture device doing if not this?
 
@HenrikEnquist Is literally the entire Camilla DSP community using this for one application exclusively?
No, many are using it with pipewire or PulseAudio to have all sound from many different apps processed.

Also, while roon may require exclusive hw:x:y:z access, I don't need Plex, Roon and Firefox to play at the same time. (Would be nice) When I stop roon, it should relinquish exclusive access. Then I open Plex and it can pick it up, close that, then open Firefox and play that. Is this situation not possible?
There are basically two ways, either run everything through pipewire, or skip pipewire completely. Mixing so that some apps output via pipewire and some directly to the hw device would be a frustrating experience, pipewire doesn't play well with others since it will grab the device any time something makes a sound, even if it's just an email notification bell.

Pipewire only is by far the most elegant solution since it means things just work. But it gets difficult because of the annoying limitation of roon. You can probably get around that by letting it output to another loopback, clunky but could work. You can maybe investigate if anyone has figured out a good way to get roon into pipewire.

Completely without pipewire means that each app must be configured to output to the Alsa Loopback. You already solved roon. Firefox will respect the default set up in the alsa config, so you can direct it to use the loopback. For Plex it looks like it gives you the complete device list, so it should be possible to solve. Firefox will try to open the device any time a page makes a sound, but hopefully release it when not. Plex will most likely release it when nothing is playing, and same with roon. There will be cases when playback in the app you want fails because one of the others is hogging the device. So while this should work, it may get annoying to use.
 
@HenrikEnquist "run everything through pipewire"

How would I do that? I thought everything was already going through pipewire as per $ pactl info. I'd like to try your pipewire suggestion and then work on troubleshooting roon, but I'm not sure where to start.

Edit: I would also be happy running everything through pipewire camilla DSP, except roon as it has it's own DSP engine and I can put the convolution filter there so that one application doesn't require camilladsp, if that helps.

I suppose a third option, is runing a spare raspberry Pi as another dedicated roon endpoint, configured like my HTPC is now and use the AVR to switch between two sources. HTPC for plex and firefox, Rpi4 for roon.
 
Last edited:
Hello i realy need Help

Updated my Raspberry 5 with UBUNTU 23.10 to 24.05 STL and now i have this Problemm:

CamillaDSP is starting but CamillaGUI won't (updatet both to last Version 3.01)

frunse@Camilla:~$ python3 --version
Python 3.12.3

frunse@Camilla:~$ sudo service camilladsp status
● camilladsp.service
Loaded: loaded (/usr/lib/systemd/system/camilladsp.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-06-10 16:56:29 CEST; 1min 15s ago
Main PID: 6254 (camilladsp)
Tasks: 9 (limit: 9063)
Memory: 2.0M (peak: 2.7M)
CPU: 5.933s
CGroup: /system.slice/camilladsp.service
└─6254 camilladsp -s camilladsp/statefile.yml -w -o camilladsp/camilladsp.log -p 1234

Jun 10 16:56:29 Camilla systemd[1]: Started camilladsp.service.

CamillaDSP is running right?? and no errors!!!

But
frunse@Camilla:~$ sudo service camillagui status
× camillagui.service - CamillaDSP Backend and GUI
Loaded: loaded (/usr/lib/systemd/system/camillagui.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Tue 2025-06-10 16:58:52 CEST; 5s ago
Duration: 392ms
Process: 6752 ExecStart=python3 camilladsp/camillagui/main.py (code=exited, status=1/FAILURE)
Main PID: 6752 (code=exited, status=1/FAILURE)
CPU: 378ms

Jun 10 16:58:51 Camilla systemd[1]: Started camillagui.service - CamillaDSP Backend and GUI.
Jun 10 16:58:51 Camilla python3[6752]: Traceback (most recent call last):
Jun 10 16:58:51 Camilla python3[6752]: File "/home/frunse/camilladsp/camillagui/main.py", line 5, in <module>
Jun 10 16:58:51 Camilla python3[6752]: import camilladsp
Jun 10 16:58:51 Camilla python3[6752]: ModuleNotFoundError: No module named 'camilladsp'
Jun 10 16:58:52 Camilla systemd[1]: camillagui.service: Main process exited, code=exited, status=1/FAILURE
Jun 10 16:58:52 Camilla systemd[1]: camillagui.service: Failed with result 'exit-code'.

Camilla GUI
Will not start!!!

squeeze lite also dont work anymore

I guess it was a big mistaker to update UBUNTU
 
Last edited:
Its ok i will do an fresch installation on RPI5 don't need ubuntu anymore (i used it only because off REW for Measuring)

Now i need only Cammila and squeezeserver on an RPI5 the UBUNTU 24.05 STL was realy slow on my PI5 everything took ages to get opened !!!

Saved all my Config files and start an fresh install 😉
 
I tried PIcore player early last year and something wasn't working how i need it, but already long time ago, may be there changed something.

But for now i need Camilla with that HDMI inputboard working with MOTU Ultralite MK5

I have one spare rpi4 Board may be there i could use it as Mediaplayer then
 
@HenrikEnquist "run everything through pipewire"

How would I do that? I thought everything was already going through pipewire as per $ pactl info. I'd like to try your pipewire suggestion and then work on troubleshooting roon, but I'm not sure where to start.
The chain is supposed to be: App -> pipewire -> Alsa Loopback -> CamillaDSP -> HDMI output device
pipewire can receive sound from apps in a few ways. Most use an Alsa PCM device presented by pipewire. You don't need any asound.conf in you home dir for this, it's automatic (it's better not to have one since it can interfere).
You already see sound the level meter moving for Plex and Firefox, so the first step is working. The next step is to make pipewire output to the Alsa loopback. This is where you need to edit the pipewire config, otherwise it may not show the loopback as a possible output device.
If CamillaDSP captures from CARD=Loopback,DEV=1, then pipewire needs to output to CARD=Loopback,DEV=0. Or vice versa, DEV=0 for CamillaDSP and DEV=1 for pipewire also works. The camilladsp playback device should be the same as before, the Generic.
I suppose a third option, is runing a spare raspberry Pi as another dedicated roon endpoint, configured like my HTPC is now and use the AVR to switch between two sources. HTPC for plex and firefox, Rpi4 for roon.
That's probably how roon is meant to be used, the hw-only limitation means it works best when it's the only app using audio devices on the system.
 
Jun 10 16:58:51 Camilla systemd[1]: Started camillagui.service - CamillaDSP Backend and GUI.
Jun 10 16:58:51 Camilla python3[6752]: Traceback (most recent call last):
Jun 10 16:58:51 Camilla python3[6752]: File "/home/frunse/camilladsp/camillagui/main.py", line 5, in <module>
Jun 10 16:58:51 Camilla python3[6752]: import camilladsp
You are missing the pycamilladsp library. Try to use the bundle instead, it includes a complete python environment. Download it from here: https://github.com/HEnquist/camillagui-backend/releases/tag/v3.0.3
Then look here for how to configure it: https://github.com/HEnquist/camillagui-backend?tab=readme-ov-file#configureing-the-bundled-gui
 
  • Like
Reactions: Frunse
Hello i installed Camilladsp already new using Rapberry OS and its works already but there was some changes in the last year i cant't get it to run with 18 Channels Out on MOTU Ultralite MK5

i use
hw:CARD=UltraLitemk5,DEV=0 That exists when i use aplay -L

for Output and changet the Mixer to 18 Out than load the Mixer on Pipline, but i don't get all the Channels on the left with CamillaGUI for Volumecontrol

On the Log i see this errors

2025-06-10 21:43:14.416776 INFO [src/bin.rs:781] CamillaDSP version 3.0.1
2025-06-10 21:43:14.416796 INFO [src/bin.rs:782] Running on linux, aarch64
2025-06-10 21:43:14.428052 ERROR [src/bin.rs:293] Playback error: ALSA function 'snd_pcm_hw_params_set_format' failed with error 'Invalid argument (22)'
2025-06-10 21:43:14.428360 INFO [src/alsadevice.rs:798] Capture device supports rate adjust
2025-06-10 21:43:14.428404 INFO [src/processing.rs:119] Playback thread has already stopped.
2025-06-10 21:43:55.484286 ERROR [src/bin.rs:293] Playback error: ALSA function 'snd_pcm_hw_params_set_format' failed with error 'Invalid argument (22)'
2025-06-10 21:43:55.484520 INFO [src/alsadevice.rs:798] Capture device supports rate adjust
2025-06-10 21:43:55.484567 INFO [src/processing.rs:119] Playback thread has already stopped.

Anything i missed???

Used this Dokumention

https://github.com/mdsimon2/RPi-CamillaDSP?tab=readme-ov-file

Dammn found it i need to use the S24LE3 Format

Now i see all Channels 😉

Last time i configured Camilla On Ubuntu was 03.2024 LOL

And it was running wery well for the whole time 😉 till i upgraded UBUNTU last week 🙁

Never touch an running system LOL
 
Last edited: