1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Added method VSTPluginFormat::getPluginInstanceFromVstEffectInterface() which can be used for devious purposes to retrieve a plugin's AudioPluginInstance object from an AEffect

This commit is contained in:
jules 2016-10-25 16:11:33 +01:00
parent f54b7fb104
commit 23a248fe75
2 changed files with 14 additions and 0 deletions

View file

@ -3037,6 +3037,15 @@ void VSTPluginFormat::setExtraFunctions (AudioPluginInstance* plugin, ExtraFunct
vst->extraFunctions = f;
}
AudioPluginInstance* VSTPluginFormat::getPluginInstanceFromVstEffectInterface (void* aEffect)
{
if (VstEffectInterface* vstAEffect = reinterpret_cast<VstEffectInterface*> (aEffect))
if (VSTPluginInstance* instanceVST = reinterpret_cast<VSTPluginInstance*> (vstAEffect->hostSpace2))
return dynamic_cast<AudioPluginInstance*> (instanceVST);
return nullptr;
}
pointer_sized_int JUCE_CALLTYPE VSTPluginFormat::dispatcher (AudioPluginInstance* plugin, int32 opcode, int32 index, pointer_sized_int value, void* ptr, float opt)
{
if (VSTPluginInstance* vst = dynamic_cast<VSTPluginInstance*> (plugin))

View file

@ -85,6 +85,11 @@ public:
/** This simply calls directly to the VST's AEffect::dispatcher() function. */
static pointer_sized_int JUCE_CALLTYPE dispatcher (AudioPluginInstance*, int32, int32, pointer_sized_int, void*, float);
/** Given a VstEffectInterface* (aka vst::AEffect*), this will return the juce AudioPluginInstance
that is being used to wrap it
*/
static AudioPluginInstance* getPluginInstanceFromVstEffectInterface (void* aEffect);
//==============================================================================
String getName() const override { return "VST"; }
void findAllTypesForFile (OwnedArray<PluginDescription>&, const String& fileOrIdentifier) override;