オーディオデバイスがオンまたはオフのときにフック(シェルスクリプトなど)を実行する方法はありますか?

オーディオデバイスがオンまたはオフのときにフック(シェルスクリプトなど)を実行する方法はありますか?

私は、高出力オーディオアンプに接続されたRaspperry PiでMPD(Music Player Daemon)を実行しています。年中無休で放置するとアンプが熱くなりすぎてアンプ自体が燃えてしまうかと心配です。静かなACブレの音がスピーカーに染み込んでいると言うこともなく、アンプをオンにするために近づいていかなければならないのも嫌です。音楽を聴きたいときはいつでもオン/オフします。

MPDは、ほとんどのプログラムと同じように接続を常に開いたままにするのではなく、音楽の再生を開始および停止するときにPulseAudioへの接続を自動的に開閉することがわかりました。 PiのGPIOピンの1つに接続されている電源ソケットとアンプの間に電源リレーが接続されており、シェルスクリプトを実行するか、そのピンをオンにしてそれに応じてオーディオをオンにする方法があるかどうか疑問に思います。 MPDがデバイスを自動的にオフにする時間(またはPulseAudioレベルではなくALSAレベルでこれを行う場合は、アプリケーションがオーディオデバイスを開くとき)。

これは可能ですか、それともシェルスクリプト自体を実行するためにMPDを変更して再コンパイルする方が良いですか?

ベストアンサー1

これは、マイクの電源が入っているときにコードを実行しようとしたときに考えたシェルスクリプトです。必要に応じて調整できます。コアは次のとおりですpactl subscribe

#!/bin/bash

source_number=""

pactl subscribe | while read x event y type num; do
    if [ $event == "'new'" -a $type == 'source-output' ]; then
        source_number=$num
        notify-send -u normal -a "Microphone Monitor" "Microphone ON" "Microphone has been turned ON"
        echo "$(date -Is) Microphone on"
    fi

    if [ $event == "'remove'" -a $type == 'source-output' -a $num == "$source_number" ]; then
        source_number=""
        notify-send -u normal -a "Microphone Monitor" "Microphone OFF" "Microphone has been turned OFF"
        echo "$(date -Is) Microphone off"
    fi
done

おすすめ記事