Mercurial > dottes
diff makeCello.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 | 1073829494e3 |
line wrap: on
line diff
--- a/makeCello.sh Wed Jul 17 18:28:07 2013 +0100 +++ b/makeCello.sh Thu Jul 18 15:27:57 2013 +0100 @@ -1,6 +1,7 @@ #!/bin/bash # -# Copy a booke to cello-friendly form. Bass clef, transposed down 2 octaves. +# Copy a booke to cello-friendly form. Bass clef, transposed down +# 1 or 2 octaves. # # It would be easier to do with transpose in dottes.fmt, but I can't get # that to work properly for a 2 octave downward transpose. @@ -12,6 +13,12 @@ exit 1 fi +# Transpose down (return 0) if bottom note was < C. +transposedowntwo() +{ + return $(($3 >= 100)) +} + dir=`pwd` booke=$dir/$1 @@ -27,13 +34,16 @@ find $booke -name "*.abc" | sort | while read filename do + name=`basename $filename .abc` + range=`./abcrange.py $filename` + # Move down either one octave or two, depending on the range # of the tune. If there are any notes below middle C, transpose # down one octave. The default is to transpose down two octaves. middle="d" - if grep -v "^[A-Z]:" $filename | sed -e 's/"[^"]*"//g' | grep -q "[A-Z],"; then + if transposedowntwo $range; then middle="D" fi - name=`basename $filename .abc` + sed -e "/^ *K:/s/$/ clef=bass middle=$middle/" $filename > $outdir/$name.abc done