} else if (len == 3 && msg[0] == MIDI::position) {
/* MIDI Song Position */
- uint16_t midi_beats = (uint16_t) msg[1];
- midi_beats |= msg[2];
+ int midi_beats = (msg[2] << 7) | msg[1];
s += snprintf (&buf[s], bufsize, "%16s %d\n", "Position", (int) midi_beats);
} else {
}
/* split midi beats into a 14bit value */
- MIDI::byte msg[3] = {
- MIDI_CMD_COMMON_SONG_POS,
- midi_beats & 0x007f,
- midi_beats & 0x3f80
- };
+ MIDI::byte msg[3];
+ msg[0] = MIDI_CMD_COMMON_SONG_POS;
+ msg[1] = midi_beats & 0x007f;
+ msg[2] = midi_beats >> 7;
_midi_port->midimsg (msg, sizeof (msg), offset);