alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
From: Lennart Poettering <mznyfn@0pointer.de>
To: ALSA Development Mailing List <alsa-devel@alsa-project.org>
Subject: Verifying mixer dB data/Invalid dB data from USB cards, especially Aureon 5.1 MkII
Date: Mon, 15 Feb 2010 20:24:52 +0100	[thread overview]
Message-ID: <20100215192451.GA17938@tango.0pointer.de> (raw)

Heya,

a while back I wrote a little tool "dbmeasure" which can be used to
determine dB attenuation data for alsa mixer controls. I have now
extended this little dB tools suite to include a tiny tool "dbverify"
that can be used to verify the correctness of existing dB data exposed
by the drivers. It should be relatively easy to use that tool,
suitable even for non-guru folks who want to debug the dB information
from alsa.

http://git.0pointer.de/?p=dbmeasure.git
git://git.0pointer.de/dbmeasure.git

Just run "make" in a git checkout and then try:

   $ ./dbverify Aureon51MkII Master 30 200

That will verify the dB data of the "Master" control of the sound card
that goes by the id "Aureon51MkII". It will compare the discrete
volume steps 30 and 200: first it will play a full amplitude sine wave
at mixer volume step 30, and then will change to mixer volume step
200, but attenuate the sine wave in software compensating for the
volume change. So once you hear the sine wave attenuated by the hw,
and once by the software. If the card's dB data is correct both sines
should have the same volume.

Now, playing around with this, I could verify what I already mentioned
to Jarsolav elsewhere earlier: it seems that particularly USB cards
seem to expose invalid dB data (at least all mine do). For example,
for the above mentioned Aureon 5.1 it's really *way* off -- if you
posess that card just run the line above, and listen to the
difference. It's really bad. OTOH the dB data of the HDA cards I own
is pretty accurate as it seems, at least I was unable to decide just
by listening which sine wave was attenuated by sw, and which by hw.

Getting back to the invalid dB data from the USB cards: the question
is whether the USB descriptor data is badly parsed, and the dB
mismatch hence systematic for USB cards, or if these cards are just
crappy and include invalid data? In which case I wonder what we could
do about that? The Aureon's dB range already looks suspicous, since
both the max and the min dB value are < 0 (-47.69 to -1.97), so maybe
we could add some heuristics to filter out data that already looks
suspicous?

Invalid dB data from the driver is a real problem for the "flat
volume" logic in PA. We basically allow each app to control the full
hw volume range individually, and then set the hw volume to the max of
what all apps wanted and attenuate the other streams accordingly. On
the Aureon this doesn't work at all, since the attenuation of the
streams is miscalculated due to the invalid dB data.

Lennart

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

             reply	other threads:[~2010-02-15 19:25 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-15 19:24 Lennart Poettering [this message]
2010-02-16  8:08 ` Verifying mixer dB data/Invalid dB data from USB cards, especially Aureon 5.1 MkII Clemens Ladisch
2010-02-16  8:24   ` Jaroslav Kysela
2010-02-16 14:32     ` Lennart Poettering
2010-02-16 14:40       ` Mark Brown
2010-02-16 15:40         ` Lennart Poettering
2010-02-16 15:49           ` Mark Brown
2010-02-16 16:29           ` Jaroslav Kysela
2010-02-16 21:07             ` Lennart Poettering
2010-02-16 22:39               ` Mark Brown
2010-02-16 22:42                 ` Lennart Poettering
2010-02-16 23:38                   ` Mark Brown
2010-02-16 23:56                     ` Lennart Poettering
2010-02-17 11:17                       ` Mark Brown
2010-02-17 13:01                         ` Lennart Poettering
2010-02-17 13:15                           ` Mads Kiilerich
2010-02-17 11:55                       ` James Courtier-Dutton
2010-02-17 13:06                         ` Mark Brown
2010-03-20  7:58                         ` Raymond Yau
2010-02-18  1:48                       ` Raymond Yau
2010-02-18  2:37                         ` Lennart Poettering
2010-02-18  6:15                           ` Raymond Yau
2010-02-18 10:11                             ` James Courtier-Dutton
2010-02-18 18:13                             ` Lennart Poettering
2010-02-19  8:17                               ` Jaroslav Kysela
2010-02-19  9:40                                 ` Mark Brown
2010-02-19 10:57                                 ` Raymond Yau
2010-02-19 15:13                                   ` Lennart Poettering
2010-02-21  3:49                                     ` Raymond Yau
     [not found]                                       ` <20100221193933.GA31800@tango.0pointer.de>
2010-02-23  4:47                                         ` Raymond Yau
2010-02-23 22:20                                           ` Lennart Poettering
2010-02-24  1:52                                             ` Raymond Yau
2010-02-28  7:32                                             ` Raymond Yau
2010-02-23  5:12                                         ` Raymond Yau
2010-02-23  8:43                                         ` Raymond Yau
2010-02-21  4:01                                     ` Raymond Yau
     [not found]                                       ` <20100221192951.GD30380@tango.0pointer.de>
2010-02-23 10:08                                         ` Clemens Ladisch
2010-02-23 12:46                                           ` Raymond Yau
2010-02-23 22:32                                           ` Lennart Poettering
2010-02-24  0:57                                             ` Raymond Yau
2010-02-24  9:00                                             ` Clemens Ladisch
2010-02-24 11:49                                               ` Raymond Yau
2010-02-24 12:07                                               ` Raymond Yau
2010-02-24  1:12                                           ` Raymond Yau
2010-02-24  3:49                                           ` Raymond Yau
2010-02-20  8:38                                   ` Jaroslav Kysela
2010-02-25  3:34                                     ` Raymond Yau
2010-02-19 11:47                                 ` James Courtier-Dutton
2010-02-19 15:10                                   ` Lennart Poettering
2010-02-20  8:41                                   ` Jaroslav Kysela
2010-02-24  7:30                                     ` Raymond Yau
2010-02-25 13:14                               ` Raymond Yau
2010-02-25  3:51                           ` Raymond Yau
2010-02-26  3:17                       ` Raymond Yau
2010-03-01  4:21                       ` Raymond Yau
2010-02-16 23:47                   ` Eliot Blennerhassett
2010-02-17  0:10                     ` Lennart Poettering
2010-02-17  0:43                       ` Mark Brown
2010-02-17  0:52                       ` Eliot Blennerhassett
2010-02-17 11:50                         ` Mark Brown
2010-02-17  9:04                       ` Jaroslav Kysela
2010-02-17 12:06                         ` Mark Brown
2010-02-17 13:15                           ` Lennart Poettering
2010-02-17 13:32                             ` Mark Brown
2010-02-17 13:06                         ` Lennart Poettering
2010-02-17 13:55                           ` James Courtier-Dutton
2010-02-17 14:12                             ` Mark Brown
2010-02-17 14:35                             ` Lennart Poettering
2010-02-17 16:17                               ` James Courtier-Dutton
2010-02-26  9:38                             ` Raymond Yau
2010-02-17  7:37                     ` Raymond Yau
2010-02-18  2:11                     ` Raymond Yau
2010-02-26  0:45               ` Raymond Yau
2010-02-20  7:24             ` Raymond Yau
2010-03-26  4:26             ` Raymond Yau
2010-02-16 21:48           ` James Courtier-Dutton
2010-02-17  8:08             ` Jaroslav Kysela
2010-06-14  3:30         ` Raymond Yau
2010-02-16 16:09       ` Jaroslav Kysela
2010-02-16 14:26   ` Lennart Poettering
2010-02-17  3:30     ` Raymond Yau
2010-02-17 15:19       ` Lennart Poettering
2010-03-08  9:06         ` Raymond Yau
2010-02-16  8:32 ` Jaroslav Kysela
2010-02-16 10:36   ` Jaroslav Kysela
2010-02-17  3:44 ` Raymond Yau
2010-02-17 12:54   ` Lennart Poettering
2010-02-26  5:18 ` Raymond Yau
2010-02-27  1:07 ` Raymond Yau
2010-03-01  0:51 ` Raymond Yau
2010-06-24 22:51 ` Raymond Yau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100215192451.GA17938@tango.0pointer.de \
    --to=mznyfn@0pointer.de \
    --cc=alsa-devel@alsa-project.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).