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

Question! TNT had the idea of adding a mute option in the mixer. Where should that be then?
Code:
mixers: 
  example: 
    channels: 
      in: 2 
      out: 4 
    mapping: 
      - dest: 0 

        mute: false <--- here? option A

        sources: 
          - channel: 0 
            gain: -3 
            inverted: false
            mute: false <--- here? option B

          - channel: 1 
            gain: 0 
            inverted: false 
      - dest: 1 
        sources: 
          - channel: 0 
            gain: 0 
            inverted: false 
          - channel: 1 
            gain: 0 
            inverted: false
Option A would silence a complete output channel from the mixer. Option B would instead silence a single input channel, for one of the output channels.


And maybe the most important questions.. How would this be used, and what problem does it solve?
 

TNT

Member
Joined 2003
Paid Member
Hi!

If one have a mixer that goes for example 2->4 (i.e. R&L -> 2xR&L) it would be very good to be able to shut the whole L off by muting the Capture side but it would alos be nice to be able to mute only say L of R&L(1) - I suppose that would be the individual Replay channels. So all external interface to the mixer. I suppose it's the same as the VU meters :)

Benefit: I think when setting up multi channels system with subwoofers and ambient channels and what not - measuring individual channels without interference from others - without having to switch off amps or pull cables. Etc... :)

//
 
Hi guys :) I've finally chewed through all previous 150 pages of this thread and I can't wait to buy some new hardware and start playing with CamillaDSP.

I want to setup a 3-way crossover for my 2-way speakers and a pair of subs. I have three expensive stereo DACs that I want to keep. They have USB and toslink inputs. Since proper sync between separately clocked devices is an issue, I decided to go with an RME Digiface USB to feed the DACs via toslink so they share the same clock. However, the Digiface USB isn't supported on Linux, and since I want to get away from the built-in crappy resampler in Windows, I've decided to go with a Mac.

Can I expect CamillaDSP to run on the new Mac Mini M1?

How would I control the volume on a Mac? I guess this is a question for TNT :)
 

TNT

Member
Joined 2003
Paid Member
Hi!

For now, I use Squeezeplayer (+server) to serve the "dishes" :) so I use its volume control. But there is a volume control built into Camilla now and I plan to move to that once I have built a proper wireless controller. I will remain with SB but set its volume to fixed 100% once I have the control done by Camilla. If the SQ don't decrease - but I'm not worried.

//
 

TNT

Member
Joined 2003
Paid Member
Option A for me, I find the ability to mute output channels very convenient when measuring/testing multiway systsems. I know this can be done by entering 0 for the gain in the mixer but a mute function means you do not have to remember the gain value and reenter it.

Zero - really - wouldn't that mean no attenuation? Equal in->out?

-120dB gain would be silent!?

//
 
Alright, seems like option A is the winner. I'll add that. Muting input channels is a little trickier since there is no easy place in the mixer to do just that. Option B would just mute for a single output, probably not very convenient.

A workaround (after option A is in place) is to define a 1:1 mixer and put that first in the pipeline. Then the outputs of that one can be muted, which will give the same result.


CamillaDSP will run just fine on a mac with the M1 chip. I got a report saying that the x86_64 version via Rosetta has some performance issues, but a version built for arm works fine. The next beta release will have a prebuilt binary for the new macs.



And yes, 0dB gain is equal in->out. Silent would be below -120dB.
 
CamillaDSP will run just fine on a mac with the M1 chip. I got a report saying that the x86_64 version via Rosetta has some performance issues, but a version built for arm works fine. The next beta release will have a prebuilt binary for the new macs.

Great! My use case is to play back audio from a PC via toslink to an RME Digiface USB connected to a headless Mac Mini M1. CamillaDSP will then perform crossover duties and route the processed audio streams out through the Digiface toslink outputs into the three connected stereo DACs. The volume will be controlled through the websocket interface, eliminating the need for preamps.

On Windows you can use WASAPI Exclusive to bypass the Windows mixer and its resampler, but that also prevents you from modifying the audio stream through e.g. Equalizer APO. On a Mac, will CamillaDSP autodetect the input sample rate and route the result to the output channels without performing any resampling (except rate adjustment) in either CamillaDSP or the underlying OS?
 
Ok! It looks as if the Digiface can lock it's sample clock to the incoming spdif signal. If you use that function you should be able to run without the asynchronous resampler.
The question is what happens if the sample rate on the spdif changes. Every card seems to handle that differently. Some break the capture. Some just go on feeding data at the new rate (while still officially running at thr old rate). Some have a SRC chip on the input and resample whatever comes in to the configured rate. You'll probably just need to try and see.

Camilladsp will not do anything automatically. But it monitors the actual rate of the incoming signal and you can watch that with a python script. Then if it changes the script can ask camilladsp to load a different config.
 

TNT

Member
Joined 2003
Paid Member
I run it as per attachment and after I changed to reset the buffer at silence, I experience no more delays or pops. I do not use Digiface syncing via spdif but "clock mode" as internal. Other reports that internal sound better. I concur.

//
 

Attachments

  • conf.jpg
    conf.jpg
    163.8 KB · Views: 260
Time for the next beta of 0.5.0!

Beta 3 available here: Release v0.5.0-beta3 * HEnquist/camilladsp * GitHub


Changes since beta 2:

  • Skip processing of channels that are not used in the pipeline.
  • Update to new faster RustFFT.
  • Overriding samplerate also scales chunksize.
  • Use updated faster resampler.
  • Enable experimental neon support in resampler via neon feature.
  • Add Loudness volume control filter.
  • Add mute options in mixer and Gain filters.
  • Add mute function to Volume and Loudness filters, with websocket commands.
This version also includes a binary for Mac on Arm (the new macs with the M1 cpu). I also changed the name of the 64-bit arm from "armv8" to "aarch64" to be consistent. In the next version I will also rename the "amd64" to "x86_64" since the amd64 name seems to cause confusion.
 
How does the loudness filter work?
See this section of the readme: GitHub - HEnquist/camilladsp at develop
In short, you define a reference level in dB. Above this level, it behaves just like a simple volume control (like the Volume filter). Below, it adds loudness compensation by boosting above 3500 Hz and below 70 Hz. You can configure how large the boost should be.
 
Hmm, not getting any output from CamillaDSP on my Mac Mini M1. Config attached.

In this simple case I just want to receive audio from another PC via toslink through the Digiface USB capture device channel 1/2 and send it back out through Digiface USB playback device channel 1/2 and 3/4. However, I can't tell from the verbose output below whether CamillaDSP is actually processing any audio.

The Digiface USB built-in mixer named TotalMix FX is capturing the incoming audio (hardware input) and playing it back (hardware output), so there's no hardware limitations. However, it's not registering any software playback.

I'm not using any playback applications or loop-back devices, since I only want CamillaDSP to process incoming audio from the capture device and send it back out again through the playback device. I don't want to use any audio applications on the Mac except for CamillaDSP as I don't want any tampering of the incoming signal except for the intended processing.

What am I missing?

Code:
sundebo@m1 ~ % ./camilladsp -v config.yml
Jan 26 15:42:38.817 DEBG Read config file Some("config.yml"), module: camilladsp
Jan 26 15:42:38.823 DEBG Config is valid, module: camilladsp
Jan 26 15:42:38.823 DEBG Wait for config, module: camilladsp
Jan 26 15:42:38.823 DEBG Config ready, module: camilladsp
Jan 26 15:42:38.823 DEBG Using channels [true, true], module: camilladsp
Jan 26 15:42:38.823 DEBG Build new pipeline, module: camillalib::filters
Jan 26 15:42:38.824 DEBG build filters, waiting to start processing loop, module: camillalib::processing
Jan 26 15:42:38.848 DEBG Opened CPAL playback device Digiface USB (24011413), module: camillalib::cpaldevice
Jan 26 15:42:38.848 DEBG Opened CPAL capture device Digiface USB (24011413), module: camillalib::cpaldevice
Jan 26 15:42:38.848 DEBG Playback thread ready to start, module: camilladsp
Jan 26 15:42:38.848 DEBG Capture thread ready to start, module: camilladsp
Jan 26 15:42:38.848 DEBG Both capture and playback ready, release barrier, module: camilladsp
Jan 26 15:42:39.084 DEBG Starting capture loop, module: camillalib::cpaldevice
Jan 26 15:42:39.084 DEBG Starting playback loop, module: camillalib::cpaldevice
 

Attachments

  • config.yml.txt
    1,005 bytes · Views: 44