]> git.cworth.org Git - scherzo/commitdiff
Prefer flats rather than sharps when converting from MIDI
authorCarl Worth <cworth@cworth.org>
Tue, 1 Oct 2013 19:20:06 +0000 (12:20 -0700)
committerCarl Worth <cworth@cworth.org>
Thu, 3 Oct 2013 17:50:55 +0000 (10:50 -0700)
It's ambiguous before we look at the key, (which often tells us what
to do). But when the key doesn't indicate, we can really say flat from
above or sharp from below.

The preference for choosing flat here is so that if we input a scale
such as Db major, we get that key signature (with 5 flats) rather than
the rather unlikely key of C# with 7 sharps.

pitch.c

diff --git a/pitch.c b/pitch.c
index 03eb48100e56efd011206928d391b3ffa5eaba65..6bb64702936363813ac8ebdfae2d1c1f5ac5f5c0 100644 (file)
--- a/pitch.c
+++ b/pitch.c
@@ -255,13 +255,13 @@ pitch_from_midi (unsigned char midi_note)
        return PITCH_LITERAL (C, NATURAL, octave);
        break;
     case 1:
-       return PITCH_LITERAL (C, SHARP, octave);
+       return PITCH_LITERAL (D, FLAT, octave);
        break;
     case 2:
        return PITCH_LITERAL (D, NATURAL, octave);
        break;
     case 3:
-       return PITCH_LITERAL (D, SHARP, octave);
+       return PITCH_LITERAL (E, FLAT, octave);
        break;
     case 4:
        return PITCH_LITERAL (E, NATURAL, octave);
@@ -270,19 +270,19 @@ pitch_from_midi (unsigned char midi_note)
        return PITCH_LITERAL (F, NATURAL, octave);
        break;
     case 6:
-       return PITCH_LITERAL (F, SHARP, octave);
+       return PITCH_LITERAL (G, FLAT, octave);
        break;
     case 7:
        return PITCH_LITERAL (G, NATURAL, octave);
        break;
     case 8:
-       return PITCH_LITERAL (G, SHARP, octave);
+       return PITCH_LITERAL (A, FLAT, octave);
        break;
     case 9:
        return PITCH_LITERAL (A, NATURAL, octave);
        break;
     case 10:
-       return PITCH_LITERAL (A, SHARP, octave);
+       return PITCH_LITERAL (B, FLAT, octave);
        break;
     case 11:
        return PITCH_LITERAL (B, NATURAL, octave);