Explorar o código

Fix MIDI Note Off missing on some devices

(cherry picked from commit ea0c398a196358a34e40dc7b93426913f11c160a)
Marcelo Fernandez %!s(int64=6) %!d(string=hai) anos
pai
achega
37c97d09e6
Modificáronse 1 ficheiros con 5 adicións e 0 borrados
  1. 5 0
      core/os/midi_driver.cpp

+ 5 - 0
core/os/midi_driver.cpp

@@ -75,6 +75,11 @@ void MIDIDriver::receive_input_packet(uint64_t timestamp, uint8_t *data, uint32_
 			if (length >= 3) {
 				event->set_pitch(data[1]);
 				event->set_velocity(data[2]);
+
+				if (event->get_message() == MIDI_MESSAGE_NOTE_ON && event->get_velocity() == 0) {
+					// https://www.midi.org/forum/228-writing-midi-software-send-note-off,-or-zero-velocity-note-on
+					event->set_message(MIDI_MESSAGE_NOTE_OFF);
+				}
 			}
 			break;