From: Eliot Blennerhassett <linux@audioscience.com>
To: alsa-devel@alsa-project.org
Subject: Re: Verifying mixer dB data/Invalid dB data from USB cards, especially Aureon 5.1 MkII
Date: Wed, 17 Feb 2010 12:47:43 +1300 [thread overview]
Message-ID: <4B7B2E9F.3080809@audioscience.com> (raw)
In-Reply-To: <20100216224212.GA1486@tango.0pointer.de>
Lennart Poettering wrote:
> On Tue, 16.02.10 22:39, Mark Brown (broonie@opensource.wolfsonmicro.com) wrote:
>
>> On Tue, Feb 16, 2010 at 10:07:03PM +0100, Lennart Poettering wrote:
>>> On Tue, 16.02.10 17:29, Jaroslav Kysela (perex@perex.cz) wrote:
>>>> Basically, if I remember correctly the discussion, 0dB on all elements
>>>> should main unchanged volume, <0dB attenuation and >0dB gain.
>>> But you need some kind of "anchor" for that. What you write above
>>> applies only for elements that have some kind of analog input and
>>> output. But the most interesting components are probably the DAC and
>>> ADC (i.e. the "innermost" elements), and it's not clear what level they
>>> output, so the "anchor" for the relative dB values is missing...
>> Typically the DACs and ADCs will have a full scale signal at line
>> reference level - it should generally be a good approximation with
>> nothing else to go on.
>
> "line reference level"? What is that?
>
> Lennart
>
There are two separate issues here.
1) Incorrect dB<->linear mapping
ALSA Volume/Gain controls returning incorrect information about mapping
from linear values to dB. E.g. adding "6dB" to the Volume controls
while subtracting 6dB in software does not result in 0dB overall gain.
For volume controls the convention is 0dB == multiply by 1.0 == no
change. Any sane digital volume control should obey this.
For analog volumes, the 0dB position is entirely arbtrary, as I discuss
below.
2) Absolute calibration of output levels.
(This is *not* required to solve Lennart's problem)
This would be required if you wanted two different (brands of) soundcard
to output the same voltage for given source pcm.
>From the perspective of a Pro audio card maker, we have another kind of
control at the analog terminals of the card. This is the Level control,
and it specifies the absolute voltage at the output for full scale
digital signal (and intermediate Volumes set to 0dB)
It has units of dBu http://en.wikipedia.org/wiki/Decibel#Voltage.
(It might as well be dBV or any other reference dB measurement).
For our cards this is adjustable, but lets say for consumer cards it is
fixed. This information is not currently available via the ALSA API.
A hypothetical example.
[DAC>---[Variable gain>---[amplifier>---[output jack]
Lets say
the DAC produces 2Vpp (6dBVpp) for fullscale digital input (0dBFS)
and the amplifier has 6dB gain.
and the variable gain is from -40dB to 0dB
and the units of the reference level are dBVpp
Combining these we represent the DAC + gain + amplifier as a single
Level control with units of dBVpp and range -28dBVpp to +12dBVpp
or equally valid, could represent it as
a Volume with range -40dB to 0dB followed by a
a fixed level of +12dBVpp
or equally valid, could represent it as
a Volume with range 0dB to +40dB followed by a
a fixed level of -28dBVpp
i.e. the 0dB position is arbitrary, related to what is chosen as the
output reference level.
The fixed level information, would be attached to some representation of
the output connector.
Clear as mud?
regards
Eliot Blennerhassett
http://www.audioscience.com
next prev parent reply other threads:[~2010-02-16 23:48 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-15 19:24 Verifying mixer dB data/Invalid dB data from USB cards, especially Aureon 5.1 MkII Lennart Poettering
2010-02-16 8:08 ` 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 [this message]
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=4B7B2E9F.3080809@audioscience.com \
--to=linux@audioscience.com \
--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).