Is there a way to detect if any sound is playing (using a bash script)?
(I'm on Ubuntu 11.10 using pulseaudio.)
I plan on using it in an indicator to visually remind me sound is playing while the mute is on.
Using pulse-audio: You can try pactl list to see what pulse audio is doing with the sound hardware. I'm leaving the specifics of pulling out the status to you. For e.g.: This command would list the Sink and Source states.
pactl list | grep State
Using procfs for ALSA (Caveat: these proc entries might go away in the future): This snippet runs through the pcm playback devices in ALSA proc heirarchy.
if grep -q RUNNING /proc/asound/card*/*p/*/status 2>&1; then
echo "Playing"
else
echo "Idle"
fi
pactl list is working for me. Volume, mute status, etc. How did you find this out? I've been searching for "pulseaudio status" and nothing this simple came up.
pactl list output is locale-dependent and will be shown according to $LANG.
pactl has a "short" format that's meant for parsing in scripts according to man pactl. In my case, I can use pactl list short sinks | cut --fields=5 to get the RUNNING/IDLE state directly.