[alsa-devel] amixer: convert percentage into db wrongly

Takashi Iwai 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
> thanks
> 
> 
> * 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.


Takashi

> > 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!
>                                 -unknown-
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


More information about the Alsa-devel mailing list