Implements a plugin format manager for VSTs. More...
#include <juce_VSTPluginFormat.h>
Classes | |
class | ExtraFunctions |
Base class for some extra functions that can be attached to a VST plugin instance. More... | |
Public Types | |
using | PluginCreationCallback = std::function< void(std::unique_ptr< AudioPluginInstance >, const String &)> |
A callback lambda that is passed to createPluginInstanceAsync() More... | |
Public Member Functions | |
VSTPluginFormat () | |
~VSTPluginFormat () override | |
virtual void | aboutToScanVSTShellPlugin (const PluginDescription &) |
Can be overridden to receive a callback when each member of a shell plugin is about to be tested during a call to findAllTypesForFile(). More... | |
bool | canScanForPlugins () const override |
Returns true if this format needs to run a scan to find its list of plugins. More... | |
std::unique_ptr< AudioPluginInstance > | createInstanceFromDescription (const PluginDescription &, double initialSampleRate, int initialBufferSize) |
Tries to recreate a type from a previously generated PluginDescription. More... | |
std::unique_ptr< AudioPluginInstance > | createInstanceFromDescription (const PluginDescription &, double initialSampleRate, int initialBufferSize, String &errorMessage) |
Same as above but with the possibility of returning an error message. More... | |
void | createPluginInstanceAsync (const PluginDescription &description, double initialSampleRate, int initialBufferSize, PluginCreationCallback) |
Tries to recreate a type from a previously generated PluginDescription. More... | |
bool | doesPluginStillExist (const PluginDescription &) override |
Checks whether this plugin could possibly be loaded. More... | |
bool | fileMightContainThisPluginType (const String &fileOrIdentifier) override |
Should do a quick check to see if this file or directory might be a plugin of this format. More... | |
void | findAllTypesForFile (OwnedArray< PluginDescription > &, const String &fileOrIdentifier) override |
This tries to create descriptions for all the plugin types available in a binary module file. More... | |
FileSearchPath | getDefaultLocationsToSearch () override |
Returns the typical places to look for this kind of plugin. More... | |
String | getName () const override |
Returns the format name. More... | |
String | getNameOfPluginFromIdentifier (const String &fileOrIdentifier) override |
Returns a readable version of the name of the plugin that this identifier refers to. More... | |
bool | isTrivialToScan () const override |
Should return true if this format is both safe and quick to scan - i.e. More... | |
bool | pluginNeedsRescanning (const PluginDescription &) override |
Returns true if this plugin's version or date has changed and it should be re-checked. More... | |
StringArray | searchPathsForPlugins (const FileSearchPath &, bool recursive, bool) override |
Searches a suggested set of directories for any plugins in this format. More... | |
Static Public Member Functions | |
static AudioPluginInstance * | createCustomVSTFromMainCall (void *entryPointFunction, double initialSampleRate, int initialBufferSize) |
Given a suitable function pointer to a VSTPluginMain function, this will attempt to instantiate and return a plugin for it. More... | |
static pointer_sized_int | dispatcher (AudioPluginInstance *, int32, int32, pointer_sized_int, void *, float) |
This simply calls directly to the VST's AEffect::dispatcher() function. More... | |
static bool | getChunkData (AudioPluginInstance *plugin, MemoryBlock &result, bool isPreset) |
Attempts to get a VST's state as a chunk of memory. More... | |
static String | getFormatName () |
static AudioPluginInstance * | getPluginInstanceFromVstEffectInterface (void *aEffect) |
Given a VstEffectInterface* (aka vst::AEffect*), this will return the juce AudioPluginInstance that is being used to wrap it. More... | |
static const XmlElement * | getVSTXML (AudioPluginInstance *plugin) |
Attempts to retrieve the VSTXML data from a plugin. More... | |
static bool | loadFromFXBFile (AudioPluginInstance *plugin, const void *data, size_t dataSize) |
Attempts to reload a VST plugin's state from some FXB or FXP data. More... | |
static bool | saveToFXBFile (AudioPluginInstance *plugin, MemoryBlock &result, bool asFXB) |
Attempts to save a VST's state to some FXP or FXB data. More... | |
static bool | setChunkData (AudioPluginInstance *plugin, const void *data, int size, bool isPreset) |
Attempts to set a VST's state from a chunk of memory. More... | |
static void | setExtraFunctions (AudioPluginInstance *plugin, ExtraFunctions *functions) |
Provides an ExtraFunctions callback object for a plugin to use. More... | |
Private Member Functions | |
void | createPluginInstance (const PluginDescription &, double initialSampleRate, int initialBufferSize, PluginCreationCallback) override |
Implementors must override this function. More... | |
void | handleMessage (const Message &) override |
This is the callback method that receives incoming messages. More... | |
void | postMessage (Message *message) const |
Sends a message to the message queue, for asynchronous delivery to this listener later on. More... | |
void | recursiveFileSearch (StringArray &, const File &, bool recursive) |
bool | requiresUnblockedMessageThreadDuringCreation (const PluginDescription &) const override |
Returns true if instantiation of this plugin type must be done from a non-message thread. More... | |
Private Attributes | |
WeakReference< MessageListener >::Master | masterReference |
Implements a plugin format manager for VSTs.
@tags{Audio}
|
inherited |
A callback lambda that is passed to createPluginInstanceAsync()
juce::VSTPluginFormat::VSTPluginFormat | ( | ) |
|
override |
|
virtual |
Can be overridden to receive a callback when each member of a shell plugin is about to be tested during a call to findAllTypesForFile().
Only the name and uid members of the PluginDescription are guaranteed to be valid when this is called.
|
inlineoverridevirtual |
Returns true if this format needs to run a scan to find its list of plugins.
Implements juce::AudioPluginFormat.
|
static |
Given a suitable function pointer to a VSTPluginMain function, this will attempt to instantiate and return a plugin for it.
|
inherited |
Tries to recreate a type from a previously generated PluginDescription.
|
inherited |
Same as above but with the possibility of returning an error message.
|
overrideprivatevirtual |
Implementors must override this function.
This is guaranteed to be called on the message thread. You may call the callback on any thread.
Implements juce::AudioPluginFormat.
|
inherited |
Tries to recreate a type from a previously generated PluginDescription.
When the plugin has been created, it will be passed to the caller via an asynchronous call to the PluginCreationCallback lambda that was provided.
|
static |
This simply calls directly to the VST's AEffect::dispatcher() function.
|
overridevirtual |
Checks whether this plugin could possibly be loaded.
It doesn't actually need to load it, just to check whether the file or component still exists.
Implements juce::AudioPluginFormat.
|
overridevirtual |
Should do a quick check to see if this file or directory might be a plugin of this format.
This is for searching for potential files, so it shouldn't actually try to load the plugin or do anything time-consuming.
Implements juce::AudioPluginFormat.
|
overridevirtual |
This tries to create descriptions for all the plugin types available in a binary module file.
The file will be some kind of DLL or bundle.
Normally there will only be one type returned, but some plugins (e.g. VST shells) can use a single DLL to create a set of different plugin subtypes, so in that case, each subtype is returned as a separate object.
Implements juce::AudioPluginFormat.
|
static |
Attempts to get a VST's state as a chunk of memory.
|
overridevirtual |
Returns the typical places to look for this kind of plugin.
Note that if this returns no paths, it means that the format doesn't search in files or folders, e.g. AudioUnits.
Implements juce::AudioPluginFormat.
|
inlinestatic |
|
inlineoverridevirtual |
|
overridevirtual |
Returns a readable version of the name of the plugin that this identifier refers to.
Implements juce::AudioPluginFormat.
|
static |
Given a VstEffectInterface* (aka vst::AEffect*), this will return the juce AudioPluginInstance that is being used to wrap it.
|
static |
Attempts to retrieve the VSTXML data from a plugin.
Will return nullptr if the plugin isn't a VST, or if it doesn't have any VSTXML.
|
overrideprivatevirtualinherited |
This is the callback method that receives incoming messages.
This is called by the MessageManager from its dispatch loop.
Implements juce::MessageListener.
|
inlineoverridevirtual |
Should return true if this format is both safe and quick to scan - i.e.
if a file can be scanned within a few milliseconds on a background thread, without actually needing to load an executable.
Implements juce::AudioPluginFormat.
|
static |
Attempts to reload a VST plugin's state from some FXB or FXP data.
|
overridevirtual |
Returns true if this plugin's version or date has changed and it should be re-checked.
Implements juce::AudioPluginFormat.
|
inherited |
Sends a message to the message queue, for asynchronous delivery to this listener later on.
This method can be called safely by any thread.
message | the message object to send - this will be deleted automatically by the message queue, so make sure it's allocated on the heap, not the stack! |
|
private |
|
overrideprivatevirtual |
Returns true if instantiation of this plugin type must be done from a non-message thread.
Implements juce::AudioPluginFormat.
|
static |
Attempts to save a VST's state to some FXP or FXB data.
|
overridevirtual |
Searches a suggested set of directories for any plugins in this format.
The path might be ignored, e.g. by AUs, which are found by the OS rather than manually.
directoriesToSearch | This specifies which directories shall be searched for plug-ins. |
recursive | Should the search recursively traverse folders. |
allowPluginsWhichRequireAsynchronousInstantiation | If this is false then plug-ins which require asynchronous creation will be excluded. |
Implements juce::AudioPluginFormat.
|
static |
Attempts to set a VST's state from a chunk of memory.
|
static |
Provides an ExtraFunctions callback object for a plugin to use.
The plugin will take ownership of the object and will delete it automatically.
|
privateinherited |