[alsa-devel] [Alsa-user] Master volume control
Paul D. DeRocco
pderocco at ix.netcom.com
Wed Mar 13 21:17:00 CET 2013
More on this.
My synth app, running on a dual-core Atom, has two sound generation threads,
running at a "nice" value of -20, and a normal control thread running at
nice 0. The control thread is what calls snd_ctl_elem_write when I move the
volume slider. My sound threads normally consume less than 50% of their
respective CPUs, but when I move the volume slider, I get underruns.
If I run "top -H" in a terminal window, I see three other processes that
suddenly consume gobs of CPU time as I change the volume.
name nice CPU%
pulseaudio -11 19
threaded-ml 0 14
indicator-sound 0 11
If instead of using my synth's volume slider, I open alsamixer in another
terminal window, I don't see the same CPU usage, but I now attribute that to
the fact that the keyboard is issuing volume changes at a much slower rate
than my slider, which is read in a 200Hz loop. In fact, when I use
alsamixer, and ramp the volume up and down, every now and then I do get an
underrun. So it apparently won't matter whether I use snd_ctl_elem_write or
snd_mixer_selem_set_playback_volume.
So what I'd like to know is why the hell does changing the volume every 5ms
suck up 44% of one CPU core? I get the feeling that the above processes
aren't integral to ALSA, and may go away when I move my app to a pure
embedded system, as opposed to Ubuntu. Is that the case? Am I chasing
phantoms? Since I'm not doing _anything_ related to sound on this machine,
other than developing my synth app (I don't even need a terminal beep), is
there any way I can uninstall the things that are hogging the CPU, like
pulseaudio?
--
Ciao, Paul D. DeRocco
Paul mailto:pderocco at ix.netcom.com
More information about the Alsa-devel
mailing list