Clamp event times for JACK standalones
This commit is contained in:
parent
8d2d293b49
commit
eac88c4477
1 changed files with 15 additions and 6 deletions
|
@ -121,11 +121,15 @@ impl<P: Plugin> Backend<P> for Jack {
|
||||||
|
|
||||||
input_events.clear();
|
input_events.clear();
|
||||||
if let Some(midi_input) = &midi_input {
|
if let Some(midi_input) = &midi_input {
|
||||||
input_events.extend(
|
input_events.extend(midi_input.iter(ps).filter_map(|midi| {
|
||||||
midi_input
|
nih_debug_assert!(
|
||||||
.iter(ps)
|
midi.time < num_frames,
|
||||||
.filter_map(|midi| NoteEvent::from_midi(midi.time, midi.bytes).ok()),
|
"Input event is out of bounds, will be clamped to the buffer's size"
|
||||||
);
|
);
|
||||||
|
let timing = midi.time.min(num_frames - 1);
|
||||||
|
|
||||||
|
NoteEvent::from_midi(timing, midi.bytes).ok()
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
output_events.clear();
|
output_events.clear();
|
||||||
|
@ -134,7 +138,12 @@ impl<P: Plugin> Backend<P> for Jack {
|
||||||
let mut midi_output = midi_output.lock();
|
let mut midi_output = midi_output.lock();
|
||||||
let mut midi_writer = midi_output.writer(ps);
|
let mut midi_writer = midi_output.writer(ps);
|
||||||
for event in output_events.drain(..) {
|
for event in output_events.drain(..) {
|
||||||
let timing = event.timing();
|
// Out of bounds events are clamped to the buffer's size
|
||||||
|
nih_debug_assert!(
|
||||||
|
event.timing() < num_frames,
|
||||||
|
"Output event is out of bounds, will be clamped to the buffer's size"
|
||||||
|
);
|
||||||
|
let timing = event.timing().min(num_frames - 1);
|
||||||
|
|
||||||
match event.as_midi() {
|
match event.as_midi() {
|
||||||
Some(MidiResult::Basic(midi_data)) => {
|
Some(MidiResult::Basic(midi_data)) => {
|
||||||
|
|
Loading…
Add table
Reference in a new issue