diff makeHornInF.sh @ 322:b4a0161e8870

Add abcrange.py to return the range of a tune, and use it in instrument transposition. This lets us transpose on boundaries that aren't octave boundaries.
author Jim Hague <jim.hague@acm.org>
date Thu, 18 Jul 2013 15:27:57 +0100
parents 7b98278d6e8b
children b8ea9cfb3546
line wrap: on
line diff
--- a/makeHornInF.sh	Wed Jul 17 18:28:07 2013 +0100
+++ b/makeHornInF.sh	Thu Jul 18 15:27:57 2013 +0100
@@ -7,6 +7,12 @@
     exit 1
 fi
 
+# Transpose down (return 0) if top note was > e (> a for horn).
+transposedown()
+{
+    return $(($2 <= 109))
+}
+
 dir=`pwd`
 
 booke=$dir/$1
@@ -23,17 +29,13 @@
     while read filename
     do
         name=`basename $filename .abc`
-        tmpfile=$outdir/$name.abc.tmp
-
-        # Strip out guitar chords first. This has the advantage of removing
-        # text with arbitary lower case characters too.
-        sed -e "s/\"[^\"]*\"//g" $filename > $tmpfile
+        range=`./abcrange.py $filename`
 
         # Transpose concert pitch up a fifth.
-        # If there are any notes at or above C above middle C, transpose
+        # If there are any notes above 'd' (Horn 'g'), transpose
         # down a seventh instead.
         transpose=5
-        if grep -v "^[A-Z]:" $tmpfile | sed -e 's/"[^"]*"//g' | grep -q "[a-g]"; then
+        if transposedown $range; then
             transpose=-7
         fi
 
@@ -42,7 +44,6 @@
         # output to be in treble clef; some lower tunes with the odd high
         # note will otherwise appear in bass clef, which is not what this
         # crap horn player wants.
-        abc2abc $tmpfile -e -t $transpose | \
+        abc2abc $filename -e -t $transpose | \
             sed -e "/^ *K:/s/$/ clef=treble/" > $outdir/$name.abc
-        rm $tmpfile
     done