Skip VST version check to detect MIDI inputs
authorRobin Gareus <robin@gareus.org>
Thu, 1 Nov 2018 14:27:08 +0000 (15:27 +0100)
committerRobin Gareus <robin@gareus.org>
Thu, 1 Nov 2018 14:27:08 +0000 (15:27 +0100)
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

index f9b731e240ff68ce774a9f610dc7ddec0cadedf8..a978f4e7d33435fc96cd5708fda2b63986f30180 100644 (file)
@@ -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);
-
-       if (vst_version >= 2) {
-               /* should we send it VST events (i.e. MIDI) */
+       /* should we send it VST events (i.e. MIDI) */
 
-               if ((plugin->flags & effFlagsIsSynth)
-                               || (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast<char*> ("receiveVstEvents"), 0.0f) > 0)
-                               || (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast<char*> ("receiveVstMidiEvents"), 0.0f) > 0)
-                               ) {
-                       return true;
-               }
+       if ((plugin->flags & effFlagsIsSynth)
+                       || (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast<char*> ("receiveVstEvents"), 0.0f) > 0)
+                       || (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast<char*> ("receiveVstMidiEvents"), 0.0f) > 0)
+                ) {
+               return true;
        }
 
        return false;