On Wed, 17.02.10 12:47, Eliot Blennerhassett (linux@audioscience.com) wrote:
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.
I wonder how realistic it would even be to add an API for this. i.e. can we even know the refernce level? On many cards most likely not. For example, for my integrated USB speakers speaking of a reference voltage would already be misleading...
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.
Yepp, that's the exactly what I was asking, Jaroslav's measurements suggested to shift one of the mixer controls from 0..x dB to -x..0 dB and I was just wondering why, since we don't define the ref level in ALSA, hence the shift is kinda arbitrary...
Anyway, I am not pushing for adding an API for reference levels to ALSA. As mentioned for the PA case I decided to shift 0dB to max amplification in any case, which I think is a workable way to avoid this problem.
Lennart