view makeHornInF.sh @ 351:6bcafbfac674 build-default-156

Now fix logic error in makeHornInF.sh. And we get some playable tunes. We might be able to improve the transposition further by taking the Cello approach of calculating the minimum distance outside the comfortable range. One for the future.
author Jim Hague <jim.hague@acm.org>
date Tue, 13 Aug 2013 01:48:21 +0100
parents afca0a74893b
children ecc62b487e57
line wrap: on
line source

#!/bin/bash
#
# Transpose a book for Horn in F.

if [ $# != 1 ]; then
    echo "Usage: makeFHorn.sh <book dir name>"
    exit 1
fi

# Transpose down (return 0) if top note was > e (> a for horn).
transposedown()
{
    (($2 > 109))
}

dir=`pwd`

booke=$dir/$1
outdir=$dir/$1-HornInF

mkdir -p $outdir

# Copy book component items.
cp $booke/*.txt $outdir

echo "Horn in F" > $outdir/instrument.txt

find $booke -name "*.abc" | sort |
    while read filename
    do
        name=`basename $filename .abc`
        range=`./abcrange.py $filename`

        # Transpose concert pitch up a fifth.
        # If there are any notes above 'd' (Horn 'g'), transpose
        # down a seventh instead.
        transpose=5
        if transposedown $range; then
            transpose=-7
        fi

        # Transpose. By default abc2abc will report errors in the output,
        # but this messes up output formatting so stop it. Also force all
        # 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 $filename -e -t $transpose | \
            sed -e "/^ *K:/s/$/ clef=treble/" > $outdir/$name.abc
    done