changeset 671:2f6e05d0aba0

Add experimental Alto Recorder (C Fingering) instrument. This should produce the bookes and website, but the website is not linked into the main page yet.
author Jim Hague <jim.hague@acm.org>
date Thu, 14 Sep 2017 10:41:46 +0100
parents df13ed652209
children 57ac5ad9556d
files abcrange.py makeAll.sh makeAltoRecorderCFingering.sh
diffstat 3 files changed, 55 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/abcrange.py	Tue Sep 12 17:51:55 2017 +0100
+++ b/abcrange.py	Thu Sep 14 10:41:46 2017 +0100
@@ -7,7 +7,7 @@
 # The output is given in purely numeric form, to avoid needing to
 # re-parse it in an external script. A single line is printed with
 # the highest note followed by a space and the lowest note. Middle C ('C') is
-# 100. D an octave about ('d') is 108. D an octave above that ('d'') is
+# 100. D an octave above ('d') is 108. D an octave above that ('d'') is
 # 205. D below middle C ('d,') is 94. And so on.
 #
 # For example:
--- a/makeAll.sh	Tue Sep 12 17:51:55 2017 +0100
+++ b/makeAll.sh	Thu Sep 14 10:41:46 2017 +0100
@@ -41,6 +41,9 @@
 
     ./makeHornInF.sh $1
     makeATransposedBooke $1-HornInF $1 "horn in F"
+
+    ./makeAltoRecorderCFingering.sh $1
+    makeATransposedBooke $1-AltoRecorderCFingering $1 "alto recorder, C fingering"
 }
 
 makeBumperBooke()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/makeAltoRecorderCFingering.sh	Thu Sep 14 10:41:46 2017 +0100
@@ -0,0 +1,51 @@
+#!/bin/bash
+#
+# Transpose a book for alto recorder with C fingering.
+
+if [ $# != 1 ]; then
+    echo "Usage: makeAltoRecorderCFingering.sh <book dir name>"
+    exit 1
+fi
+
+# Transpose up (return 0) if bottom note was < F (< C for recorder).
+transposeup()
+{
+    (($3 < 103))
+}
+
+dir=`pwd`
+
+booke=$dir/$1
+outdir=$dir/$1-AltoRecorderCFingering
+
+mkdir -p $outdir
+
+# Copy book component items.
+cp $booke/*.txt $outdir
+
+echo "Alto Recorder (C Fingering)" > $outdir/instrument.txt
+
+find $booke -name "*.abc" | sort |
+    while read filename
+    do
+        name=`basename $filename .abc`
+        range=`./abcrange.py $filename`
+
+        # Transpose concert pitch down a fifth.
+        # If there are any notes below 'F' (recorder 'C'), transpose
+        # up a seventh instead.
+        transpose=-5
+        if transposeup $range; then
+            transpose=7
+        fi
+
+        # There's no point in having transposed chords. Remove from the
+        # abc before transposing. Some badly formed chord items can give
+        # erroneous output from abc2abc (like, strings of binary gibberish).
+        sed -e "s/\"[^\"]*\"//g" $filename > $outdir/$name.abc.tmp
+
+        # Transpose. By default abc2abc will report errors in the output,
+        # but this messes up output formatting so stop it.
+        abc2abc $outdir/$name.abc.tmp -e -t $transpose > $outdir/$name.abc
+        rm $outdir/$name.abc.tmp
+    done