Chris@6: #!/bin/bash Chris@6: Chris@6: ##!!! This is unfinished -- abandoned because a premise turned out not to be sound Chris@6: Chris@6: set -e Chris@6: Chris@6: mypath=`dirname $0` Chris@6: Chris@6: sonic-annotator --minversion 1.1 || exit 1 Chris@6: Chris@6: reference="$1" Chris@6: other="$2" Chris@6: Chris@6: usage() { Chris@6: echo "Usage: $0 reference.wav other.wav" 1>&2 Chris@6: exit 2 Chris@6: } Chris@6: Chris@6: test -n "$reference" || usage Chris@6: test -n "$other" || usage Chris@6: Chris@6: set -u Chris@6: Chris@6: transform="/tmp/$$.ttl" Chris@6: trap "rm $transform" 0 Chris@6: Chris@6: provisional=$(sonic-annotator -d vamp:nnls-chroma:tuning:tuning "$other" -w csv --csv-stdout | tail -1 | awk -F, '{ print $4 }') Chris@6: Chris@6: ref_tonic=$(sonic-annotator -t "keydetector.ttl" "$reference" -w csv --csv-stdout --csv-omit-filename --summary mode|tail -1|awk -F, '{ print $4 }') Chris@6: Chris@6: cat "keydetector.ttl" | sed "s,440,$provisional," > "$transform" Chris@6: Chris@6: tonic=$(sonic-annotator -t "$transform" "$other" -w csv --csv-stdout --csv-omit-filename --summary mode|tail -1|awk -F, '{ print $4 }') Chris@6: Chris@6: # modular arithmetic here is wrong. but it turns out our tuning freq Chris@6: # estimation above is also wrong anyway for our test file Chris@6: Chris@6: sum="print ($provisional * (2.0 ** ((($tonic - $ref_tonic) % 12) / 12.0)))" Chris@6: freq=$(perl -e "$sum") Chris@6: Chris@6: echo "Sum is: $sum" Chris@6: echo "Estimated frequency is $freq (provisional: $provisional; reference tonic: $ref_tonic; test tonic: $tonic)" Chris@6: