JUCE-7.0.12-0-g4f43011b96 JUCE-7.0.12-0-g4f43011b96
JUCE — C++ application framework with suport for VST, VST3, LV2 audio plug-ins

« « « Anklang Documentation
Loading...
Searching...
No Matches
juce_ExtensionsVisitor.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#ifndef DOXYGEN
27
28// Forward declarations to avoid leaking implementation details.
29namespace Steinberg::Vst
30{
31 class IComponent;
32} // namespace Steinberg::Vst
33
34#endif
35
36//==============================================================================
37#if TARGET_OS_IPHONE
38struct OpaqueAudioComponentInstance;
39typedef struct OpaqueAudioComponentInstance* AudioComponentInstance;
40#else
41struct ComponentInstanceRecord;
42typedef struct ComponentInstanceRecord* AudioComponentInstance;
43#endif
44
45typedef AudioComponentInstance AudioUnit;
46
47//==============================================================================
48/* If you are including the VST headers inside a namespace this forward
49 declaration may cause a collision with the contents of `aeffect.h`.
50
51 If that is the case you can avoid the collision by placing a `struct AEffect;`
52 forward declaration inside the namespace and before the inclusion of the VST
53 headers, e.g. @code
54
55 namespace Vst2
56 {
57 struct AEffect;
58 #include <pluginterfaces/vst2.x/aeffect.h>
59 #include <pluginterfaces/vst2.x/aeffectx.h>
60 }
61 @endcode
62*/
63struct AEffect;
64
65//==============================================================================
66namespace juce
67{
68
69//==============================================================================
85{
87 struct Unknown {};
88
91 {
92 virtual ~VST3Client() = default;
93 virtual Steinberg::Vst::IComponent* getIComponentPtr() const noexcept = 0;
94
95 virtual MemoryBlock getPreset() const = 0;
96 virtual bool setPreset (const MemoryBlock&) const = 0;
97 };
98
101 {
102 virtual ~AudioUnitClient() = default;
103 virtual AudioUnit getAudioUnitHandle() const noexcept = 0;
104 };
105
108 {
109 virtual ~VSTClient() = default;
110 virtual AEffect* getAEffectPtr() const noexcept = 0;
111 };
112
115 {
116 virtual ~ARAClient() = default;
117 virtual void createARAFactoryAsync (std::function<void (ARAFactoryWrapper)>) const = 0;
118 };
119
120 ExtensionsVisitor() = default;
121
122 ExtensionsVisitor (const ExtensionsVisitor&) = default;
124
125 ExtensionsVisitor& operator= (const ExtensionsVisitor&) = default;
126 ExtensionsVisitor& operator= (ExtensionsVisitor&&) = default;
127
128 virtual ~ExtensionsVisitor() = default;
129
131 virtual void visitUnknown (const Unknown&) {}
132
134 virtual void visitVST3Client (const VST3Client&) {}
135
137 virtual void visitVSTClient (const VSTClient&) {}
138
140 virtual void visitAudioUnitClient (const AudioUnitClient&) {}
141
143 virtual void visitARAClient (const ARAClient&) {}
144};
145
146} // namespace juce
Component base interface: Vst::IComponent.
Encapsulates an ARAFactory pointer and makes sure that it remains in a valid state for the lifetime o...
A class to hold a resizable block of raw data.
All VST specific interfaces are located in Vst namespace.
JUCE Namespace.
Type unalignedPointerCast(void *ptr) noexcept
Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes ar...
Definition juce_Memory.h:88
Can be used to retrieve information about a plugin that provides ARA extensions.
Can be used to retrieve information about an AudioUnit that is wrapped by an AudioProcessor.
Can be used to retrieve information about a VST3 that is wrapped by an AudioProcessor.
Can be used to retrieve information about a VST that is wrapped by an AudioProcessor.
Create a derived implementation of this class and pass it to AudioPluginInstance::getExtensions() to ...
virtual void visitVST3Client(const VST3Client &)
Called with VST3-specific information.
virtual void visitVSTClient(const VSTClient &)
Called with VST-specific information.
virtual void visitAudioUnitClient(const AudioUnitClient &)
Called with AU-specific information.
virtual void visitUnknown(const Unknown &)
Will be called if there is no platform specific information available.
virtual void visitARAClient(const ARAClient &)
Called with ARA-specific information.
Indicates that there is no platform specific information available.