[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