LMMS
Loading...
Searching...
No Matches
juce_VSTPluginFormat.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26#if (JUCE_PLUGINHOST_VST || DOXYGEN)
27
28namespace juce
29{
30
31//==============================================================================
37class JUCE_API VSTPluginFormat : public AudioPluginFormat
38{
39public:
40 //==============================================================================
41 VSTPluginFormat();
42 ~VSTPluginFormat() override;
43
44 //==============================================================================
48 static const XmlElement* getVSTXML (AudioPluginInstance* plugin);
49
51 static bool loadFromFXBFile (AudioPluginInstance* plugin, const void* data, size_t dataSize);
52
54 static bool saveToFXBFile (AudioPluginInstance* plugin, MemoryBlock& result, bool asFXB);
55
57 static bool getChunkData (AudioPluginInstance* plugin, MemoryBlock& result, bool isPreset);
58
60 static bool setChunkData (AudioPluginInstance* plugin, const void* data, int size, bool isPreset);
61
65 static AudioPluginInstance* createCustomVSTFromMainCall (void* entryPointFunction,
66 double initialSampleRate,
67 int initialBufferSize);
68
69 //==============================================================================
71 class ExtraFunctions
72 {
73 public:
74 virtual ~ExtraFunctions() {}
75
77 virtual int64 getTempoAt (int64 samplePos) = 0;
78
82 virtual int getAutomationState() = 0;
83 };
84
88 static void setExtraFunctions (AudioPluginInstance* plugin, ExtraFunctions* functions);
89
90 //==============================================================================
92 static pointer_sized_int JUCE_CALLTYPE dispatcher (AudioPluginInstance*, int32, int32, pointer_sized_int, void*, float);
93
97 static AudioPluginInstance* getPluginInstanceFromVstEffectInterface (void* aEffect);
98
99 //==============================================================================
100 static String getFormatName() { return "VST"; }
101 String getName() const override { return getFormatName(); }
102 bool canScanForPlugins() const override { return true; }
103 bool isTrivialToScan() const override { return false; }
104
105 void findAllTypesForFile (OwnedArray<PluginDescription>&, const String& fileOrIdentifier) override;
106 bool fileMightContainThisPluginType (const String& fileOrIdentifier) override;
107 String getNameOfPluginFromIdentifier (const String& fileOrIdentifier) override;
108 bool pluginNeedsRescanning (const PluginDescription&) override;
109 StringArray searchPathsForPlugins (const FileSearchPath&, bool recursive, bool) override;
110 bool doesPluginStillExist (const PluginDescription&) override;
111 FileSearchPath getDefaultLocationsToSearch() override;
112
118 virtual void aboutToScanVSTShellPlugin (const PluginDescription&);
119
120private:
121 //==============================================================================
122 void createPluginInstance (const PluginDescription&, double initialSampleRate,
123 int initialBufferSize, PluginCreationCallback) override;
124 bool requiresUnblockedMessageThreadDuringCreation (const PluginDescription&) const override;
125 void recursiveFileSearch (StringArray&, const File&, bool recursive);
126
128};
129
130} // namespace juce
131
132#endif
int64_t int64
Definition basics.h:91
int32_t int32
Definition basics.h:89
static intptr_t dispatcher(NativeHostHandle h, NativeHostDispatcherOpcode c, int32_t i, intptr_t v, void *p, float o)
Definition carla-host-plugin.c:48
JSAMPIMAGE data
Definition jpeglib.h:945
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_CALLTYPE
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
int pointer_sized_int
Definition juce_MathsFunctions.h:80
ulg size
Definition extract.c:2350
int result
Definition process.c:1455