25#include "public.sdk/source/vst/vstsinglecomponenteffect.h"
26#include "pluginterfaces/vst/ivstprocesscontext.h"
27#include "pluginterfaces/vst/vsttypes.h"
28#include "pluginterfaces/vst/ivstcontextmenu.h"
29#include "pluginterfaces/vst/ivstchannelcontextinfo.h"
34#include "IPlugVST3_Common.h"
35#include "IPlugVST3_ProcessorBase.h"
36#include "IPlugVST3_View.h"
41struct InstanceInfo {};
48 ,
public Steinberg::Vst::SingleComponentEffect
49 ,
public Steinberg::Vst::IMidiMapping
50 ,
public Steinberg::Vst::ChannelContext::IInfoListener
53 using ViewType = IPlugVST3View<IPlugVST3>;
55 IPlugVST3(
const InstanceInfo& info,
const Config& config);
64 bool EditorResize(
int viewWidth,
int viewHeight)
override;
68 void SendParameterValueFromUI(
int paramIdx,
double normalisedValue)
override;
74 Steinberg::tresult PLUGIN_API initialize(FUnknown* context)
override;
75 Steinberg::tresult PLUGIN_API terminate()
override;
76 Steinberg::tresult PLUGIN_API setBusArrangements(Steinberg::Vst::SpeakerArrangement* pInputs, Steinberg::int32 numIns, Steinberg::Vst::SpeakerArrangement* pOutputs, Steinberg::int32 numOuts)
override;
77 Steinberg::tresult PLUGIN_API setActive(Steinberg::TBool state)
override;
78 Steinberg::tresult PLUGIN_API setupProcessing(Steinberg::Vst::ProcessSetup& newSetup)
override;
79 Steinberg::tresult PLUGIN_API setProcessing (Steinberg::TBool state)
override;
80 Steinberg::tresult PLUGIN_API process(Steinberg::Vst::ProcessData& data)
override;
81 Steinberg::tresult PLUGIN_API canProcessSampleSize(Steinberg::int32 symbolicSampleSize)
override;
82 Steinberg::uint32 PLUGIN_API getLatencySamples()
override {
return GetLatency(); }
83 Steinberg::uint32 PLUGIN_API getTailSamples()
override;
84 Steinberg::tresult PLUGIN_API setState(Steinberg::IBStream* pState)
override;
85 Steinberg::tresult PLUGIN_API getState(Steinberg::IBStream* pState)
override;
88 Steinberg::Vst::ParamValue PLUGIN_API getParamNormalized(Steinberg::Vst::ParamID tag)
override;
89 Steinberg::tresult PLUGIN_API setParamNormalized(Steinberg::Vst::ParamID tag, Steinberg::Vst::ParamValue value)
override;
90 Steinberg::IPlugView* PLUGIN_API createView(
const char* name)
override;
91 Steinberg::tresult PLUGIN_API setEditorState(Steinberg::IBStream* pState)
override;
92 Steinberg::tresult PLUGIN_API getEditorState(Steinberg::IBStream* pState)
override;
93 Steinberg::tresult PLUGIN_API setComponentState(Steinberg::IBStream *state)
override;
96 Steinberg::tresult PLUGIN_API getMidiControllerAssignment(Steinberg::int32 busIndex, Steinberg::int16 channel, Steinberg::Vst::CtrlNumber midiCCNumber, Steinberg::Vst::ParamID& tag)
override;
99 Steinberg::tresult PLUGIN_API getProgramName(Steinberg::Vst::ProgramListID listId, Steinberg::int32 programIndex, Steinberg::Vst::String128 name )
override
101 return GetProgramName(
this, listId, programIndex, name);
104 Steinberg::int32 PLUGIN_API getProgramListCount()
override
106 return GetProgramListCount(
this);
109 Steinberg::tresult PLUGIN_API getProgramListInfo(Steinberg::int32 listIndex, Steinberg::Vst::ProgramListInfo& info)
override
111 return GetProgramListInfo(
this, listIndex, info);
115 Steinberg::tresult PLUGIN_API setChannelContextInfos(Steinberg::Vst::IAttributeList* list)
override;
118 void GetTrackColor(
int& r,
int& g,
int& b)
override { r = (mChannelColor>>16)&0xff; g = (mChannelColor>>8)&0xff; b = mChannelColor&0xff; };
132 Steinberg::Vst::IComponentHandler* GetComponentHandler() {
return componentHandler; }
133 ViewType* GetView() {
return mView; }
135 Steinberg::Vst::AudioBus* getAudioInput(Steinberg::int32 index)
137 Steinberg::Vst::AudioBus* bus =
nullptr;
138 if (index <
static_cast<Steinberg::int32
> (audioInputs.size ()))
139 bus = Steinberg::FCast<Steinberg::Vst::AudioBus> (audioInputs.at (index));
143 Steinberg::Vst::AudioBus* getAudioOutput(Steinberg::int32 index)
145 Steinberg::Vst::AudioBus* bus =
nullptr;
146 if (index <
static_cast<Steinberg::int32
> (audioOutputs.size ()))
147 bus = Steinberg::FCast<Steinberg::Vst::AudioBus> (audioOutputs.at (index));
151 void removeAudioInputBus(Steinberg::Vst::AudioBus* pBus)
153 audioInputs.erase(std::remove(audioInputs.begin(), audioInputs.end(), pBus));
156 void removeAudioOutputBus(Steinberg::Vst::AudioBus* pBus)
158 audioOutputs.erase(std::remove(audioOutputs.begin(), audioOutputs.end(), pBus));
162 OBJ_METHODS(
IPlugVST3, SingleComponentEffect)
164 DEF_INTERFACE(IMidiMapping)
165 DEF_INTERFACE(IInfoListener)
166 END_DEFINE_INTERFACES(SingleComponentEffect)
167 REFCOUNT_METHODS(SingleComponentEffect)
173IPlugVST3* MakePlug(
const InstanceInfo& info);
The base class of an IPlug plug-in, which interacts with the different plug-in APIs.
Shared VST3 controller code.
VST3 base class for a non-distributed IPlug VST3 plug-in.
void InformHostOfParameterDetailsChange() override
Implemented by the API class, call this if you update parameter labels and hopefully the host should ...
int GetTrackIndex() override
Get the index of the track that the plug-in is inserted on.
void SetLatency(int samples) override
Call this if the latency of your plug-in changes after initialization (perhaps from OnReset() ) This ...
void GetTrackColor(int &r, int &g, int &b) override
Get the color of the track that the plug-in is inserted on.
void BeginInformHostOfParamChange(int idx) override
Implemented by the API class, called by the UI (or by a delegate) at the beginning of a parameter cha...
void InformHostOfParamChange(int idx, double normalizedValue) override
Implemented by the API class, called by the UI via SetParameterValue() with the value of a parameter ...
void InformHostOfPresetChange() override
Implemented by the API class, called by the UI (etc) when the plug-in initiates a program/preset chan...
void EndInformHostOfParamChange(int idx) override
Implemented by the API class, called by the UI (or by a delegate) at the end of a parameter change ge...
int GetTrackNamespaceIndex() override
Get the namespace index of the track that the plug-in is inserted on.
bool EditorResize(int viewWidth, int viewHeight) override
Implementations call into the APIs resize hooks returns a bool to indicate whether the DAW or plugin ...
void DirtyParametersFromUI() override
In a distributed VST3 or WAM plugin, if you modify the parameters on the UI side (e....
void GetTrackNamespace(WDL_String &str) override
Get the namespace of the track that the plug-in is inserted on.
void GetTrackName(WDL_String &str) override
Get the name of the track that the plug-in is inserted on.
Shared VST3 processor code.