changeset 537:cf2fe741a582

Try Cello transposition algorithm again.
author Jim Hague <jim.hague@acm.org>
date Sun, 13 Dec 2015 22:47:24 +0000
parents c0130d1ee053
children e9e2488bd0b7
files makeCello.sh
diffstat 1 files changed, 10 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/makeCello.sh	Sun Dec 13 22:46:55 2015 +0000
+++ b/makeCello.sh	Sun Dec 13 22:47:24 2015 +0000
@@ -17,22 +17,24 @@
 # 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
+# octave transposition, and the distance below C on a two octave
 # transposition. Find the smallest, and use the corresponding
-# transposition.
+# transposition, preferring 2 octaves in case of a tie.
 transposedowntwo()
 {
     if (($3 >= 104 && $2 <= 115)); then
         return 0;
     fi
-    if (($3 < 100)); then
-        return 1;
+    over=$(($2 - 108))
+    if (($over < 0)); then
+        over=0
     fi
-    over=$(($2 - 108))
-    under=$((104 - $3))
-    if (($over <= $under)); then
+    under=$((100 - $3))
+    if (($under < 0)); then
+        under=0
+    fi
+    if (($over < $under)); then
         return 1;
     fi