[pulseaudio-discuss] Volume problems in Pulse and alsamixer.

Lennart Poettering lennart at poettering.net
Sat May 23 14:49:34 PDT 2009


On Sat, 23.05.09 15:50, Jud Craft (craftjml at gmail.com) wrote:

> Hello.  Just installed F11 and made a note about the sound.  I hate to
> waste anybody's time with something obvious, but...
> 
> Why does Pulseaudio (both in pavucontrol and in the new Sound
> Properties panel) not scale exactly with Alsamixer?

Because PA exposes the same volume scale mapping on all hardware.

In 0.9.15 we mapped 0% on the volume scale to -90dB and 100% to 0dB,
in between the mapping between those percentages and the dB scale was
linear (i.e. to the effect that we had an overall logarithmic
mapping).

This mapping is not particularly well chosen since it gives too much
control over the uninteresting parts below -20dB and too little
control over the 'interesting' parts above -20dB. That's why I modified
the mapping in PA git. It's now cubic, which is supposed to be feel
more 'natural'.

So, coming back to how PA maps those volumes to ALSA: alsamixer will expose
the exact discrete volume steps of the sound card and show dB
information just as little help at the side. PA however controls the
volume in dB and if the hw doesn't provide the requested volume step
we go to the next higher and then attenuate by the remaining factor in
software. That way we can provide the same volume range and granularity on all
hardware with the same mapping from the UI to the attenuation
factor. So basically, while tha mapping from those percentages to the
loudness is different in PA and alsamixer, the dB scaling is mostly
the same -- except when it is not... 

ALSA does not define any reference point for the dB scale it exports
in its mixer controls. i.e. it is not clear what 0dB refers to,
sometimes it is some 'standard' voltage, sometimes it is a different
'standard' voltage, sometimes it is maximum amplification. To even out
all those differences PA shifts the dB scale so that 0dB is always
maximum amplification. (To complicate things further this is actually
only maximum *hardware* amplification, PA will allow you to go higher
in software). Because sometimes the 0dB ALSA exposes is actually
useful PA exposes that value as "base volume".

Confused? You have every right to.

Lennart

-- 
Lennart Poettering                        Red Hat, Inc.
lennart [at] poettering [dot] net
http://0pointer.net/lennart/           GnuPG 0x1A015CC4



More information about the pulseaudio-discuss mailing list