Try Cello transposition algorithm again.

This commit is contained in:
Jim Hague 2015-12-13 22:47:24 +00:00
parent 6d6fffa050
commit 3fc263e207
1 changed files with 10 additions and 8 deletions

View File

@ -17,22 +17,24 @@ fi
# octave. $2 is highest note, $3 is lowest note. # octave. $2 is highest note, $3 is lowest note.
# #
# If range is G to d', transpose down 2 octaves. # 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 # Otherwise calculate the distance above d for the highest note on a one
# octave transposition, and the distance below G on a two octave # octave transposition, and the distance below C on a two octave
# transposition. Find the smallest, and use the corresponding # transposition. Find the smallest, and use the corresponding
# transposition. # transposition, preferring 2 octaves in case of a tie.
transposedowntwo() transposedowntwo()
{ {
if (($3 >= 104 && $2 <= 115)); then if (($3 >= 104 && $2 <= 115)); then
return 0; return 0;
fi fi
if (($3 < 100)); then
return 1;
fi
over=$(($2 - 108)) over=$(($2 - 108))
under=$((104 - $3)) if (($over < 0)); then
if (($over <= $under)); then over=0
fi
under=$((100 - $3))
if (($under < 0)); then
under=0
fi
if (($over < $under)); then
return 1; return 1;
fi fi