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

The CoreAudio service can sometimes end up in a weird state where basically nothing works. You can try killing it with "sudo killall coreaudiod". The system should then restart the service automatically, and hopefully things start working again. You probably also need to restart camilladsp and other apps using sound.
 
  • Like
Reactions: jheoaustin
Hi, I'm new to CamillaDSP, but I did read the documentation 😉 and have googled it like a madman. And of course, I have a lot of questions.

Can CamillaDSP be used with Roon and Dirac on the same Windows 11 PC?

My current setup is all digital. My source is a PC with Roon that sends its music to Dirac. Dirac then sends it to my DAC connected to a USB port. Can I add CamillaDSP to the chain? For example, Roon -> Dirac -> CamillaDSP -> USB port -> multi-channel DAC.

How will the development process look like?

How will I develop the crossover (XO)? I guess I would connect the output of REW to my music PC, but then I will have to break the chain: Roon -> Dirac -> CamillaDSP -> USB port -> multi-channel DAC and replace it with REW input -> CamillaDSP -> USB port -> multi-channel DAC. Am I on to something, or am I complicating it?

I hope the veterans will chip in.
 
I suggest you set up a Camilla environment and use the GUI for a bit and then come back with questions. It's a more efficient way to get forward I think then trying to know it all to begin with... but reading the GitHub is mandatory ;-)

//
 
Hi, I'm new to CamillaDSP, but I did read the documentation 😉 and have googled it like a madman. And of course, I have a lot of questions.

Can CamillaDSP be used with Roon and Dirac on the same Windows 11 PC?

My current setup is all digital. My source is a PC with Roon that sends its music to Dirac. Dirac then sends it to my DAC connected to a USB port. Can I add CamillaDSP to the chain? For example, Roon -> Dirac -> CamillaDSP -> USB port -> multi-channel DAC.

How will the development process look like?

How will I develop the crossover (XO)? I guess I would connect the output of REW to my music PC, but then I will have to break the chain: Roon -> Dirac -> CamillaDSP -> USB port -> multi-channel DAC and replace it with REW input -> CamillaDSP -> USB port -> multi-channel DAC. Am I on to something, or am I complicating it?

I hope the veterans will chip in.

Just my opinion but it seems like CamillaDSP setup on Windows is a bit more challenging than Linux / Mac. If Roon is your only source, I would consider Roon for DSP instead of CamillaDSP.

If I was set on using CamillaDSP while starting from a Windows machine, I would use a RPi4 or RPi5 running CamillaDSP as a USB gadget. This approach was discussed in a recent thread -> https://www.diyaudio.com/community/...ntu-pc-running-camilladsp.412535/post-7729529. The RPi acts as a standalone USB I/O DSP between your Windows machine and multichannel USB DAC. It appears to your Windows machine as a normal 2 channel USB audio device (can also set to more channels if you are interested in multichannel content). Very easy to use with REW and/or Dirac.

Michael
 
Can CamillaDSP be used with Roon and Dirac on the same Windows 11 PC?
Yes that should work fine. You will need to add a virtual sound card such as VB-CABLE or Virtual Audio Cable. Then you let Dirac output to that card, and let Camilladsp capture from it.

Setting things up on Windows is a little more difficult than Linux or Mac, but there is a setup script that does most of the work. What is really missing is a virtual audio device with adjustable clock. VB-CABLE doesn't support that at all, while Virtual Audio Cable has pitch adjust that is a bit coarse but should be usable. Unfortunately I have not managed to get that to work, don't know if I'm doing something wrong or if there is a problem in VAC. That means you need to use the async resampler to match clocks.
 
CamillaDSP and MOTU AVB capture device.

Trying to use current camilladsp on a m1 mac with a MOTU 1248 interface connected via AVB as the capture device and can’t get it working.
(playback device is a MOTU 24ao also connected via AVB)

abbreviated listdevices output:

Available hosts:
[CoreAudio]
CoreAudio
Default Input Device:
Ok("motu1248:1248")
Default Output Device:
Ok("motu1248:1248")
Devices:
...
Device: "motu1248:1248"
============================================================

Capture
------------------------------------------------------------
Default input stream config:
channels: 8, samplerate: 48000, format: FLOAT32LE
All supported input stream configs:
channels: 32, samplerate min: 48000 max: 48000, format: FLOAT32LE
channels: 32, samplerate min: 96000 max: 96000, format: FLOAT32LE
channels: 32, samplerate min: 192000 max: 192000, format: FLOAT32LE

Playback
------------------------------------------------------------
Default output stream config:
channels: 8, samplerate: 48000, format: FLOAT32LE
All supported output stream configs:
channels: 24, samplerate min: 48000 max: 48000, format: FLOAT32LE
channels: 24, samplerate min: 96000 max: 96000, format: FLOAT32LE
channels: 24, samplerate min: 192000 max: 192000, format: FLOAT32LE


Device section of config file.

devices:
adjust_period: 3
capture:
channels: 32
device: "motu1248:1248"
# format: FLOAT32LE
type: CoreAudio
capture_samplerate: 48000
chunksize: 1024
enable_rate_adjust: true
playback:
channels: 8
#for this test only using the first 8 of 24 channels
device: "24Ao:24Ao"
exclusive: true
# format: FLOAT32LE
type: CoreAudio
queuelimit: 4
rate_measure_interval: 1
samplerate: 48000
silence_threshold: -85
silence_timeout: 10
stop_on_rate_change: false
target_level: 0
--------------------------

If I use: format: FLOAT32LE as I would think I should given coreaudio I get:

ERROR [src/bin.rs:307] Capture error: Failed to find matching physical capture format

Same result with all the other formats though if I understand things they shouldn't work with coreaudio anyway.

If I leave out a format declaration it starts (gui shows format as “default”) but even though there is signal indicated in the MOTU gui there is no activity on any of the Camilla gui's (32) input meters (should be on first and second channels) and after a couple of trys it just sits in the paused state.

Startup Log:
2024-08-06 17:42:23.858563 INFO [src/coreaudiodevice.rs:1176] The capture device does not support pitch control
2024-08-06 17:42:23.913006 WARN [src/coreaudiodevice.rs:433] Playback interrupted, no data available
2024-08-06 17:42:23.944976 INFO [src/coreaudiodevice.rs:424] Restarting playback after buffer underrun
2024-08-06 17:42:28.979573 WARN [src/coreaudiodevice.rs:433] Playback interrupted, no data available
2024-08-06 17:42:28.990290 INFO [src/coreaudiodevice.rs:424] Restarting playback after buffer underrun
2024-08-06 17:42:33.960917 WARN [src/coreaudiodevice.rs:433] Playback interrupted, no data available

Don’t know if the message about pitch control is revenant or not.

Tried the obvious things like computer restart; interface restart, etc.

I know the interface talks to the mac as it works fine (has for years) with other coreaudio apps. [this exercise started out from trying to isolate or work-around another issue/quirk/bug somewhere between CamillaDSP and hardware sourced virtual devices in Rouge Amoeba’s Loopback.app (application sourced VDs work fine as Camilla capture devices) - fun for later... For purposes of the above issue, Loopback has been fully disabled]

The Camilla installation works fine in testing with the aforementioned Loopback app-sourced virtual devices. Just when I tried to use the MOTU device as a source things went south.


Not sure how to proceed with debugging this.

Thanks, Louis
 
Last edited:
I'd love to say thank to Henrik for this wonderful program, it has driven my test speaker since Nov. 2020 or so. It took me months to get it worked 🙂 (I'm a slow learner). But once it worked it got me amazed about what a wonderful program can do with low power board like orangepi zero + cheap multichannel usb sound card can do. The test speaker is still a test speaker but with much improvements and a lot of things have been learnt.
 
  • Like
Reactions: HenrikEnquist
Don’t know if the message about pitch control is revenant or not.
This is not a problem. The message just means that the capture device doesn't support fine tuning the sample rate. That is only supported by the Blackhole virtual device.

Not sure how to proceed with debugging this.
Please start camilladsp with this config file, and trace level logging. It's better to do that with the gui closed since it generates a lot of noise in the logs otherwise. Start camilladsp, let it run for 10 seconds or so, and stop it. Save the entire log output to a text file and attach it to a post or send it to me.

If I use: format: FLOAT32LE as I would think I should given coreaudio I get:
Float32 is the format used when exchanging audio data with coreaudio, that is why the listdevices tool shows it. The format you give in the camilladsp config is the physical format the device runs at, and default means don't try changing it.
 
That means you need to use the async resampler to match clocks.

Thanks, glad that it is possible.
Is the resampler going to affect the sound or make my choice for sampling frequence limited?

I am a software developer and has been for 30 years, so I know my way around a computer 😉
What is hard for me to grasp is the dsp universe and how all the different sound devices fit together.
 
My end goal is to keep the time from power on to sound under 10s.
I tried with Orangepi Zero + cheap 5.1 usb soundcard but never get less than 13s, most of time around 15s from power on to sound on. Also with buildroot, busybox, eudev (not remember why choose eudev over mdev). Maybe someday I'd give 10s mark another try 🙂

Btw, if anyone need buildroot image for Orangepi PC/Zero/Lite or S9xx tvbox as base for CamillaDSP with cpu isolation, low latency options enabled (quick test for max latency show ~ 55 us for Orangepi Zero, ~ 35 us for s905 tvbox), ir remote, usb gadget (tested with Orangepis) ... I can upload, not sure if I can modify my install script to something more general but notes can be shared
 
I have started making use of custom shortcuts in the shortcut page. I find this feature very useful. I have been using it when I want to try various settings that can be mapped to a slider, this saves me the trouble of creating numerous config files or constantly editing the config. I also find it very nice to be able to easily add sliders for the config settings that I like to adjsut based on the music I am listening to.

Is it possible to assign a custom shortcut slider to more than one config setting ? For example, it would be nice to be able to use a single slider to change both the low pass and high pass crossover frequency or as another example changing the gain value of multiple chanels in a mixer.

It looks like the custom shortcuts are limited to numerical values and used with sliders, not sure if this is feasable or in line with the intent of the shortcut page but it maybe worth considering adding toggle type shortcuts that could be mapped to bypass or mute settings in the config.