- for (size_t i = 1; i < len; ++i) {
- if ((buffer[i] & 0x80) != 0) {
- return false; // Non-status byte has MSb set
+ if (status < 0xf0) {
+ /* Channel messages: all start with status byte followed by
+ * non status bytes.
+ */
+ for (size_t i = 1; i < len; ++i) {
+ if ((buffer[i] & 0x80) != 0) {
+ return false; // Non-status byte has MSb set
+ }