monitor_mic.sh 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/bin/bash
  2. #from https://github.com/linuxmint/cinnamon-spices-applets/blob/master/mic-level%40zamszowy/files/mic-level%40zamszowy/rec.sh
  3. #dependances: sox alsa-utils
  4. #activer la capture avec : amixer set Capture cap (apparemment avec alsamixer ne suffit pas)
  5. set -eu
  6. logger "Demarrage script monitor_mic"
  7. envoie_xmpp () {
  8. chaine="`hostname` [monitor_mic] : `date +%H:%M:%S` $*"
  9. logger "Message XMPP a envoyer : $chaine"
  10. #NEW:
  11. xmppc -a default -m message chat manuel@servileto.net "$chaine"
  12. }
  13. #readonly rec_time=${1:-0.1}
  14. readonly rec_time=0.5
  15. if amixer_out=$(amixer get Capture) && ! [[ $amixer_out =~ \[on\] ]]; then
  16. sleep "$rec_time"
  17. echo "-1"
  18. exit
  19. fi
  20. #RMS amplitude
  21. while [ true ] ; do
  22. #rec -n stat trim 0 "$rec_time" 2>&1 | awk '/^Maximum amplitude/ { $3 *= 100; print $3 }'
  23. #rec -n stat trim 0 "$rec_time"
  24. commandoutput=$(rec -n stat trim 0 "$rec_time" 2>&1)
  25. echo $commandoutput
  26. echo $commandoutput | awk -F'Maximum amplitude: ?' '{print $1}'
  27. #echo $commandoutput | awk '/^Maximum amplitude/ { $3 *= 100; print $3 }'
  28. #echo $commandoutput | awk '/^Mean amplitude/ { $3 *= 100; print $3 }'
  29. #echo $commandoutput | awk '/^RMS amplitude/ { $3 *= 100; print $3 }'
  30. #rec -n stat trim 0 "$rec_time" 2>&1 | awk '/^Mean amplitude/ { $3 *= 100; print $3 }'
  31. #envoie_xmpp "⚠ Monitor mic : bruit détecté (Niveau=$capacite_nouveau) !"
  32. sleep 2
  33. done