view makeCello.sh @ 650:9982077ac9b2

Update tune format files. In the main one, just remove a couple of now deprecated settings that did nothing anyway. For the web format, which is actually the format used to generate the downloadable PDFs, bring it into line with the main format but leave the margins at the default settings. Also remove the deprecated settings.
author Jim Hague <jim.hague@acm.org>
date Thu, 10 Nov 2016 00:47:55 +0000
parents cf2fe741a582
children ce5c7214f9aa
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.
# Otherwise calculate the distance above d for the highest note on a one
# octave transposition, and the distance below C on a two octave
# transposition. Find the smallest, and use the corresponding
# transposition, preferring 2 octaves in case of a tie.
transposedowntwo()
{
    if (($3 >= 104 && $2 <= 115)); then
        return 0;
    fi
    over=$(($2 - 108))
    if (($over < 0)); then
        over=0
    fi
    under=$((100 - $3))
    if (($under < 0)); then
        under=0
    fi
    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