[Resolvido] Script checar se dispositivo de áudio está em silêncio

Iniciado por Celso2011, 30 de Junho de 2016, 01:51

tópico anterior - próximo tópico

Celso2011

Procurei muito por um script que detecta se o sistema está sem nenhum som mas só aparece script que diz que alguma coisa está usando o som e não que está mudo.
Ex.: Coloquei uma rádio online pra tocar , pausei e testei vários scripts mas todos eles só dizem que está "running, 1,". O resultado depende do script mas nenhum que realmente diz que o som está mudo.
Esse scripts só dizem que está mudo se não tiver nenhum aplicativo que usa o som aberto, mas se tiver algum aplicativo pausado o resultado sempre é positivo.
Único site que realmente fala alguma assim foi esse http://unix.stackexchange.com/questions/61337/testing-from-a-script-if-audio-devices-are-in-silent ,mas nada concreto.

Uso Ubuntu 12.04 e pulseaudio
Alguém teria algum script?

Aproveitando, testei 2 scripts do site pra ver o que acontece mas dá erro.
1)
#!/bin/bash
if amixer get Master | grep -q off; then
    # action
fi
usuario@Usuario-X200:~$ ./teste
./teste: linha 4: erro de sintaxe próximo do `token' não esperado `fi'
./teste: linha 4: `fi'

2)
if amixer get Master | gawk 'END{ if ( $NF != "[off]" ) { exit 1 } }'; then
    # muted
else
    # unmuted
fi
usuario@Usuario-X200:~$ ./teste
./teste: linha 4: erro de sintaxe próximo do `token' não esperado `else'
./teste: linha 4: `else'

3) Esse o resultado é sempre "no", com ou sem aplicativo de som aberto.
#!/bin/bash
pacmd dump | awk '
  $1 == "set-sink-mute" {m[$2] = $3}
  $1 == "set-default-sink" {s = $2}
  END {print m}'
usuario@Usuario-X200:~$ ./teste
no

Celso2011

#1
A pergunta está aberta pra respostas, porém resolvi meu problema com um plano B usando o script abaixo e com a ajuda do piraside.

#!/bin/bash
teste=`ps axu | grep programa_do_wine | grep -v grep`;
if [ "$teste" ];
then
    ps -ef | grep programa_do_wine | grep -v grep | awk '{print $2}' | xargs kill
    ps -ef | grep firefox | grep -v grep | awk '{print $2}' | xargs kill
    DISPLAY=:0 firefox http://playersradios.band.uol.com.br/?r=rb_am_sao & sleep 300
    play /home/usuario/Documentos/bip.wav
else
    :
fi

Obs.: sleep 300 (5min.) e play bip.wav
O Piraside é reativado por som e se caso o script rodar e abrir o firefox sem rede não vai ter som, e o piraside não vai atuar mais e abrir o programa do wine, e a gravação vai terminar na primeira queda da rede.
Deixar em 0 na opção do piraside: If sound is present again for at least "X" seconds.

Explicando melhor:
Gravo programas de uma  rádio online e o aplicativo deles não reconecta automaticamente qdo a rede cai e qdo ia ver tinha uns míseros bytes gravados, pois o audio recorder tem a opção de pausa qdo há silêncio.
Até o momento estava usando o crontab pra fechar e abrir o firefox a cada 10 minutos,
Então, enquanto não vem a resposta pro plano A  fiz o seguinte:
Instalei o piraside_1.3a_setup.exe (1,1MB) pelo wine.
O piraside detecta silêncio no áudio e abre qualquer aplicativo  pelo wine.
Coloco o script acima no crontab pra detectar o processo aberto pelo piraside, qdo detectou silencio, pra fazer um "restart" do firefox.

Piraside: Ótimo aplicativo, leve e free.
Abre e fecha aplicativo do wine qdo detecta silencio no áudio.
Regulagem do nível do áudio, pelo gráfico de nível, para ele executar as ações nos segundos que foi programado.
Parece que não fecha aplicativos abertos pelo Ubuntu.

No script tem que trocar esse comando que parece estar matando o processo e não fechando, mas totalmente funcional.