Tree symbol for the breadcrumbs Documentation / PineCube / Projects / Recorder for loud noises
Edit page

PineCube: Recorder for loud noises

The PineCube can be used as a recorder for loud noises. If you have a kernel that has the sound support (see the Sound Control section) then you can use it to make recordings when there is a noise above a certain threshold. The following script is a very simple example that uses the alsa-utils and the sox command to do this. You can use the noise-stats.txt file and some noise testing to figure out a good threshold for your camera.

#!/bin/bash

# Directory where the sound recordings should go
NOISE_FILE_DIR="/root/noises"

# Threshold to use with the mean delta to decide to preserve the recording
MEAN_DELTA_THRESHOLD="0.002"

# Sample length (in seconds)
SAMPLE_LENGTH="10"

while :
do
    stats=$(arecord -d "$SAMPLE_LENGTH" -f S16_LE > /tmp/sample.wav 2>/dev/null && sox -t .wav /tmp/sample.wav -n stat 2>&1 | grep 'Mean    delta:' | cut -d: -f2 | sed 's/^[ ]*//')
    ts=$(date +%s)
    if (( $(echo "$stats > $MEAN_DELTA_THRESHOLD" | bc -l) )); then
          mv /tmp/sample.wav "$NOISE_FILE_DIR/noise-$ts.wav" # TODO convert to mp3
    fi
    rm -f /tmp/sample.wav
    echo "$ts $stats" >> noise-stats.txt
done