Clean up JACK MIDI handling #23
This commit is contained in:
parent
7a10d58a58
commit
ca2e318551
1 changed files with 6 additions and 9 deletions
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue