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

Phase seems a hot topic: There is (right now) an illustrative, interesting and revealing discussion about phase alignment for mjultiway systems along with FIR filters at the german forum aktives-hoeren.de:
https://www.aktives-hoeren.de/viewtopic.php?f=40&t=13291So using dedicated, single FIR filters including all corrections for each driver within CamillaDSP would be a better option than re-building standard filters by going along with IIR's. Maybe one could first set up a system with IIR's, and then upgrade to FIR's. Thanks to CamillaDSP's ability to provide both options.
Thanks for the link. I am trying to get DRC-FIR to work at the driver level and one of the things I am currently working on is automating the phase adjustment of each driver so they align in unison over the XO regions as an entire system. I am attempting to modify DRC-FIR to use the individual driver XO FIRs as the correction solution's "target models" and then output the composite of the individual XOs with their respective solution for so they can be directly dropped into CamillaDSP. Vanilla DRC-FIR works at the full-range speaker level, thus can't uniquely address individual drivers in the XO regions. Any "correction" it applies is applied to both drivers even if one driver is correct and the other isn't. DRC-FIR appears to assume analog/passive XOs, not addressing digital XOs.

From the thread you posted:

"... The aim is therefore to first optimize the phase behavior of each driver in the frequency range intended for it. ..."

This is exactly what I am trying to automate now.
 
Last edited:
Phase seems a hot topic: There is (right now) an illustrative, interesting and revealing discussion about phase alignment for mjultiway systems along with FIR filters at the german forum aktives-hoeren.de:
https://www.aktives-hoeren.de/viewtopic.php?f=40&t=13291So using dedicated, single FIR filters including all corrections for each driver within CamillaDSP would be a better option than re-building standard filters by going along with IIR's. Maybe one could first set up a system with IIR's, and then upgrade to FIR's. Thanks to CamillaDSP's ability to provide both options.
Uli is a funny guy !!!

"... In general, one can first postulate that a 1:1 reproduction of a natural sound event via a loudspeaker requires that amplitudes are reproduced unchanged and that phases do not rotate, which lead to time errors during reproduction. Unfortunately, the reality is different. It's still amazing what the brain forgives. I'm often humbled by how well we can listen to music, despite all the inaccuracies and negative influences, and how rarely anyone runs away screaming. Of course, the exceptions are those who hear with non-aligned silver crystals in the DC line of the power supply. ..."
 
Uli is a funny guy !!!

"... I'm often humbled by how well we can listen to music, despite all the inaccuracies and negative influences, and how rarely anyone runs away screaming. Of course, the exceptions are those who hear with non-aligned silver crystals in the DC line of the power supply. ..."

Yes! He has a decent sense of humour. Sand this one is humourfully aimed at the partially quite weird subjectivists posting theirs exciting findings into aktives-hoeren.de.
 
New preview release, v1.0.0-rc2!
Get it from here: https://github.com/HEnquist/camilladsp/releases/tag/v1.0.0-rc2
Changes since rc1 are bugfixes in the Alsa backend, and improvements in CoreAudio backend.

For some reason the cross-compilation job for aarch64 failed, so for now there is no prebuilt binary for aarch64. There has probably been some change in cargo or the cross tool. I'll try to get that running as soon as possible.
 
Hello and sorry if it has been already discussed. Has someone managed to build a sort of standalone raspberry pi/camilladsp dsp processor with a usb card (preferably cheap) doing spdif in and out simultaneously?
I have a sound blaster x-fi HD that has toslink in and out, but alsa does not seem to recognise the optical in (it does show mic, line and phonograph in but not spdif/optical).
I have looked at the hifiberry digi+ i/o but seems that everyone who tried to do simultaneously in and out didn't manage...
Any recommendations for a cheap usb card proven to work? (Optical in necessary. As it is to use with my tv, it will be constantly at 48khz)
Thanks!
 
MRamone:

I do not have this device, but people generally report it works at basic samplerates.

Please post output of commands 'aplay -l', 'arecord -l' and 'amixer -c YOUR_CARD_ID contents'
marcosch@raspberricamilladsp:~$ aplay -l
** List of PLAYBACK Hardware Devices **
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
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
Subdevice #7: subdevice #7
card 1: HD [USB Sound Blaster HD], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: HD [USB Sound Blaster HD], device 1: USB Audio [USB Audio #1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: HD [USB Sound Blaster HD], device 2: USB Audio [USB Audio #2]
Subdevices: 1/1
Subdevice #0: subdevice #0


marcosch@raspberricamilladsp:~$ arecord -l
** List of CAPTURE Hardware Devices **
card 1: HD [USB Sound Blaster HD], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: HD [USB Sound Blaster HD], device 1: USB Audio [USB Audio #1]
Subdevices: 1/1
Subdevice #0: subdevice #0


marcosch@raspberricamilladsp:~$ amixer -c HD contents
numid=6,iface=MIXER,name='PCM Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=7,iface=MIXER,name='PCM Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=128,step=0
: values=128,128
| dBminmax-min=-64.00dB,max=0.00dB
numid=8,iface=MIXER,name='PCM Capture Source'
; type=ENUMERATED,access=rw------,values=1,items=3
; Item #0 'Mic'
; Item #1 'Line'
; Item #2 'Phonograph'
: values=1
numid=4,iface=PCM,name='Capture Channel Map'
; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
: values=0,0
| container
| chmap-fixed=FL,FR
numid=1,iface=PCM,name='Playback Channel Map'
; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
: values=0,0
| container
| chmap-fixed=FL,FR
numid=5,iface=PCM,name='Capture Channel Map',device=1
; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
: values=0,0
| container
| chmap-fixed=FL,FR
numid=2,iface=PCM,name='Playback Channel Map',device=1
; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
: values=0,0
| container
| chmap-fixed=FL,FR
numid=3,iface=PCM,name='Playback Channel Map',device=2
; type=INTEGER,access=r----R--,values=2,min=0,max=36,step=0
: values=0,0
| container
| chmap-fixed=FL,FR
 
also, in case it helps:

marcosch@raspberricamilladsp:~$ cat /proc/asound/HD/stream0
Creative Technology USB Sound Blaster HD at usb-0000:01:00.0-1.2, full speed : USB Audio

Playback:
Status: Stop
Interface 1
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 0x01 (1 OUT) (ASYNC)
Rates: 48000
Bits: 16
Channel map: FL FR
Sync Endpoint: 0x81 (1 IN)
Sync EP Interface: 1
Sync EP Altset: 1
Implicit Feedback Mode: No
Interface 1
Altset 2
Format: S24_3LE
Channels: 2
Endpoint: 0x01 (1 OUT) (ASYNC)
Rates: 48000
Bits: 24
Channel map: FL FR
Sync Endpoint: 0x81 (1 IN)
Sync EP Interface: 1
Sync EP Altset: 2
Implicit Feedback Mode: No
Interface 1
Altset 3
Format: S16_LE
Channels: 2
Endpoint: 0x01 (1 OUT) (ASYNC)
Rates: 96000
Bits: 16
Channel map: FL FR
Sync Endpoint: 0x81 (1 IN)
Sync EP Interface: 1
Sync EP Altset: 3
Implicit Feedback Mode: No
Interface 1
Altset 4
Format: S24_3LE
Channels: 2
Endpoint: 0x01 (1 OUT) (ASYNC)
Rates: 96000
Bits: 24
Channel map: FL FR
Sync Endpoint: 0x81 (1 IN)
Sync EP Interface: 1
Sync EP Altset: 4
Implicit Feedback Mode: No

Capture:
Status: Stop
Interface 3
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 0x82 (2 IN) (ASYNC)
Rates: 48000
Bits: 16
Channel map: FL FR
Interface 3
Altset 2
Format: S24_3LE
Channels: 2
Endpoint: 0x82 (2 IN) (ASYNC)
Rates: 48000
Bits: 24
Channel map: FL FR
Interface 3
Altset 3
Format: S16_LE
Channels: 2
Endpoint: 0x82 (2 IN) (ASYNC)
Rates: 96000
Bits: 16
Channel map: FL FR
Interface 3
Altset 4
Format: S24_3LE
Channels: 2
Endpoint: 0x82 (2 IN) (ASYNC)
Rates: 96000
Bits: 24
Channel map: FL FR
 
I have some problems getting camilladsp with the alsa-cdsp plugin to run smoothly.

here are my configs...

$HOME/.asoundrc:
https://pastebin.com/byceTCK2
camilladsp.config.template:
https://pastebin.com/it4EgnZ7
and the camilladsp logfile:
https://pastebin.com/JL4sbjh3
and finally the console output from aplay -D camilla 1.wav (16 bit, 44.1kHz file):
Code:
Playing WAVE '1.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
CDSP Plugin ERROR: XRUN OCCURRED!
underrun!!! (at least 454.999 ms long)
CDSP Plugin ERROR: XRUN OCCURRED!
underrun!!! (at least 489.863 ms long)
CDSP Plugin ERROR: XRUN OCCURRED!
underrun!!! (at least 467.594 ms long)

I only played a few seconds, the XRUNs occurr right away. Don't think it should be a hardware problem, at least the machine is plenty fast with a AMD Ryzen 9 5900HX and 32GB of RAM, it's the same behaviour on the internal soundcard of the laptop as well. Also tried with rate adjust enabled and Async resampler, all the same.

camilladsp version is the latest 1.0.0-rc2...