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