Am 09.06.2010 07:39, schrieb Raymond Yau:
2010/6/8 Sebastian H. vand2@gmx.de
> I thinks Sebastian's question is whether he can use > snd_mixer_selem_set_playback_ > dB() set any values in between the volume steps > > e.g. Master volume control of ac97 is 1.5 dB per step, > > when using snd_mixer_selem_set_playback_dB() to set -0.9dB , how can
the
> mixer application know what dB value has been set since the value is
in
> between -1.5dB and 0dB without snd_mixer_selem_get_playbackdB()
Indeed I quite happy with what ALSA already provides (I'm just an interested amateur). My main problem is that there is no documentation for the
Mixer
API and how things are related to each other. Like CTL, HCTL, Mixer and SimpleMixer and of course volume and dB in the snd_mixer_selem_
functions.
The root issue is that I wondered if the mixer application should
offer
a
separate text input for decibel values besides the text input for
volume
values. As pointed out this would not allow for finer grained volume control therefore for the moment I'll probably stick with a mere text label
for
dB.
The main difference between those volume controls using TLV_DB_SCALE
and
TLV_DB_LINEAR is -6dB is at the middle of TLV_DB_LINEAR and
TLV_DB_SCALE
has
fixed dB value between any two steps.
What's TLV_DB_SCALE and TLV_DB_LINEAR for? A grep in the alsa-lib sources did not return anything.
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/332631
if the user has both hda onboard sound and emu10k1, he may notice that
there
is big difference if he set volume at percentage instead of dB
Interesting, that's my setup. I have an onboard HDA Intel and a pci SBLive! Card and some el cheapo USB sound cards to experiment with. Thanks I'll give the volume listening test a try at some point.
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4883
Pekka Lampila reported that when he set -40dB and only get back -9999999
by
his program alsa_mixer_test.c
I don't have emu10k1 so don't know whether this is a bug of alsa-lib or
not
I also get a big jump from -39.60dB to -99999.99 dB for some emu10k1 sliders when I move them to the minimum although their advertised minimum is -40dB. This looks like a way to express log ( 0 ).
Do you ream snd_mixer_selem_get_Playback_dB_range() return 40dB but max_dB - min_dB = 99999.99 dB ?
e.g. snd_mixer_selem_get_playback_dB_range() for "Wave Surround" returns -40.00 to 0.00 dB and the dB values returned by
snd_mixer_selem_get_playback_dB ( elem, SND_MIXER_SCHN_MONO, &_db_value );
are all in this range except for when the volume ist set to 0. At this and only this volume the returned dB value is out of range with -99999.99 dB. For vol=1 the dB value is -39.60.