[PATCH] volumes: Implement options to bypass the base volume system.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2011-09-08 at 21:30 +0100, Colin Guthrie wrote:
> When the underlying hardware (typically ALSA) reports that the dB
> volume ranges to to a value >0dB, a 'base volume' is automatically
> added. This system allows the user to utilise the full range of the
> underlying hardware controls (ranging from PA_VOLUME_MIN to
> PA_VOLUME_NORM) but still get informed, via UI clues, as to the point
> the hardware reports as 0dB (i.e. the point at which your sound should
> be unmodified).
> 
> Sadly, this system does not work for some users. Sometimes the range
> where the volume remains below the underlying 0dB point is very small
> (e.g. from 0 to 20%). In this scenario, things are made very awkward for
> users as the active range they typically want to adjust is so small.
> 
> Added to the above scenario, if the user has flat volumes enabled they
> will also get this limited range within application volume controls.
> 
> This particular scenario has prompted some applications to implement
> their own work arounds to this problem and scale the whole volume range
> they expose to the base volume when flat volumes are enabled. This
> means that the scale the user sees inside the application will be
> different to e.g. the scale given by panel applet volume controls,
> OSD displays+volume keys and full blown mixers GUIs.
> 
> This inconsistency in applications is what has prompted this feature.
> It allows users to choose whether or not they want to expose the base
> volume and get the full range of h/w control (as currently), or whether
> they would prefer to honour the 0dB of the underlying h/w and set
> that to our 0dB point (aka 100%). UIs which honour PA_VOLUME_UI_MAX will
> still offer the user some of the additional range their h/w supports
> >0dB.
> 
> The behaviour remains unchanged by default and users will have to set
> the feature manually in daemon.conf. The option is split so the user can
> choose to apply it separately for sinks (where the problem is most
> visible) and sources.

IMO this is too large a change for 1.0 and we should only look at this
after the release.

That said, I think this makes more sense as a per-device option
(example: if I to use base_volume for internal mic, but not for my
webcam mic). On the UI side, this would be something like a checkbox
next to sinks/sources in pavucontrol to "disable hardware amplification"
or some such which would cause us to use a (PA_VOLUME_MIN, base_volume)
range uniformly. The default would be to use (PA_VOLUME_MIN,
PA_VOLUME_NORM).

We could then have a way to configure overrides for this default
per-device, so in my example above, my internal mic would have a
card/model-specific override to forces a (MIN, base_volume) range.

Probably needs some fleshing out, but hopefully the basic idea makes
sense.

Cheers,
Arun



[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux