Remove other unnecessary uses of sort. When generating intermediate files, it doesn't matter in what order it happens.
79 lines
1.9 KiB
Bash
Executable File
79 lines
1.9 KiB
Bash
Executable File
#!/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/Compact
|
|
|
|
# Copy book component items.
|
|
cp $booke/*.txt $booke/*.md $booke/image.jpg $outdir
|
|
|
|
echo "Cello" > $outdir/instrument.txt
|
|
|
|
find $booke -name "*.abc" |
|
|
while read filename
|
|
do
|
|
name=`basename $filename .abc`
|
|
|
|
dir=`dirname $filename`
|
|
basedir=`basename $dir`
|
|
compact=""
|
|
if [ "$basedir" = "Compact" ]; then
|
|
compact="Compact/"
|
|
fi
|
|
|
|
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/$compact$name.abc
|
|
done
|