[alsa-devel] amixer: convert percentage into db wrongly
tiwai at suse.de
Thu Mar 8 17:45:14 CET 2012
At Thu, 8 Mar 2012 17:30:02 +0100,
Elimar Riesebieter wrote:
> severity 663090 normal
> forwarded 663090 alsa-devel at alsa-project.org
> * Adam Lee <adam8157 at gmail.com> [2012-03-08 20:36 +0800]:
> > Package: alsa-utils
> > Version: 1.0.25-1
> > Severity: important
> > db is not linear, but amixer believe it is.
> > "amixer get Master" says "Limits: Playback 0 - 74", then everytime I run
> > "amixer -q sset Master 10%-", there is 8db dec.
> > For example, at first Master is 100% and 0db, both alsamixer and amixer
> > think it is, and after I run "amixer -q sset Master 10%-", both
> > alsamixer and amixer says Master is -8.00db, but alsamixer says it is
> > 72%, amixer says it is 89%.
> > alsamixer is right, amixer calc and set wrongly.
No, both are correct. You are dreaming too much on the world unified
percentage representation :)
The percentage in amixer has nothing to do with dB level.
It's just the percentage of the raw value range of that mixer
element. Thus showing 89% is correct. It's 10% down from 100%
(1% is because of the resolution of the raw values).
Now, alsamixer shows the percentage in a different way. It's
explained well in the source code (alsamixer/volume_mapping.c), but
not mentioned in the man page, unfortunately.
* The mapping is designed so that the position in the interval is proportional
* to the volume as a human ear would perceive it (i.e., the position is the
* cubic root of the linear sample multiplication factor). For controls with
* a small range (24 dB or less), the mapping is linear in the dB values so
* that each step has the same size visually. Only for controls without dB
* information, a linear mapping of the hardware volume register values is used
* (this is the same algorithm as used in the old alsamixer).
The percentage representation in alsamixer corresponds to this
mapping, thus it's neither dB nor linear percent.
> > Several months ago, they both right, and I upgraded, and amixer messed
> > up. Please fix it. Thank you.
> > FYI, my hardware is:
> > "HDA-Intel" "Conexant CX20585" "HDA:14f15069,17aa214c,00100302 HDA:14f12c06,17aa2122,00100000" "0x17aa" "0x215e"
> > -- System Information:
> > Debian Release: wheezy/sid
> > APT prefers unstable
> > APT policy: (500, 'unstable')
> > Architecture: amd64 (x86_64)
> > Kernel: Linux 3.2.0-1-amd64 (SMP w/4 CPU cores)
> > Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
> > Shell: /bin/sh linked to /bin/dash
> > Versions of packages alsa-utils depends on:
> > ii dialog 1.1-20120215-1
> > ii libasound2 1.0.25-2
> > ii libc6 2.13-27
> > ii libncursesw5 5.9-4
> > ii libsamplerate0 0.1.8-3
> > ii libtinfo5 5.9-4
> > ii linux-sound-base 1.0.23+dfsg-4
> > ii lsb-base 3.2+Debian29
> > ii module-init-tools 6-1
> > ii whiptail 0.52.14-8
> > Versions of packages alsa-utils recommends:
> > ii alsa-base 1.0.23+dfsg-4
> > ii pciutils 1:3.1.8-2
> > alsa-utils suggests no packages.
> > -- no debconf information
> > _______________________________________________
> > Pkg-alsa-devel mailing list
> > Pkg-alsa-devel at lists.alioth.debian.org
> > http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-alsa-devel
> The path to source is always uphill!
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
More information about the Alsa-devel