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" 41 struct 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);
59 void BeginInformHostOfParamChange(
int idx)
override;
60 void InformHostOfParamChange(
int idx,
double normalizedValue)
override;
61 void EndInformHostOfParamChange(
int idx)
override;
63 void InformHostOfParameterDetailsChange()
override;
64 bool EditorResize(
int viewWidth,
int viewHeight)
override;
67 void DirtyParametersFromUI()
override;
68 void SendParameterValueFromUI(
int paramIdx,
double normalisedValue)
override;
71 void SetLatency(
int samples)
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 {
return GetTailSize(); }
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 virtual void GetTrackColor(
int& r,
int& g,
int& b)
override { r = (mChannelColor>>16)&0xff; g = (mChannelColor>>8)&0xff; b = mChannelColor&0xff; };
121 virtual void GetTrackName(WDL_String& str)
override { str = mChannelName; };
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)
173 IPlugVST3* MakePlug(
const InstanceInfo& info);
The base class for IPlug Audio Processing.
The base class of an IPlug plug-in, which interacts with the different plug-in APIs.
virtual void GetTrackName(WDL_String &str) override
Get the name of the track that the plug-in is inserted on.
Shared VST3 controller code.
virtual void GetTrackColor(int &r, int &g, int &b) override
Get the color of the track that the plug-in is inserted on.
virtual int GetTrackIndex() override
Get the index of the track that the plug-in is inserted on.
VST3 base class for a non-distributed IPlug VST3 plug-in.
void InformHostOfPresetChange() override
Implemented by the API class, called by the UI (etc) when the plug-in initiates a program/preset chan...
virtual int GetTrackNamespaceIndex() override
Get the namespace index of the track that the plug-in is inserted on.
Shared VST3 processor code.
The base class of an IPlug plug-in, which interacts with the different plug-in APIs.
virtual void GetTrackNamespace(WDL_String &str) override
Get the namespace of the track that the plug-in is inserted on.