[alsa-devel] [Alsa-user] Master volume control
Clemens Ladisch
clemens at ladisch.de
Thu Mar 14 16:10:12 CET 2013
Paul D. DeRocco wrote:
>> snd_ctl_elem_value_set_interface(value, SND_CTL_ELEM_IFACE_MIXER);
>> snd_ctl_elem_value_set_name(value, "Master Playback Volume");
>> snd_ctl_elem_value_set_integer(value, 0, 42);
>> CHECK(snd_ctl_elem_write(ctl, value));
>
> Well, I finally got a chance to try this. It "works", but the
> snd_ctl_elem_write call takes a couple of milliseconds (that's around a
> million instructions on my Atom), and it apparently spends this time in
> kernel state, because it causes my sound thread to underrun, so it's not
> usable.
I'd guess that some driver uses a busy loop for writing the codec
registers.
Which drivers are you using for your sound hardware?
> If I use alsamixer, I don't have this problem; I can manipulate the master
> volume smoothly while I'm playing my synth app. So I went through the
> source, and found that it's using snd_mixer_selem_set_playback_volume.
Ultimately, this is a wrapper for the snd_ctl_* functions.
Regards,
Clemens
More information about the Alsa-devel
mailing list