#!/bin/sh # SPDX-License-Identifier: Unlicense buzzergpio=0 strobegpio=2 swupgpio=23 swdowngpio=25 player="cvlc" playerparam="--play-and-exit --quiet --no-osd -A alsa --alsa-audio-device=front:CARD=Device,DEV=0" playerloop="--loop" pgrepplayer="vlc" pollingtime=0.05 buzzertimeout=2 strobeduration=1 volumetimeout=0.1 volumedelay=0.1 volumemax=100 playerfull="$(command -v $player) $playerparam" cmdgpio="$(command -v gpio)" cmdamixer="$(command -v amixer)" $cmdgpio mode $buzzergpio in $cmdgpio mode $strobegpio out $cmdgpio write $strobegpio 1 $cmdgpio mode $swdowngpio in $cmdgpio mode $swupgpio in volumevalue=0 $cmdamixer -q -c 2 sset 'Speaker' $volumevalue% while true; do buzzerstat="$($cmdgpio read $buzzergpio)" swupstat="$($cmdgpio read $swupgpio)" swdownstat="$($cmdgpio read $swdowngpio)" if [ "$buzzerstat" -eq 0 ] && [ "$swupstat" -eq 0 ]; then ~/RandomVideo/RandomVideo.sh buzzer $cmdgpio write $strobegpio 0; sleep $strobeduration; $cmdgpio write $strobegpio 1 & sleep $buzzertimeout elif [ "$swupstat" -eq 1 ]; then if pgrep "$pgrepplayer" > /dev/null; then pkill "$pgrepplayer" fi $playerfull $playerloop ~/RandomVideo/onair.mp4 & while [ "$swupstat" -eq 1 ]; do swupstat="$($cmdgpio read $swupgpio)" sleep $pollingtime done pkill "$pgrepplayer" elif [ "$volumevalue" -eq 0 ] && [ "$swdownstat" -eq 1 ]; then while [ "$volumevalue" -lt "$volumemax" ] && [ "$buzzerstat" -eq 1 ]; do volumevalue=$((volumevalue + 1)) $cmdamixer -q -c 2 sset 'Speaker' $volumevalue% buzzerstat="$($cmdgpio read $buzzergpio)" sleep $volumetimeout done sleep $volumedelay elif [ "$volumevalue" -gt 0 ] && [ "$swdownstat" -eq 0 ]; then while [ "$volumevalue" -gt 0 ] && [ "$swdownstat" -eq 0 ]; do volumevalue=$((volumevalue -1)) $cmdamixer -q -c 2 sset 'Speaker' $volumevalue% swdownstat="$($cmdgpio read $swdowngpio)" sleep $volumetimeout done sleep $volumedelay elif [ "$buzzerstat" -eq 1 ] && [ "$swupstat" -eq 0 ]; then sleep $pollingtime fi done