annotate featurescript.sh @ 9:4ea6619cb3f5 tip

removed log files
author matthiasm
date Fri, 11 Apr 2014 15:55:11 +0100
parents 4182672fd6f8
children
rev   line source
Chris@0 1 #!/bin/bash
Chris@0 2
Chris@0 3 base=/import/c4dm-music-a/C4DM\ Music\ Collection
Chris@0 4
Chris@0 5 mine=`date '+%Y-%m-%d_%H.%M.%S'`_$$
Chris@0 6 logfile="logs/$mine.log"
Chris@0 7 statusfile="logs/$mine.status"
Chris@0 8 matlogfile="logs/$mine.matlog"
Chris@0 9 mkdir -p logs
Chris@0 10
Chris@0 11 echo "base: $base"
Chris@0 12 echo "log file to $logfile"
Chris@0 13 echo "overall status reports to $statusfile"
Chris@0 14
Chris@0 15 report_failure() {
Chris@0 16 echo "FAIL $@" >> "$statusfile"
Chris@0 17 }
Chris@0 18 report_success() {
Chris@0 19 echo "WIN $@" >> "$statusfile"
Chris@0 20 }
Chris@0 21 report_existing() {
Chris@0 22 echo "HAZ $@" >> "$statusfile"
Chris@0 23 }
Chris@0 24 report_busy() {
Chris@0 25 echo "BUSY $@" >> "$statusfile"
Chris@0 26 }
Chris@0 27
Chris@0 28 find "$base" -type d | while read source; do
Chris@0 29
Chris@0 30 ls "$source" | fgrep -q .wav || continue
Chris@0 31
Chris@0 32 echo "source: $source"
Chris@0 33 dirname=${source#$base}
Chris@0 34 dirname=${dirname#/}
Chris@0 35 echo "dirname: $dirname"
Chris@0 36 [ -n "$dirname" ] || continue
Chris@0 37
Chris@0 38 for wavfilename in "$source/"*.wav; do # loop over songs
Chris@0 39
Chris@0 40 echo "$wavfilename"
Chris@0 41
Chris@0 42 songbasename=`basename "${wavfilename%.wav}"`
Chris@0 43 echo .................. new song "$dirname/$songbasename" .............
Chris@0 44 songdir="output/$dirname/$songbasename" # this is where all song-related features will go into
Chris@0 45 mkdir -p "$songdir"
Chris@0 46
Chris@0 47 ( if ! flock -en 200; then
Chris@0 48 echo "songdir $songdir is locked already, skipping it"
Chris@0 49 report_busy "$wavfilename"
Chris@0 50 exit
Chris@0 51 fi
Chris@0 52
Chris@0 53 echo "have lock on songdir $songdir"
Chris@0 54
Chris@0 55 if [ -s "$songdir/$songbasename""_vamp_matthiasm_nnls_chroma_bothchroma.csv" ]; then
Chris@0 56 echo "non-empty output file(s) exist -- not re-generating"
Chris@0 57 report_existing "$wavfilename"
Chris@0 58 exit
Chris@0 59 fi
Chris@0 60
Chris@0 61 echo oooooooooooooooooooooooooooooooooooooooooooooooo
Chris@0 62 echo low level feature extraction
Chris@0 63 echo oooooooooooooooooooooooooooooooooooooooooooooooo
Chris@0 64 VAMP_PATH=. ./sonic-annotator-unix \
Chris@0 65 -d vamp:matthiasm:nnls_chroma:simplechord \
Chris@0 66 -d vamp:matthiasm:nnls_chroma:bothchroma \
Chris@0 67 -d vamp:matthiasm:nnls_chroma:localtuning \
Chris@0 68 -d vamp:matthiasm:nnls_chroma:logfreqspec \
Chris@0 69 -d vamp:matthiasm:nnls_chroma:semitonespectrum \
Chris@0 70 -d vamp:matthiasm:nnls_chroma:tunedlogfreqspec \
Chris@0 71 -d vamp:matthiasm:nnls_chroma:tuning \
Chris@0 72 -w csv \
Chris@0 73 --csv-basedir "$songdir/" \
Chris@0 74 "$wavfilename"
Chris@0 75 matlab_infile=`echo "$wavfilename" | sed "s/'/''/g"`
Chris@0 76 matlab_chromafile=`echo "$songdir/$songbasename" | sed "s/'/''/g"`_vamp_matthiasm_nnls_chroma_bothchroma.csv
Chris@0 77 matlab_outbase=`echo "$songdir/$songbasename" | sed "s/'/''/g"`
Chris@0 78 matlab_segout="$matlab_outbase".seg
Chris@0 79 matlab_chordout="$matlab_outbase".chord
Chris@0 80 # matlab_keyout="$matlab_outbase".key # is still done in matlab
Chris@0 81 echo oooooooooooooooooooooooooooooooooooooooooooooooo
Chris@0 82 echo segmentation
Chris@0 83 echo oooooooooooooooooooooooooooooooooooooooooooooooo
Chris@0 84 echo "run_segmentation('$matlab_infile','$matlab_segout','$matlab_chromafile')" | matlab -nodisplay -nojvm 2>&1 >/dev/null | tee "$matlogfile"
Chris@0 85 if grep -qi "error" "$matlogfile" ; then
Chris@0 86 report_failure "$wavfilename"
Chris@0 87 exit
Chris@0 88 else
Chris@0 89 rm "$matlogfile"
Chris@0 90 fi
Chris@0 91 echo oooooooooooooooooooooooooooooooooooooooooooooooo
Chris@0 92 echo DBN chord estimation
Chris@0 93 echo oooooooooooooooooooooooooooooooooooooooooooooooo
Chris@0 94 echo "run_chordandkey('$matlab_infile','$matlab_chordout','$matlab_chromafile')" | matlab -nodisplay -nojvm 2>&1 >/dev/null | tee "$matlogfile"
Chris@0 95 cat "$matlogfile"
Chris@0 96 if grep -qi "error" "$matlogfile" ; then
Chris@0 97 report_failure "$wavfilename"
Chris@0 98 exit
Chris@0 99 else
Chris@0 100 rm "$matlogfile"
Chris@0 101 fi
Chris@0 102 report_success "$wavfilename"
Chris@0 103
Chris@0 104 )200>"$songdir/.lock"
Chris@0 105 done
Chris@0 106
Chris@0 107 done > "$logfile" 2>&1
Chris@0 108
Chris@0 109