summaryrefslogtreecommitdiff
path: root/speakerSqueaker.sh
blob: 2597eaf656fb18fb383fcf5aedc679bbf82f97a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#! /bin/bash
# Workaround for stupid 'powersave' 'feature' of Creative Speakers
#
# SJP 11 Dec 2021
#
# Record a snippet of default stream:

# 0 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 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

systemd-run --user --on-active=10m /usr/local/bin/speakerWatchdog.sh

#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.