From 694c5fcfa66b6c78bfc46ff9ac8b634b8ffdc05f Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 1 Nov 2018 15:27:08 +0100 Subject: [PATCH] Skip VST version check to detect MIDI inputs Some plugins return 0 from effGetVstVersion and are hence not detected as instruments. e.g. VeeSeeVSTRack (VCV). This may also explain why MIDI port of some other VSTs are not exposed. Most VST2.4 return 2400, so checking [effGetVstVersion] >=2 (and not 2000) was incorrect to begin with. --- libs/ardour/vst_info_file.cc | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/libs/ardour/vst_info_file.cc b/libs/ardour/vst_info_file.cc index f9b731e240..a978f4e7d3 100644 --- a/libs/ardour/vst_info_file.cc +++ b/libs/ardour/vst_info_file.cc @@ -530,17 +530,13 @@ bool vstfx_midi_input (VSTState* vstfx) { AEffect* plugin = vstfx->plugin; - int const vst_version = plugin->dispatcher (plugin, effGetVstVersion, 0, 0, 0, 0.0f); + /* should we send it VST events (i.e. MIDI) */ - if (vst_version >= 2) { - /* should we send it VST events (i.e. MIDI) */ - - if ((plugin->flags & effFlagsIsSynth) - || (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast ("receiveVstEvents"), 0.0f) > 0) - || (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast ("receiveVstMidiEvents"), 0.0f) > 0) - ) { - return true; - } + if ((plugin->flags & effFlagsIsSynth) + || (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast ("receiveVstEvents"), 0.0f) > 0) + || (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast ("receiveVstMidiEvents"), 0.0f) > 0) + ) { + return true; } return false;