view makeCello.sh @ 510:0a75c953c3c8 build-default-216

Add the Pugwash theme, aka the Trumpet Hornpipe. I've checked this against YouTube and the first episode, and corrected an obvious wrong note in Paul Hardy's version. But I've kept his descending triplets in the last line of the B tune - the original has the same note, with descending chords, but changing the triplets to remain on G doesn't sound right.
author Jim Hague <jim.hague@acm.org>
date Fri, 01 Aug 2014 23:41:42 +0100
parents 1073829494e3
children cf2fe741a582
line wrap: on
line source

#!/bin/bash
#
# 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.
#
# This relies on abcm2ps >= 6.0 but does not check for it.

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

# Return 0 if we should transpose down 2 octaves, 1 if just one
# octave. $2 is highest note, $3 is lowest note.
#
# If range is G to d', transpose down 2 octaves.
# If lowest note is < C, transpose down 1 octave.
# Otherwise calculate the distance above d for the highest note on a one
# octave transposition, and the distance below G on a two octave
# transposition. Find the smallest, and use the corresponding
# transposition.
transposedowntwo()
{
    if (($3 >= 104 && $2 <= 115)); then
        return 0;
    fi
    if (($3 < 100)); then
        return 1;
    fi
    over=$(($2 - 108))
    under=$((104 - $3))
    if (($over <= $under)); then
        return 1;
    fi

    return 0;
}

dir=`pwd`

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

mkdir -p $outdir

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

echo "Cello" > $outdir/instrument.txt

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.
        middle="D"
        if transposedowntwo $range; then
            middle="d"
        fi

        sed -e "/^ *K:/s/$/ clef=bass middle=$middle/" $filename > $outdir/$name.abc
    done