diff options
-rw-r--r-- | libs/ardour/midi_port.cc | 4 | ||||
-rw-r--r-- | libs/evoral/src/SMF.cpp | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc index ccd6e9848b..615abede1c 100644 --- a/libs/ardour/midi_port.cc +++ b/libs/ardour/midi_port.cc @@ -117,9 +117,9 @@ MidiPort::get_midi_buffer (pframes_t nframes) if (buf[0] == 0xfe) { /* throw away active sensing */ continue; - } if (buf[0] == 0x90 && buf[2] == 0) { + } else if ((buf[0] & 0xF0) == 0x90 && buf[2] == 0) { /* normalize note on with velocity 0 to proper note off */ - buf[0] = 0x80; /* note off */ + buf[0] = 0x80 | (buf[0] & 0x0F); /* note off */ buf[2] = 0x40; /* default velocity */ } diff --git a/libs/evoral/src/SMF.cpp b/libs/evoral/src/SMF.cpp index edf33c23f2..0a5bf589f5 100644 --- a/libs/evoral/src/SMF.cpp +++ b/libs/evoral/src/SMF.cpp @@ -287,9 +287,9 @@ SMF::read_event(uint32_t* delta_t, uint32_t* size, uint8_t** buf, event_id_t* no } memcpy(*buf, event->midi_buffer, size_t(event_size)); *size = event_size; - if ((*buf)[0] == 0x90 && (*buf)[2] == 0) { + if (((*buf)[0] & 0xF0) == 0x90 && (*buf)[2] == 0) { /* normalize note on with velocity 0 to proper note off */ - (*buf)[0] = 0x80; /* note off */ + (*buf)[0] = 0x80 | ((*buf)[0] & 0x0F); /* note off */ (*buf)[2] = 0x40; /* default velocity */ } |