when adding a default start/end range to a Location while saving a template, do not...
[ardour.git] / libs / evoral / evoral / midi_util.h
index f32e816321e878d980fef7f1a014d8b0cf98c08d..20ff94956973826c3ac6ed5ca25a9c1468648157 100644 (file)
@@ -93,7 +93,7 @@ midi_event_size(const uint8_t* buffer)
        // see http://www.midi.org/techspecs/midimessages.php
        if (status == MIDI_CMD_COMMON_SYSEX) {
                int end;
-               
+
                for (end = 1; buffer[end] != MIDI_CMD_COMMON_SYSEX_END; end++) {
                        if ((buffer[end] & 0x80) != 0) {
                                return -1;
@@ -120,16 +120,19 @@ midi_event_is_valid(const uint8_t* buffer, size_t len)
        if (size < 0 || (size_t)size != len) {
                return false;
        }
-       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
+                       }
                }
        }
        return true;
 }
 
-LIBEVORAL_API std::string midi_note_name (uint8_t noteval);
-
 } // namespace Evoral
 
 #endif // EVORAL_MIDI_UTIL_H