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.
return PITCH_LITERAL (C, NATURAL, octave);
break;
case 1:
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:
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);
break;
case 4:
return PITCH_LITERAL (E, NATURAL, octave);
return PITCH_LITERAL (F, NATURAL, octave);
break;
case 6:
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:
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:
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);
break;
case 11:
return PITCH_LITERAL (B, NATURAL, octave);