forked from CryHavoc/dottes
Try to be cleverer when transposing for cello.
Jane says: Am most comfortable between the bottom G (the bottom line of the bass clef) and top D (the note above middle C), but can play from bottom C upwards (the C string is a bit growly) and at a push can get as high as the A above middle C. Implement the following rule: 1. If range is G to d', transpose down 2 octaves. 2. If lowest note is < C, transpose down 1 octave. 3. 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.
This commit is contained in:
parent
db5e5dfe4c
commit
5dcb49f712
31
makeCello.sh
31
makeCello.sh
|
@ -13,10 +13,30 @@ if [ $# != 1 ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Transpose down (return 0) if bottom note was < C.
|
# 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()
|
transposedowntwo()
|
||||||
{
|
{
|
||||||
return $(($3 >= 100))
|
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`
|
dir=`pwd`
|
||||||
|
@ -38,11 +58,10 @@ find $booke -name "*.abc" | sort |
|
||||||
range=`./abcrange.py $filename`
|
range=`./abcrange.py $filename`
|
||||||
|
|
||||||
# Move down either one octave or two, depending on the range
|
# Move down either one octave or two, depending on the range
|
||||||
# of the tune. If there are any notes below middle C, transpose
|
# of the tune.
|
||||||
# down one octave. The default is to transpose down two octaves.
|
middle="D"
|
||||||
middle="d"
|
|
||||||
if transposedowntwo $range; then
|
if transposedowntwo $range; then
|
||||||
middle="D"
|
middle="d"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sed -e "/^ *K:/s/$/ clef=bass middle=$middle/" $filename > $outdir/$name.abc
|
sed -e "/^ *K:/s/$/ clef=bass middle=$middle/" $filename > $outdir/$name.abc
|
||||||
|
|
Loading…
Reference in New Issue