Skip to content

Commit 13e2dca

Browse files
committed
simplify further schedule helper
1 parent 7b376df commit 13e2dca

2 files changed

Lines changed: 37 additions & 11 deletions

File tree

note_off_delay/src/lib.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ use vst::plugin::{CanDo, Category, HostCallback, Info, Plugin};
1515
use crate::parameters::PARAMETER_COUNT;
1616
use parameters::NoteOffDelayPluginParameters;
1717
use parameters::Parameter;
18-
use std::mem::take;
1918
use util::absolute_time_midi_message_vector::AbsoluteTimeMidiMessageVector;
20-
use util::delayed_message_consumer::{MessageReason, ScheduledEventsHelper};
19+
use util::delayed_message_consumer::{process_scheduled_events, MessageReason};
2120
use util::logging::logging_setup;
2221
use util::messages::format_event;
2322
use util::midi_message_type::MidiMessageType;
@@ -48,19 +47,20 @@ impl Default for NoteOffDelayPlugin {
4847
impl NoteOffDelayPlugin {
4948
fn send_events(&mut self, samples: usize) {
5049
if let Ok(mut host_callback_lock) = self.parameters.host_mutex.lock() {
51-
let mut helper = ScheduledEventsHelper::new(
50+
let (queued_messages, events) = process_scheduled_events(
5251
samples,
5352
self.parameters.get_delay().is_active(),
5453
self.parameters.get_max_notes(),
5554
self.parameters
5655
.get_bool_parameter(Parameter::MaxNotesAppliesToDelayedNotesOnly),
5756
self.current_time_in_samples,
57+
&self.message_queue,
5858
);
59-
helper.process_scheduled_events(&self.message_queue);
60-
self.message_queue = take(&mut helper.queued_messages);
59+
60+
self.message_queue = queued_messages;
6161
self.send_buffer
6262
.borrow_mut()
63-
.send_events(helper.events, &mut host_callback_lock.host);
63+
.send_events(events, &mut host_callback_lock.host);
6464
}
6565
}
6666

util/src/delayed_message_consumer.rs

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,20 +82,46 @@ impl PlayingNotes {
8282
}
8383
}
8484

85-
pub struct ScheduledEventsHelper {
85+
struct ScheduledEventsHelper {
8686
playing_notes: PlayingNotes,
87-
pub queued_messages: AbsoluteTimeMidiMessageVector,
87+
queued_messages: AbsoluteTimeMidiMessageVector,
8888
notes_on_to_requeue: HashMap<usize, AbsoluteTimeMidiMessage>,
89-
pub events: Vec<MidiEvent>,
89+
events: Vec<MidiEvent>,
9090
buffer_duration_in_samples: usize,
9191
delay_is_active: bool,
9292
max_notes: MaxNotesParameter,
9393
apply_max_notes_to_delayed_notes_only: bool,
9494
current_time_in_samples: usize,
9595
}
9696

97+
pub fn process_scheduled_events(
98+
buffer_duration_in_samples: usize,
99+
delay_is_active: bool,
100+
max_notes: MaxNotesParameter,
101+
apply_max_notes_to_delayed_notes_only: bool,
102+
current_time_in_samples: usize,
103+
messages: &AbsoluteTimeMidiMessageVector,
104+
) -> (AbsoluteTimeMidiMessageVector, Vec<MidiEvent>) {
105+
let mut helper = ScheduledEventsHelper::new(
106+
buffer_duration_in_samples,
107+
delay_is_active,
108+
max_notes,
109+
apply_max_notes_to_delayed_notes_only,
110+
current_time_in_samples,
111+
);
112+
helper.process_scheduled_events(messages);
113+
114+
let ScheduledEventsHelper {
115+
events,
116+
queued_messages,
117+
..
118+
} = helper;
119+
120+
(queued_messages, events)
121+
}
122+
97123
impl ScheduledEventsHelper {
98-
pub fn new(
124+
fn new(
99125
buffer_duration_in_samples: usize,
100126
delay_is_active: bool,
101127
max_notes: MaxNotesParameter,
@@ -174,7 +200,7 @@ impl ScheduledEventsHelper {
174200
}
175201
}
176202

177-
pub fn process_scheduled_events(&mut self, messages: &AbsoluteTimeMidiMessageVector) {
203+
fn process_scheduled_events(&mut self, messages: &AbsoluteTimeMidiMessageVector) {
178204
for mut message in messages.iter().copied() {
179205
if message.play_time_in_samples < self.current_time_in_samples {
180206
match MidiMessageType::from(message) {

0 commit comments

Comments
 (0)