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

Hi

Can‘t use Linux because of missing drivers.
  • Would you recommend windows or MacOS?
  • Which is easier to configure for a beginner?
  • is a macMiniwith M1 chip working?
Personally I feeling much more comfortable with windows, but would choose the better one, if there is any better one between MacOS and Windows.

Thx a lot!
 
WDM is the "normal" driver on windows, that supports wasapi (which CamillaDSP uses).
CamillaDSP requires a single device that presents all channels it's going to output to (or capture from). If you want to output say 4 channels, the interface must present one WDM device with at least 4 channels to be useful. Some devices (Motu for example) have Windows drivers that present a number of stereo devices, which really limits their usefulness. I'm not familiar with the RME drivers.
 

TNT

Member
Joined 2003
Paid Member
I had some trouble in the beginning of my use of the Digiface (opto) - remember? :)

On Mac OS it presents everything as from one device. Below pictures is from my computer using 2 toslinks i.e. 4 channels for a 2 way active system.

This ADAT structure is a bit confusing but there is 4 ADAT per Toslink channel so for a normal stereo Toslink, 8 ADAT channels will be presented...

It will of course look different in Win but I would assume its still as one device - checking a manual should reveal how it is... I suppose its available online...

digif.jpg


//
 
I'm not very interested in CUDA since it's completely tied to Nvidia hardware. But there really isn't much need, any half-decent cpu has enough processing power to do quite long fir filters at high sample rates.

What filter lengths and sample rates do you have in mind?

FWIW:

The cuFFT and NVidia's cuFFTW interface to FFTW3 requires SM50 architecture GPUs and above.
The SM50 (Maxwell released 2014) being deprecated is probably next on the chopping block.

Nvidia cuFFTW
The cuFFTW library provides the (partial) FFTW3 API to facilitate porting of existing FFTW applications.​

Nvida CUDA Deprecation list

Don't know how much of this RUST supports.
 
Last edited:
WDM is the "normal" driver on windows, that supports wasapi (which CamillaDSP uses).
Perfect... and first success. Can send sound from Windows to a not by camillaDSP used output, loop it into a camillaDSP input and can route the to the hardware output ;)
But get some Buffer errors... maybe because the RME is for testing not alone on the USB bus:
2023-11-19 22:41:56.283548 WARN [src\wasapidevice.rs:308] Missing event! Resetting stream. Interval 0.015968749999999865 s, expected 0.01 s
2023-11-19 22:41:56.415615 WARN [src\wasapidevice.rs:345] Playback interrupted, no data available
2023-11-19 22:41:56.425979 INFO [src\wasapidevice.rs:329] Restarting playback after buffer underrun
2023-11-19 22:41:56.525640 WARN [src\wasapidevice.rs:345] Playback interrupted, no data available
2023-11-19 22:41:56.535886 INFO [src\wasapidevice.rs:329] Restarting playback after buffer underrun
2023-11-19 22:41:56.655778 WARN [src\wasapidevice.rs:345] Playback interrupted, no data available
2023-11-19 22:41:56.665908 INFO [src\wasapidevice.rs:329] Restarting playback after buffer underrun
2023-11-19 22:41:57.126274 WARN [src\wasapidevice.rs:345] Playback interrupted, no data available
2023-11-19 22:41:57.135781 INFO [src\wasapidevice.rs:329] Restarting playback after buffer underrun
2023-11-19 22:41:57.215669 WARN [src\wasapidevice.rs:345] Playback interrupted, no data available
2023-11-19 22:41:57.226147 INFO [src\wasapidevice.rs:329] Restarting playback after buffer underrun
2023-11-19 22:41:57.366470 WARN [src\wasapidevice.rs:345] Playback interrupted, no data available
2023-11-19 22:41:57.376042 INFO [src\wasapidevice.rs:329] Restarting playback after buffer underrun

This is my config so far:
---
devices:
samplerate: 96000
chunksize: 2048
target_level: 512
adjust_period: 10
capture:
type: Wasapi
channels: 2
device: "ADAT (1+2) (RME Digiface USB)"
format: FLOAT32LE
playback:
type: Wasapi
channels: 2
device: "default"
format: FLOAT32LE

filters:
volumeexample:
type: Volume
parameters:
ramp_time: 200

mixers:
mono:
channels:
in: 2
out: 2
mapping:
- dest: 0
sources:
- channel: 0
gain: -6
inverted: false
- channel: 1
gain: -6
inverted: false
- dest: 1
sources:
- channel: 0
gain: -6
inverted: false
- channel: 1
gain: -6
inverted: false

pipeline:
- type: Mixer
name: mono
- type: Filter
channel: 0
names:
- volumeexample
- type: Filter
channel: 1
names:
- volumeexample
 
...

I'm not aware of any complete Rust binding for cuFFT, only a partial one that doesn't provide enough of the API to be useable here. But in any case, I have no plans to include any CUDA support.

I rebuilt OpenCV this week to try CUDA support to speed up a scaling/interpolation and graphics rendering thread. What a letdown. None of the drawing functions were implemented in GPU-core and a lot of other functions were limited to a subset of pixel formats. Played with some vector math and it was fast if you did a lot of math while in there, else the CPU was faster.

Doing the math once "in-core" was 4X slower than the CPU. Doing the math 4 times "in-core" was @ even. Doing the math 1000 times "in-core" and it showed its worth. Only problem is, I don't have 1000 graphics planes to composite, but I do have many graphics remders that could be rendered in parallel.. =)

Tested on an i7-9700 and Quadro RTX-A2000.
 
Last edited:
@TNT it behaves like that on Safari and Firefox, the problem is that a 0.1 step on the default zoom etc becomes a little less that one pixel. Some values fall between pixels and then you can't reach them by dragging the slider. A bit annoying, and not really possible to fix without making the slider larger or reducing the range. Neither is very appealing so I made a workaround, now double clicking the slider resets it to 0.0.
 
  • Thank You
Reactions: 1 user

TNT

Member
Joined 2003
Paid Member
Hi! Master of tweaking FR here :)

For ver 3... How about a version handling, per file, that saves and stores, automatically a version of a file for every Save done to the file. As of now, the Undo function is per individual filter action, which can be handy but when I fiddle, I see more like that it is a Save that is the checkpoint. I do changes without save and in a session I manage to keep track of what I did and jump back and forth via Reload DSP of current file (which I did not save to) to get back to "zero".

I could achieve the above by always do a new filename for each time I think I progressed to the point of being save worthy... but this fills up the file tree. I envision that we only see the Filenames as today but there is an added function to go one level down to see the versions per File and work with these (load, delete ...).

Maybe there is a little sub number attached to the Filename, given 1 at creation, so one can see from the top view what has been going on. Or a column....

By all means - keep the Redo as per today...

//
 
Thanks @HenrikEnquist!

Anything special needed to run the venv script on a rpi4 running ubuntu? I attempted to run it but it says I am not running Linux or MacOS. Here are the errors along with the output of uname -s and uname -m.

Rich (BB code):
michael3@raspberrypi3:~/camilladsp-setupscripts-master$./install_venv.sh
./install_venv.sh: 8: [: Linux: unexpected operator
./install_venv.sh: 20: [: Linux: unexpected operator
This script must run on Linux or MacOS!
michael3@raspberrypi3:~/camilladsp-setupscripts-master$ uname -s
Linux
michael3@raspberrypi3:~/camilladsp-setupscripts-master$ uname -m
aarch64

Michael