summaryrefslogtreecommitdiff
path: root/speakerWatchdog.sh
diff options
context:
space:
mode:
authorSt33v <github@f3rr3t.com>2022-01-26 23:08:32 +1100
committerSt33v <github@f3rr3t.com>2022-01-26 23:08:32 +1100
commit9cbc7826870640648f0c1e20cd2210c7c4d0f47b (patch)
tree233f47fe8a26ae63d4b8f52beeed9c8c3590da76 /speakerWatchdog.sh
parent077eb0a2b6a93fcc1b5a12f66aae3b2effcabe13 (diff)
it works
Diffstat (limited to 'speakerWatchdog.sh')
-rwxr-xr-x[-rw-r--r--]speakerWatchdog.sh99
1 files changed, 42 insertions, 57 deletions
diff --git a/speakerWatchdog.sh b/speakerWatchdog.sh
index d78c40a..2597eaf 100644..100755
--- a/speakerWatchdog.sh
+++ b/speakerWatchdog.sh
@@ -1,65 +1,50 @@
#! /bin/bash
-# Workaround for stupd 'powersave' 'feature' of Creative Speakers
+# Workaround for stupid 'powersave' 'feature' of Creative Speakers
#
# SJP 11 Dec 2021
#
-# This is just a stub for now
+# Record a snippet of default stream:
-# Which device is the audio output going to?
+# 0 rec -d -n trim 0 .1 stat
-# st33v@cr4y:~$ grep RUNNING /proc/asound/card*/pcm*/sub*/status
-# /proc/asound/card2/pcm0p/sub0/status:state: RUNNING
+# rec sox in record mode
+# -d default input
+# -n direct output to /dev/null
+# trim 0 .1 duration 0.1 second
+# stat write info about the audio stream
+# 2>&1 redirect stderr to stdout
+# | pipe
+# grep finds this line: Minimum amplitude: 0.000000
+# | pipe
+# awk ruturns just the third word (the number)
+#echo hello $USER | systemd-cat -t AlexySayle -p warning
+maxAmp=$(rec -d -c1 -n trim 0 .1 stat 2>&1 | grep 'Maximum amplitude' | awk {'print $3'})
+echo Max Amplitude = $maxAmp
+if [ "$maxAmp" == "0.000000" ]; then
+ # if Max amplitude = 0 then we have silence!
+ if [ -f "/tmp/silencemarker" ] ; then
+ # There was silence last time we checked, so play the tone
+ echo Play the sound
+ play -nq synth 1 sine 40 fade 0.2 0
+ rm /tmp/silencemarker
+ else
+ touch /tmp/silencemarker
+ fi
+else
+ if [ -f "/tmp/silencemarker" ] ; then
+ rm /tmp/silencemarker
+ fi
+fi
-# That is fine, but the status remains as 'RUNNING' even after the speakers have turned themselves off...
-# So I'm going down the track of periodically sending a 'sound' to a loopback device
-# sudo modprobe snd-aloop
-# Now aply -l shows a new 'card' called Loopback.
+systemd-run --user --on-active=10m /usr/local/bin/speakerWatchdog.sh
-
-record one second of default stream:
-
-$ rec -d -n trim 0 1 stat
-
- rec sox in record mode
- -d default input
- -n direct output to /dev/null
- trim 0 1 duration 1 second
- stat
-
-Output:
-
-Input File : 'default' (pulseaudio)
-Channels : 2
-Sample Rate : 48000
-Precision : 16-bit
-Sample Encoding: 16-bit Signed Integer PCM
-
-In:0.00% 00:00:01.02 [00:00:00.00] Out:48.0k [ | ] Clip:0
-Samples read: 96000
-Length (seconds): 1.000000
-Scaled by: 2147483647.0
-Maximum amplitude: 0.000000
-Minimum amplitude: 0.000000
-Midline amplitude: 0.000000
-Mean norm: 0.000000
-Mean amplitude: 0.000000
-RMS amplitude: 0.000000
-Maximum delta: 0.000000
-Minimum delta: 0.000000
-Mean delta: 0.000000
-RMS delta: 0.000000
-Rough frequency: -2147483648
-Done.
-
-So if Max amplitude = 0 then we have silence!
-
-to generate a tone that is not audible:
-play -n synth 1 sine 40 fade .2 0
-
- play sox alias
- -n dummy input file
- synth synthesise a sound
- sine sine wave [the default, so not strictly necessary]
- 40 Hz
- fade fade in from zero volume to max volume over 200 msec.
- '0' says fade out at end over same period.
+#to generate a tone that is not audible:
+#play -n synth 1 sine 40 fade .2 0
+#
+# play sox alias
+# -n dummy input file
+# synth synthesise a sound
+# sine sine wave [the default, so not strictly necessary]
+# 40 Hz
+# fade fade in from zero volume to max volume over 200 msec.
+# '0' says fade out at end over same period.