[alsa-devel] [PATCH] [alsa-lib] pcm: softvol: Allow up to 90 dB of gain

Takashi Iwai tiwai at suse.de
Fri Apr 20 09:34:11 CEST 2018


On Wed, 18 Apr 2018 17:03:09 +0200,
Ricard Wanderlof wrote:
> 
> 
> The gain algorithm used in softvol can handle gain factors of up to
> 32767 which is slightly more than 90 dB, so allow a max_dB of 90 dB.
> This doesn't affect existing asound.conf files, but does allow a
> max_dB of up to 90 dB when needed.
> 
> Tested using Audacity that there is no undue distorsion or other
> artefacts when 90 dB of gain is applied to a suitable signal (i.e.
> a signal quiet enough not be clipped whan applying 90 dB of gain).
> 
> Signed-off-by: Ricard Wanderlof <ricardw at axis.com>
> ---
> 
> I discussed this with Takashi and Jaroslav back in January, but the 
> discussion petered out and didn't reach a conclusion on which maximum gain 
> would be acceptable, so I thought I'd send an actual patch and we can take 
> it from here.

Ah, this ended up to null just because I went to my vacation...

> We have a couple of usecases where we are using digital microphones, which 
> have 24 bit resolution, and with an acoustic overload point of about 120 
> dB SPL, the output level can be quite low when the sound source is a fair 
> distance form the microphone. The current softvol limit of 50 dB is 
> therefore a bit restrictive.
> 
> When studying the code, it becomes apparent that the limit of the actual 
> gain function is a gain factor of 32767, which corresponds to 90.3 dB. So 
> it makes sense to set the MAX_DB_UPPER_LIMIT (whose only function is to 
> cause _snd_pcm_softvol_open() to bail out and emit an error message if the 
> gain is set higher than this limit) to 90 dB as it corresponds to the 
> technical limitations of the gain algorithm. Granted, 90 dB is probably 
> more than most people need, but there's no real harm in allowing a large 
> gain; the user gain limit in a given application is still set by the 
> max_dB parameter in asound.conf . The worst that can happen is that the 
> signal becomes clipped as would happen with any signal if the applied gain 
> drives it over 0 dB. If in fact a signal is close to 0 dB to start with, 
> then the resulting clipping when increased by 90 dB is not much worse than 
> when increased by 50 dB.

Honestly speaking, I still don't like to change something just because
the number can reach.  But this is a minor issue and if any damage
happens, it can be said to be self-responsibility, so I applied as
is.


thanks,

Takashi


More information about the Alsa-devel mailing list