Chris@61: #!/bin/bash Chris@61: Chris@61: # Run this from the directory that contains it Chris@61: Chris@61: trios_path="/home/cannam/Music/TRIOS_dataset" Chris@61: Chris@61: if [ ! -d "$trios_path" ]; then Chris@61: echo "TRIOS dataset directory $trios_path not found, giving up" Chris@61: exit 1 Chris@61: fi Chris@61: Chris@61: outbase="`pwd`" Chris@61: echo "Will read TRIOS files from $trios_path" Chris@61: echo "Will write output files below $outbase" Chris@61: echo "If either of these is incorrect, hit ctrl-C now!" Chris@61: sleep 8 Chris@61: Chris@61: if ! sonic-annotator -v ; then Chris@61: echo "Failed to run sonic-annotator (not in PATH?), giving up" Chris@61: exit 1 Chris@61: fi Chris@61: Chris@68: if ! sox --version ; then Chris@68: echo "Failed to run sox (not in PATH?), giving up" Chris@68: exit 1 Chris@68: fi Chris@68: Chris@62: for d in brahms lussier mozart schubert take_five; do Chris@62: dir="$trios_path/$d" Chris@62: outdir="$outbase/$d" Chris@62: if [ ! -d "$dir" ]; then Chris@62: echo "TRIOS subdir $dir not found, skipping it" Chris@62: else Chris@62: mkdir -p "$outdir" Chris@68: for w in "$dir"/*.wav; do Chris@68: wbase=`basename "$w" .wav` Chris@68: outlab="$outdir/$wbase.lab" Chris@68: echo "Processing wav file $w, writing to lab file $outlab" Chris@68: # The MATLAB method starts by normalising to a peak 0.5 Chris@68: # (approx -3dBFS amplitude or -6dB power). We can't do Chris@68: # that in the plugin, so must do it here Chris@68: tmpwav="$outdir/$wbase.norm.wav" Chris@68: sox "$w" "$tmpwav" gain -n -6.020599913279624 Chris@68: VAMP_PATH=../.. sonic-annotator \ Chris@68: --writer csv \ Chris@68: --csv-stdout \ Chris@68: --default vamp:silvet:silvet:notes \ Chris@68: "$tmpwav" | \ Chris@69: sed 's/^[^,]*,//' | \ Chris@68: while IFS=, read start duration frequency level label; do Chris@68: end=`echo "$start $duration + p" | dc` Chris@68: echo -e "$start\t$end\t$frequency" Chris@68: done > "$outlab" Chris@68: rm "$tmpwav" Chris@68: done Chris@62: fi Chris@62: done Chris@61: