Thank you for your donation!


Cloudsmith graciously provides open-source package management and distribution for our project.


Instruction Guide Loudness compensated volume control with CamillaDSP
#7
(10-11-2022, 02:41 PM)Tim Curtis Wrote:
(10-11-2022, 12:21 PM)roderickvd Wrote:
(10-11-2022, 10:33 AM)Tim Curtis Wrote: I don't have much experience with Camilla but what happens to volume without the Dummy mixer and volume proxy config? Isn't it still processed by Camilla before it outputs the PCM stream to the device?

In that case CamillaDSP does no volume attenuation, and does all other processing at 0.0 dB. Before the PCM “enters” CamillaDSP it is up to the renderer to control the volume.

Because CamillaDSP is a plug-in to Alsa and not an output device, it offers no Alsa mixer itself.

I don't think Camilla is an ALSA plugin (LADSPA) but rather a standalone application that does DSP. On Linux it's fed by an ALSA output plugin named alsa-cdsp. My understanding is that its purpose is to automatically configure the correct source sample rate in Camilla when song files of varying sample rates are being played.

Yes and no:
  • Yes, CamillaDSP is a standalone process.
  • Yes, alsa-cdsp is an Alsa I/O plugin that launches a CamillaDSP process and pipes data to it.
  • No, its purpose is not to correct source sample rates. CamillaDSP handles PCM sample input at any rate (well, up to 384 kHz I think). In fact CamillaDSP (the process, not the plugin) can then be configured to resample it before sending it to the output. Specifying channels and rates in /etc/alsa/conf.d/camilladsp.conf only aids to limit CamillaDSP to supported output configurations.
Quote:I'm still a bit confused about volume handling though because Camilla can do things like EQ which manipulates volume and the Pipeline editor also has a volume Mixer tab.

I can imagine. It may help to recognise that CamillaDSP's mixer is not the same as an Alsa mixer. In CamillaDSP:
  • Mixers route audio between channels, and increase or decrease the number of channels in the pipeline. Do not be misled by the gain parameter of a mixer it is there to set a fixed pregain, not to serve as volume control. Example use case: crossfeeding, level-matching and preventing clipping. 
  • Filters manipulate samples in one way or the other. With respect to volume, there are three relevant filters: Gain (again, fixed pregain, not a volume control), Volume (volume control with ramp-up and ramp-down) and Loudness (like Volume but with loudness correction).
  • The pipeline defines the processing steps between input and output. It is essentially a list of filters and/or mixers in sequential order. So mixers and filters only actually do something if you hook them up in a pipeline.
To give you an idea, this is a pipeline which first does a Chu Moy crossfeed and then loudness corrected volume control:

   

In this screenshot you see CamillaDSP's current volume setting alongside the defined loudnessvol filter. How this works is that Loudness filter "listens" to this volume setting and does the actual attenuation. You could also have used a simple Volume filter of course:

   

To reiterate, the volume setting at the top left (here: -21.2 dB) is just the setting. By itself it does not attenuation. It needs a filter for that, and the filter must be hooked into the pipeline.

By default CamillaDSP's volume is set to 0.0 dB. It requires manipulation to make it anything else: be it the volume slider in CamillaDSP's GUI, be it dummyvol2cdsp or some other means. CamillaDSP does not provide a Alsa mixer control for volume control.

Hopefully this clears things up? Let me know if you have any further questions. CamillaDSP is an amazing tool in the shed and I can heartily recommend it.
Reply


Messages In This Thread
RE: Loudness compensated volume control with CamillaDSP - by roderickvd - 10-11-2022, 07:24 PM

Forum Jump: