저는 고전력 오디오 증폭기에 연결된 Raspperry Pi에서 MPD(Music Player Daemon)를 실행하고 있습니다. 연중무휴로 방치하면 앰프가 너무 뜨거워져서 앰프 자체가 타버릴까 봐 걱정됩니다. 조용한 AC 윙윙거리는 소리가 스피커에 스며들지는 말할 것도 없고, 앰프를 켜기 위해 가까이 다가가야 하는 것도 싫습니다. 음악을 듣고 싶을 때마다 켜고 끕니다.
MPD는 대부분의 프로그램처럼 연결을 항상 열어 두는 대신 음악 재생을 시작하고 중지할 때 PulseAudio에 대한 연결을 자동으로 열고 닫는다는 것을 알았습니다. Pi의 GPIO 핀 중 하나에 연결된 전원 소켓과 증폭기 사이에 전원 릴레이가 연결되어 있으며 쉘 스크립트를 실행하거나 해당 핀을 켜고 그에 따라 오디오를 켜는 방법이 있는지 궁금합니다. 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