[alsa-devel] alsactl adds volume controls?
Colin Guthrie
gmane at colin.guthr.ie
Fri Oct 8 16:16:23 CEST 2010
'Twas brillig, and Colin Guthrie at 08/10/10 15:05 did gyre and gimble:
> 'Twas brillig, and Clemens Ladisch at 08/10/10 14:41 did gyre and gimble:
>> Colin Guthrie wrote:
>>> 'Twas brillig, and Clemens Ladisch at 07/10/10 09:05 did gyre and gimble:
>>>> Please try this patch.
>>>>
>>>> +++ b/sound/pci/hda/patch_sigmatel.c
>>>> ...
>>>
>>> Seemed to do something. Now, rather than printing -46.5dB then the
>>> Master slider is down at 0, it prints "mute".
>>>
>>> Is this the extent of the fix? i.e. to correctly report that the bottom
>>> value is muted?
>>
>> Yes.
>
> Cool.
>
>>> If so, then is there a way to tell this via an API so that I can tell PA
>>> to not control the slider down to it's 0 value in order to avoid the
>>> auto mute?
>>
>> Alsamixer uses the standard dB information that should also be used by PA.
>
> I think something in there is busted, but it's likely at the PA end.
>
> This is the debug from a volume that is ultimately less than the min dB
> (i.e. ~50dB or there about - certainly more attenuation than -46.5dB) (I
> should really make it so it prints the dB volume here too)
>
> D: alsa-sink.c: Requested volume: 0: 13% 1: 13%
> D: alsa-sink.c: Got hardware volume: 0: 0% 1: 0%
> D: alsa-sink.c: Calculated software volume: 0: 0% 1: 0%
> (accurate-enough=no)
>
> And here is something for ~40dB:
>
> D: alsa-sink.c: Requested volume: 0: 19% 1: 19%
> D: alsa-sink.c: Got hardware volume: 0: 19% 1: 19%
> D: alsa-sink.c: Calculated software volume: 0: 99% 1: 99%
> (accurate-enough=yes)
>
> In this case the accurate-enough checks succeed vs before when they fail.
>
>
> D: alsa-mixer.c: Activating path analog-output
> D: alsa-mixer.c: Path analog-output (Analog Output), direction=1,
> priority=99, probed=yes, supported=yes, has_mute=yes, has_volume=yes,
> has_dB=yes, min_volume=0, max_volume=31, min_dB=-97.5, max_dB=0
> D: alsa-mixer.c: Element Master, direction=1, switch=1, volume=1,
> enumeration=0, required=0, required_absent=0, mask=0x3600000000f66,
> n_channels=2, override_map=yes
> D: alsa-mixer.c: Element PCM, direction=1, switch=0, volume=1,
> enumeration=0, required=0, required_absent=0, mask=0x3600000000f66,
> n_channels=2, override_map=yes
> I: alsa-sink.c: Hardware volume ranges from -97.50 dB to 0.00 dB.
> I: alsa-sink.c: No particular base volume set, fixing to 0 dB
> I: alsa-sink.c: Using hardware volume control. Hardware dB scale supported.
> I: alsa-sink.c: Using hardware mute control.
> D: alsa-util.c: snd_pcm_dump():
> D: alsa-util.c: Soft volume PCM
> D: alsa-util.c: Control: PCM Playback Volume
> D: alsa-util.c: min_dB: -51
> D: alsa-util.c: max_dB: 0
> D: alsa-util.c: resolution: 256
> D: alsa-util.c: Its setup is:
> D: alsa-util.c: stream : PLAYBACK
> D: alsa-util.c: access : MMAP_INTERLEAVED
> D: alsa-util.c: format : S16_LE
> D: alsa-util.c: subformat : STD
> D: alsa-util.c: channels : 2
> D: alsa-util.c: rate : 44100
> D: alsa-util.c: exact rate : 44100 (44100/1)
> D: alsa-util.c: msbits : 16
> D: alsa-util.c: buffer_size : 16384
> D: alsa-util.c: period_size : 8192
> D: alsa-util.c: period_time : 185759
> D: alsa-util.c: tstamp_mode : ENABLE
> D: alsa-util.c: period_step : 1
> D: alsa-util.c: avail_min : 15502
> D: alsa-util.c: period_event : 0
> D: alsa-util.c: start_threshold : -1
> D: alsa-util.c: stop_threshold : 4611686018427387904
> D: alsa-util.c: silence_threshold: 0
> D: alsa-util.c: silence_size : 0
> D: alsa-util.c: boundary : 4611686018427387904
> D: alsa-util.c: Slave: Hardware PCM card 1 'HDA Intel' device 0 subdevice 0
> D: alsa-util.c: Its setup is:
> D: alsa-util.c: stream : PLAYBACK
> D: alsa-util.c: access : MMAP_INTERLEAVED
> D: alsa-util.c: format : S16_LE
> D: alsa-util.c: subformat : STD
> D: alsa-util.c: channels : 2
> D: alsa-util.c: rate : 44100
> D: alsa-util.c: exact rate : 44100 (44100/1)
> D: alsa-util.c: msbits : 16
> D: alsa-util.c: buffer_size : 16384
> D: alsa-util.c: period_size : 8192
> D: alsa-util.c: period_time : 185759
> D: alsa-util.c: tstamp_mode : ENABLE
> D: alsa-util.c: period_step : 1
> D: alsa-util.c: avail_min : 15502
> D: alsa-util.c: period_event : 0
> D: alsa-util.c: start_threshold : -1
> D: alsa-util.c: stop_threshold : 4611686018427387904
> D: alsa-util.c: silence_threshold: 0
> D: alsa-util.c: silence_size : 0
> D: alsa-util.c: boundary : 4611686018427387904
> D: alsa-util.c: appl_ptr : 0
> D: alsa-util.c: hw_ptr : 0
>
>
>
>
> I'll try and work out why PA still insists on setting Master to 0 aka
> -99999.99dB :D
>
> Many thanks for the patch.
>
> Col
>
Hmm, just thinking about this (as I don't know the volume control logic
particularly well in PA), the call snd_mixer_selem_set_playback_dB() is
used with a dir argument of +1.
More information about the Alsa-devel
mailing list