Mercurial > hg > tuning-difference
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 |