From e1ef129ab0605cb24b32c5c6be02699c36da2929 Mon Sep 17 00:00:00 2001 From: "Attila M. Magyar" Date: Sun, 30 Jun 2024 13:29:58 +0200 Subject: [PATCH] VST2: store VstMidiEvents with the correct size ...otherwise MidiBuffer::push_back() will drop them. (E.g. MIDI_CMD_CHANNEL_PRESSURE events are just 2 bytes, not 3.) --- libs/ardour/session_vst.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libs/ardour/session_vst.cc b/libs/ardour/session_vst.cc index d82ebf9003..b44c4a5ad6 100644 --- a/libs/ardour/session_vst.cc +++ b/libs/ardour/session_vst.cc @@ -27,6 +27,8 @@ #endif #include +#include "evoral/midi_util.h" + #include "ardour/audioengine.h" #include "ardour/debug.h" #include "ardour/session.h" @@ -301,7 +303,12 @@ intptr_t Session::vst_callback ( for (int n = 0 ; n < v->numEvents; ++n) { VstMidiEvent *vme = (VstMidiEvent*) (v->events[n]->dump); if (vme->type == kVstMidiType) { - plug->midi_buffer()->push_back(vme->deltaSamples, Evoral::MIDI_EVENT, 3, (uint8_t*)vme->midiData); + plug->midi_buffer()->push_back( + vme->deltaSamples, + Evoral::MIDI_EVENT, + Evoral::midi_event_size((uint8_t)vme->midiData[0]), + (uint8_t*)vme->midiData + ); } } }