diff testdata/TRIOS-silvet/calculate.sh @ 68:4ea3ef5c696a

Simplify naming, handle files individually, scale inputs
author Chris Cannam
date Tue, 29 Apr 2014 10:42:53 +0100
parents 0607b9fce963
children 9c7e6086192d
line wrap: on
line diff
--- a/testdata/TRIOS-silvet/calculate.sh	Mon Apr 28 17:37:13 2014 +0100
+++ b/testdata/TRIOS-silvet/calculate.sh	Tue Apr 29 10:42:53 2014 +0100
@@ -20,6 +20,11 @@
     exit 1
 fi
 
+if ! sox --version ; then
+    echo "Failed to run sox (not in PATH?), giving up"
+    exit 1
+fi
+
 for d in brahms lussier mozart schubert take_five; do
     dir="$trios_path/$d"
     outdir="$outbase/$d"
@@ -27,22 +32,27 @@
         echo "TRIOS subdir $dir not found, skipping it"
     else 
         mkdir -p "$outdir"
-	VAMP_PATH=../.. sonic-annotator \
-	    --writer csv \
-	    --csv-basedir "$outdir" \
-	    --csv-force \
-	    --default vamp:silvet:silvet:notes \
-	    --recursive \
-	    "$dir"
+        for w in "$dir"/*.wav; do
+            wbase=`basename "$w" .wav`
+            outlab="$outdir/$wbase.lab"
+            echo "Processing wav file $w, writing to lab file $outlab"
+	    # The MATLAB method starts by normalising to a peak 0.5
+	    # (approx -3dBFS amplitude or -6dB power). We can't do
+	    # that in the plugin, so must do it here
+	    tmpwav="$outdir/$wbase.norm.wav"
+	    sox "$w" "$tmpwav" gain -n -6.020599913279624
+	    VAMP_PATH=../.. sonic-annotator \
+		--writer csv \
+		--csv-stdout \
+		--csv-force \
+		--default vamp:silvet:silvet:notes \
+		"$tmpwav" | \
+		while IFS=, read start duration frequency level label; do
+		end=`echo "$start $duration + p" | dc`
+		echo -e "$start\t$end\t$frequency"
+	    done > "$outlab"
+	    rm "$tmpwav"
+	done
     fi
-    echo "Converting to lab files..."
-    for csv in "$outdir"/*.csv; do
-	cbase=`basename "$csv" .csv`
-	cat "$csv" | while IFS=, read start duration frequency level label; do
-	    end=`echo "$start $duration + p" | dc`
-	    echo -e "$start\t$end\t$frequency"
-	done > "$outdir/$cbase.lab"
-	rm "$csv"
-    done
 done