view makeCello.sh @ 312:8bc92e044e0a

Move tune and first line inclusion code into macros. Also use tune title, not name, as hyperlink targets. This removes the need to pass the name into the macros.
author Jim Hague <jim.hague@acm.org>
date Fri, 12 Jul 2013 11:36:14 +0100
parents 7b98278d6e8b
children b4a0161e8870
line wrap: on
line source

#!/bin/bash
#
# Copy a booke to cello-friendly form. Bass clef, transposed down 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

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
        # 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
            middle="D"
        fi
        name=`basename $filename .abc`
        sed -e "/^ *K:/s/$/ clef=bass middle=$middle/" $filename > $outdir/$name.abc
    done