1
0
Fork 0

Clean up JACK MIDI handling #23

This commit is contained in:
Robbert van der Helm 2022-08-20 23:56:18 +02:00
parent 7a10d58a58
commit ca2e318551

View file

@ -121,16 +121,13 @@ impl Backend for Jack {
input_events.extend(midi_input.iter(ps).filter_map(|midi| { input_events.extend(midi_input.iter(ps).filter_map(|midi| {
// Unless it is a SysEx message, a JACK MIDI message is always three bytes or // Unless it is a SysEx message, a JACK MIDI message is always three bytes or
// less and is normalized (starts with a status byte and is self-contained). // less and is normalized (starts with a status byte and is self-contained).
// Filter out the SysEx messages. if midi.bytes.len() <= 3 {
let len = midi.bytes.len(); // JACK may not pad messages with zeroes, so mesages for things like channel
if len <= 3 { // pressure may be less than three bytes in length.
let mut midi_data = [0u8; 3]; let mut midi_data = [0u8; 3];
midi_data[..len].copy_from_slice(midi.bytes); midi_data[..midi.bytes.len()].copy_from_slice(midi.bytes);
if midi_data[0] >= 0x80 && midi_data[0] != 0xF0 && midi_data[0] != 0xF7 {
NoteEvent::from_midi(midi.time, midi_data).ok() NoteEvent::from_midi(midi.time, midi_data).ok()
} else {
None
}
} else { } else {
None None
} }