annotate tuning-and-key/keycompare.sh @ 12:23572f9d25d9

Rename & duplicate plugin
author Chris Cannam
date Wed, 04 Feb 2015 10:15:57 +0000
parents 1924df3245f4
children
rev   line source
Chris@6 1 #!/bin/bash
Chris@6 2
Chris@6 3 ##!!! This is unfinished -- abandoned because a premise turned out not to be sound
Chris@6 4
Chris@6 5 set -e
Chris@6 6
Chris@6 7 mypath=`dirname $0`
Chris@6 8
Chris@6 9 sonic-annotator --minversion 1.1 || exit 1
Chris@6 10
Chris@6 11 reference="$1"
Chris@6 12 other="$2"
Chris@6 13
Chris@6 14 usage() {
Chris@6 15 echo "Usage: $0 reference.wav other.wav" 1>&2
Chris@6 16 exit 2
Chris@6 17 }
Chris@6 18
Chris@6 19 test -n "$reference" || usage
Chris@6 20 test -n "$other" || usage
Chris@6 21
Chris@6 22 set -u
Chris@6 23
Chris@6 24 transform="/tmp/$$.ttl"
Chris@6 25 trap "rm $transform" 0
Chris@6 26
Chris@6 27 provisional=$(sonic-annotator -d vamp:nnls-chroma:tuning:tuning "$other" -w csv --csv-stdout | tail -1 | awk -F, '{ print $4 }')
Chris@6 28
Chris@6 29 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 30
Chris@6 31 cat "keydetector.ttl" | sed "s,440,$provisional," > "$transform"
Chris@6 32
Chris@6 33 tonic=$(sonic-annotator -t "$transform" "$other" -w csv --csv-stdout --csv-omit-filename --summary mode|tail -1|awk -F, '{ print $4 }')
Chris@6 34
Chris@6 35 # modular arithmetic here is wrong. but it turns out our tuning freq
Chris@6 36 # estimation above is also wrong anyway for our test file
Chris@6 37
Chris@6 38 sum="print ($provisional * (2.0 ** ((($tonic - $ref_tonic) % 12) / 12.0)))"
Chris@6 39 freq=$(perl -e "$sum")
Chris@6 40
Chris@6 41 echo "Sum is: $sum"
Chris@6 42 echo "Estimated frequency is $freq (provisional: $provisional; reference tonic: $ref_tonic; test tonic: $tonic)"
Chris@6 43