Comment 45 for bug 871133

Revision history for this message
Alexander Thomas (doctor-lex) wrote :

Still not fixed in 16.04. I just upgraded from Debian wheezy where one nudge of the scroll wheel changed the alsamixer control by a consistent 5dB. This was bad already, because 5dB is too coarse. It feels like a compromise between those who want to use the scroll wheel for fine volume adjustments (which would require a step no larger than 2dB) and those who want to use it as a mute button (see Bug #551725). Unfortunately this compromise benefits nobody, because it falls in between the only two sensible use cases.

The slider behavior in Xenial is worse. The amplitude follows what appears to be a quadratic function. This feels like someone lacking proper knowledge about audio had a go at fixing the previous volume slider that, being a bad compromise, didn't work for anyone. Step size varies depending on the slider position. I use sensitive earphones that are already quite loud with the slider near the leftmost position, where step sizes are about 8dB, which is awful.

Anyone touching code that involves audio, should perhaps first read my rant about software volume controls:
http://www.dr-lex.be/info-stuff/volumecontrols.html

The position of the slider should map linearly to dB values, or in other words the volume multiplication factor must be an exponential function of slider position. It _will_ be unavoidable that for some users the slider will either have a ‘dead zone’ or a ‘too loud’ zone, because the maximum loudness of connected loudspeakers or headphones can vary wildly.

Any interface that changes the volume by discrete increments like volume keys or the scroll wheel, must use fixed dB steps, in other words a fixed multiplication factor for linear amplitude. A good size for this step is 2 dB. To cater for those who only want to use the volume keys or scroll wheel to quickly make huge volume adjustments, the step size should indeed be configurable as this bug suggests. A drop-down menu with values of 1dB, 2dB, 3dB, and 6dB would be sufficient.