From: Carl Worth Date: Thu, 3 Oct 2013 17:52:59 +0000 (-0700) Subject: Fix high octave numbers (8+) to not be interpreted as 0. X-Git-Url: https://git.cworth.org/git?p=scherzo;a=commitdiff_plain Fix high octave numbers (8+) to not be interpreted as 0. A user recently noticed that the highest key on the piano (A8) was showing up as A0 in scherzo, (the lowest note on the piano). The bug was that scherzo was using only 3 bits for the octave number, which obviously only covers the range [0:7]. ISO octave numbers, (and the octave numbers needed for a piano), are the range [0:8]. So adding one bit to the octave storage does the trick here. --- diff --git a/pitch.h b/pitch.h index d376a22..683d727 100644 --- a/pitch.h +++ b/pitch.h @@ -32,7 +32,7 @@ typedef uint32_t pitch_t; #define PITCH_NAME_MASK (0x07 << PITCH_NAME_SHIFT) #define PITCH_OCTAVE_SHIFT (6) -#define PITCH_OCTAVE_MASK (0x07 << PITCH_OCTAVE_SHIFT) +#define PITCH_OCTAVE_MASK (0x0F << PITCH_OCTAVE_SHIFT) #define PITCH_ACCIDENTAL(pitch) \ (((pitch) & PITCH_ACCIDENTAL_MASK) >> PITCH_ACCIDENTAL_SHIFT)