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

Also a conda error...

audio1@Audio1 pycamilla-060 % ./install_mac_intel.sh

CondaValueError: prefix already exists: /opt/anaconda3/envs/camillagui

--- Download Camillagui
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 622 100 622 0 0 2101 0 --:--:-- --:--:-- --:--:-- 2101
100 1658k 100 1658k 0 0 444k 0 0:00:03 0:00:03 --:--:-- 507k
curl: Saved to filename 'camillagui.zip'
--- Uncompress Camillagui
mkdir: camillagui: File exists
Archive: camillagui.zip
inflating: camillagui/LICENSE.txt
inflating: camillagui/README.md
inflating: camillagui/backend/views.py
inflating: camillagui/backend/filterdefaults.py
extracting: camillagui/backend/version.py
extracting: camillagui/backend/__init__.py
inflating: camillagui/backend/filemanagement.py
inflating: camillagui/backend/routes.py
inflating: camillagui/backend/settings.py
inflating: camillagui/build/precache-manifest.5e6c675b70ef6a3fe73d0209febfe347.js
inflating: camillagui/build/logo512.png
extracting: camillagui/build/.put_statics_here
inflating: camillagui/build/manifest.json
inflating: camillagui/build/service-worker.js
inflating: camillagui/build/static/media/camilladsp.95719842.svg
inflating: camillagui/build/static/css/2.975d6916.chunk.css.map
inflating: camillagui/build/static/css/main.56bdf14e.chunk.css
inflating: camillagui/build/static/css/2.975d6916.chunk.css
inflating: camillagui/build/static/css/main.56bdf14e.chunk.css.map
inflating: camillagui/build/static/js/2.fd49ece5.chunk.js.LICENSE.txt
inflating: camillagui/build/static/js/main.1b3ac690.chunk.js.map
inflating: camillagui/build/static/js/main.1b3ac690.chunk.js
inflating: camillagui/build/static/js/runtime-main.422581ec.js
inflating: camillagui/build/static/js/2.fd49ece5.chunk.js
inflating: camillagui/build/static/js/2.fd49ece5.chunk.js.map
inflating: camillagui/build/static/js/runtime-main.422581ec.js.map
inflating: camillagui/build/favicon.ico
inflating: camillagui/build/robots.txt
inflating: camillagui/build/logo192.png
inflating: camillagui/build/css-variables.css
inflating: camillagui/build/asset-manifest.json
inflating: camillagui/build/index.html
inflating: camillagui/config/gui-config.yml
inflating: camillagui/config/camillagui.yml
inflating: camillagui/main.py
--- Create folders for backend
--- Download CamillaDSP binary
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 637 100 637 0 0 2578 0 --:--:-- --:--:-- --:--:-- 2578
100 1656k 100 1656k 0 0 2932k 0 --:--:-- --:--:-- --:--:-- 2932k
curl: Saved to filename 'camilladsp-macos-amd64.tar.gz'
--- Uncompress CamillaDSP binary
x camilladsp
audio1@Audio1 pycamilla-060 %
 
I really appreciate the feedback! I'll replace "clone this repo" with something more helpful! Github lets you download as a zip by default, I'll just mention that and put in a link.
I'm also working on updating the script. It has to check if a user or system install of conda is used, and if the environment already exists or not. If it exists, it has to be updated, if not it ust be created. But trying to create an existing one gives an error.
 
Maybe there is a need for a version specific environment as if I would like to start an older version that is still "installed" / available, it would reuse the environment from the latest - that is, if they have the same name!?

//
 
Thanks, just finished the PR for inclusion in moOde 7.4 🙂
:up:
Maybe there is a need for a version specific environment as if I would like to start an older version that is still "installed" / available, it would reuse the environment from the latest - that is, if they have the same name!?

//
Yes it will reuse and update the existing environment. I think its easier to just have one. But you can make a clone of the old one before updating. That's just a single command, I'll add that to the readme.
 
Is it possible to "configure" the ALSA loopback device?

I'm running Roon/CamillaDSP on RPi4/UltraLite-mk5 just fine already, but I'm wondering about a wrinkle between Roon and the Loopback device.

The issue is that Roon doesn't seem to fully understand the capabilities of the downstream audio device in terms of the sample rate, bit depth and channel count until an audio stream is played. Ordinarily various parameters can be set in Roon prior to replay, but in the case of a loopback device these are typically greyed out or not listed. Sometimes they appear after playing something, but not reliably.

Once Roon is playing, it clearly understands that the loopback device it's addressing is 2 channel of S32LE at 192kHz, which is CamillaDSP's input device configuration. Given that I'm using a hw loopback, ALSA isn't making any conversions, so that I'm guessing that's why the capture end has to match the playback end of the loopback device.

However, I'd like Roon to know the capabilities of the loopback device in advance of starting to play.

I know I'm speculating here, but I suspect that Roon struggles because without restricting the ALSA loopback's capabilities, it can do too much for Roon to cope with! In particular, since Roon only offers 2, 6 and 8 channels out as standard, the loopback capability of as many as 32 falls outside Roon's range.

Hence the question: is it possible to use asound.rc or asound.conf to restrict the loopback device? Or is that in fact their sole purpose?! I've Googled and read lots but it's still not clear to me. Thanks
 
EQ vs. samplerate - Warning maybee a little offtopic!

Hi here 🙂

I've build some new speakers Asathor - a JBL 4367 Clone ...

While they are very good in my opinion, i will of course try to at least meassure them 😀 (Cannot resist!)
I will definitely also try to make a target curve in REW with a BBC-dip (a dip in around 4KhZ area)...

My microphone is a UMIK 1 (48kHz native & only)

I've been there before, but it's a "long" time since so i have some quistion's before i start the journey.

1. If i make a target curve in REW (Generic EG) and export this .xml file i can convert with this python script Henrik introduced in post #949 CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.
Giving me the EQ for the CDSP pipeline.
Is this correct?
Snip from post #949 :
Code:
filters: 
  leftFront_1: 
    parameters: 
      freq: 102.0 
      gain: -9.8 
      q: 3.52 
      type: Peaking 
    type: Biquad 
  leftFront_2: 
    parameters: 
      freq: 154.0 
      gain: 5.1 
      q: 6.14 
      type: Peaking 
    type: Biquad 

...

So as far as i remember, thoose EQ's are not samplerate dependent, is this true?

My Camilla-DSP and player is running on a Raspberry Pi 4, attached to my Amanero USB and DAC as usual, and i normally install the same on my Linux laptop for meassuring... But i was thinking if there was a better way of doing this? - I can't see how except installing everything (REW, java etc... etc..) on the Pi, which i really would avoid)

Good day out there and happy listning.

Jesper.
 
1. If i make a target curve in REW (Generic EG) and export this .xml file i can convert with this python script Henrik introduced in post #949 CamillaDSP - Cross-platform IIR and FIR engine for crossovers, room correction etc.
Giving me the EQ for the CDSP pipeline.
Is this correct?
Yes, that should work just fine.

So as far as i remember, thoose EQ's are not samplerate dependent, is this true?
Yes exactly, all Biquads (except the "Free" type) work at any samplerate without needing any change.
 
I know I'm speculating here, but I suspect that Roon struggles because without restricting the ALSA loopback's capabilities, it can do too much for Roon to cope with!

I also use Roon with an rpi4 which is connected to an 8 channel USB DAC. The loop back sample rate, # of channels and bit depth get set by Camilla dsp capture device settings. I simply configure the roon dsp to automatically convert all sample rate to that of the loopback. Roon automatically convert the bit depth to that of the loopback.