Mercurial > dottes
comparison makeCello.sh @ 537:cf2fe741a582
Try Cello transposition algorithm again.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Sun, 13 Dec 2015 22:47:24 +0000 |
parents | 1073829494e3 |
children | ce5c7214f9aa |
comparison
equal
deleted
inserted
replaced
536:c0130d1ee053 | 537:cf2fe741a582 |
---|---|
15 | 15 |
16 # Return 0 if we should transpose down 2 octaves, 1 if just one | 16 # Return 0 if we should transpose down 2 octaves, 1 if just one |
17 # octave. $2 is highest note, $3 is lowest note. | 17 # octave. $2 is highest note, $3 is lowest note. |
18 # | 18 # |
19 # If range is G to d', transpose down 2 octaves. | 19 # If range is G to d', transpose down 2 octaves. |
20 # If lowest note is < C, transpose down 1 octave. | |
21 # Otherwise calculate the distance above d for the highest note on a one | 20 # Otherwise calculate the distance above d for the highest note on a one |
22 # octave transposition, and the distance below G on a two octave | 21 # octave transposition, and the distance below C on a two octave |
23 # transposition. Find the smallest, and use the corresponding | 22 # transposition. Find the smallest, and use the corresponding |
24 # transposition. | 23 # transposition, preferring 2 octaves in case of a tie. |
25 transposedowntwo() | 24 transposedowntwo() |
26 { | 25 { |
27 if (($3 >= 104 && $2 <= 115)); then | 26 if (($3 >= 104 && $2 <= 115)); then |
28 return 0; | 27 return 0; |
29 fi | 28 fi |
30 if (($3 < 100)); then | 29 over=$(($2 - 108)) |
31 return 1; | 30 if (($over < 0)); then |
31 over=0 | |
32 fi | 32 fi |
33 over=$(($2 - 108)) | 33 under=$((100 - $3)) |
34 under=$((104 - $3)) | 34 if (($under < 0)); then |
35 if (($over <= $under)); then | 35 under=0 |
36 fi | |
37 if (($over < $under)); then | |
36 return 1; | 38 return 1; |
37 fi | 39 fi |
38 | 40 |
39 return 0; | 41 return 0; |
40 } | 42 } |