13
0

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.
This commit is contained in:
Robin Gareus 2018-11-01 15:27:08 +01:00
parent d9fcab88f0
commit 694c5fcfa6

View File

@ -530,17 +530,13 @@ bool vstfx_midi_input (VSTState* vstfx)
{ {
AEffect* plugin = vstfx->plugin; 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) { if ((plugin->flags & effFlagsIsSynth)
/* should we send it VST events (i.e. MIDI) */ || (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)
if ((plugin->flags & effFlagsIsSynth) ) {
|| (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast<char*> ("receiveVstEvents"), 0.0f) > 0) return true;
|| (plugin->dispatcher (plugin, effCanDo, 0, 0, const_cast<char*> ("receiveVstMidiEvents"), 0.0f) > 0)
) {
return true;
}
} }
return false; return false;