From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH] [alsa-lib] pcm: softvol: Allow up to 90 dB of gain Date: Fri, 20 Apr 2018 09:34:11 +0200 Message-ID: References: Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id 193B2266CA1 for ; Fri, 20 Apr 2018 09:34:12 +0200 (CEST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Ricard Wanderlof Cc: alsa-devel List-Id: alsa-devel@alsa-project.org 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 > --- > > 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