Mercurial > dottes
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