Determine if an octave mark is needed for the given pitch, and return the appropriate braille octave mark string. Returns empty string if no mark is needed.
Also updates internal state to track the current pitch for future comparisons.
The pitch of the current note
The braille octave mark string, or empty string if not needed
Reset state (e.g., at start of new line, new section, or new piece). After reset, the next note will receive an octave mark.
StaticcalculateCalculate the diatonic interval (in scale steps) between two pitches. A unison = 1, a second = 2, a third = 3, a fourth = 4, etc. This counts letter names, not semitones.
The diatonic interval (1 = unison, 2 = second, etc.)
StaticnoteConvert a NoteEnum to a diatonic index (0-6). C=0, D=1, E=2, F=3, G=4, A=5, B=6
Tracks the current octave context and determines when octave marks are needed in braille music output.
Rules from Music Braille Code 2015, Par. 3.2: