1
0
Fork 0

Remove duplication in CLAP note timing handling

This commit is contained in:
Robbert van der Helm 2022-07-04 22:43:48 +02:00
parent 5b264179d4
commit 1bbb56151d

View file

@ -1261,6 +1261,8 @@ impl<P: ClapPlugin> Wrapper<P> {
current_sample_idx: usize, current_sample_idx: usize,
) -> bool { ) -> bool {
let raw_event = &*event; let raw_event = &*event;
let timing = raw_event.time - current_sample_idx as u32;
match (raw_event.space_id, raw_event.type_) { match (raw_event.space_id, raw_event.type_) {
(CLAP_CORE_EVENT_SPACE_ID, CLAP_EVENT_PARAM_VALUE) => { (CLAP_CORE_EVENT_SPACE_ID, CLAP_EVENT_PARAM_VALUE) => {
let event = &*(event as *const clap_event_param_value); let event = &*(event as *const clap_event_param_value);
@ -1296,7 +1298,7 @@ impl<P: ClapPlugin> Wrapper<P> {
input_events.push_back(NoteEvent::NoteOn { input_events.push_back(NoteEvent::NoteOn {
// When splitting up the buffer for sample accurate automation all events // When splitting up the buffer for sample accurate automation all events
// should be relative to the block // should be relative to the block
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {
@ -1314,7 +1316,7 @@ impl<P: ClapPlugin> Wrapper<P> {
if P::MIDI_INPUT >= MidiConfig::Basic { if P::MIDI_INPUT >= MidiConfig::Basic {
let event = &*(event as *const clap_event_note); let event = &*(event as *const clap_event_note);
input_events.push_back(NoteEvent::NoteOff { input_events.push_back(NoteEvent::NoteOff {
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {
@ -1332,7 +1334,7 @@ impl<P: ClapPlugin> Wrapper<P> {
if P::MIDI_INPUT >= MidiConfig::Basic { if P::MIDI_INPUT >= MidiConfig::Basic {
let event = &*(event as *const clap_event_note); let event = &*(event as *const clap_event_note);
input_events.push_back(NoteEvent::Choke { input_events.push_back(NoteEvent::Choke {
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {
@ -1352,7 +1354,7 @@ impl<P: ClapPlugin> Wrapper<P> {
match event.expression_id { match event.expression_id {
CLAP_NOTE_EXPRESSION_PRESSURE => { CLAP_NOTE_EXPRESSION_PRESSURE => {
input_events.push_back(NoteEvent::PolyPressure { input_events.push_back(NoteEvent::PolyPressure {
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {
@ -1365,7 +1367,7 @@ impl<P: ClapPlugin> Wrapper<P> {
} }
CLAP_NOTE_EXPRESSION_VOLUME => { CLAP_NOTE_EXPRESSION_VOLUME => {
input_events.push_back(NoteEvent::PolyVolume { input_events.push_back(NoteEvent::PolyVolume {
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {
@ -1378,7 +1380,7 @@ impl<P: ClapPlugin> Wrapper<P> {
} }
CLAP_NOTE_EXPRESSION_PAN => { CLAP_NOTE_EXPRESSION_PAN => {
input_events.push_back(NoteEvent::PolyPan { input_events.push_back(NoteEvent::PolyPan {
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {
@ -1392,7 +1394,7 @@ impl<P: ClapPlugin> Wrapper<P> {
} }
CLAP_NOTE_EXPRESSION_TUNING => { CLAP_NOTE_EXPRESSION_TUNING => {
input_events.push_back(NoteEvent::PolyTuning { input_events.push_back(NoteEvent::PolyTuning {
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {
@ -1405,7 +1407,7 @@ impl<P: ClapPlugin> Wrapper<P> {
} }
CLAP_NOTE_EXPRESSION_VIBRATO => { CLAP_NOTE_EXPRESSION_VIBRATO => {
input_events.push_back(NoteEvent::PolyVibrato { input_events.push_back(NoteEvent::PolyVibrato {
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {
@ -1418,7 +1420,7 @@ impl<P: ClapPlugin> Wrapper<P> {
} }
CLAP_NOTE_EXPRESSION_EXPRESSION => { CLAP_NOTE_EXPRESSION_EXPRESSION => {
input_events.push_back(NoteEvent::PolyExpression { input_events.push_back(NoteEvent::PolyExpression {
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {
@ -1431,7 +1433,7 @@ impl<P: ClapPlugin> Wrapper<P> {
} }
CLAP_NOTE_EXPRESSION_BRIGHTNESS => { CLAP_NOTE_EXPRESSION_BRIGHTNESS => {
input_events.push_back(NoteEvent::PolyBrightness { input_events.push_back(NoteEvent::PolyBrightness {
timing: raw_event.time - current_sample_idx as u32, timing,
voice_id: if event.note_id != -1 { voice_id: if event.note_id != -1 {
Some(event.note_id) Some(event.note_id)
} else { } else {