26 #include "IPlugStructs.h" 28 #include "NChanDelay.h" 52 #pragma mark - Methods you implement in your plug-in class - you do not call these methods 62 virtual void ProcessBlock(sample** inputs, sample** outputs,
int nFrames);
83 #pragma mark - Methods you can call - some of which have custom implementations in the API classes, some implemented in IPlugProcessor.cpp 139 virtual void GetBusName(
ERoute direction,
int busIdx,
int nBuses, WDL_String& str)
const;
154 int MaxNBuses(
ERoute direction,
int* pConfigIdxWithTheMostBuses =
nullptr)
const;
174 bool IsChannelConnected(
ERoute direction,
int chIdx)
const {
return (chIdx < mChannelData[direction].GetSize() && mChannelData[direction].Get(chIdx)->mConnected); }
192 bool LegalIO(
int NInputChans,
int NOutputChans)
const;
201 bool IsInstrument()
const {
return mPlugType == EIPlugPluginType::kInstrument; }
204 bool IsMidiEffect()
const {
return mPlugType == EIPlugPluginType::kMIDIEffect; }
248 static int ParseChannelIOStr(
const char* IOStr, WDL_PtrList<IOConfig>& channelIOList,
int& totalNInChans,
int& totalNOutChans,
int& totalNInBuses,
int& totalNOutBuses);
251 #pragma mark - Methods called by the API class - you do not call these methods in your plug-in class 252 void SetChannelConnections(
ERoute direction,
int idx,
int n,
bool connected);
256 void AttachBuffers(
ERoute direction,
int idx,
int n, PLUG_SAMPLE_DST** ppData,
int nFrames);
257 void AttachBuffers(
ERoute direction,
int idx,
int n, PLUG_SAMPLE_SRC** ppData,
int nFrames);
258 void PassThroughBuffers(PLUG_SAMPLE_SRC type,
int nFrames);
259 void PassThroughBuffers(PLUG_SAMPLE_DST type,
int nFrames);
260 void ProcessBuffers(PLUG_SAMPLE_SRC type,
int nFrames);
261 void ProcessBuffers(PLUG_SAMPLE_DST type,
int nFrames);
262 void ProcessBuffersAccumulating(
int nFrames);
263 void ZeroScratchBuffers();
264 void SetSampleRate(
double sampleRate) { mSampleRate = sampleRate; }
265 void SetBlockSize(
int blockSize);
266 void SetBypassed(
bool bypassed) { mBypassed = bypassed; }
268 void SetRenderingOffline(
bool renderingOffline) { mRenderingOffline = renderingOffline; }
269 const WDL_String& GetChannelLabel(
ERoute direction,
int idx) {
return mChannelData[direction].Get(idx)->mLabel; }
273 EIPlugPluginType mPlugType;
283 double mSampleRate = DEFAULT_SAMPLE_RATE;
289 bool mBypassed =
false;
291 bool mRenderingOffline =
false;
293 WDL_PtrList<IOConfig> mIOConfigs;
295 WDL_TypedBuf<sample*> mScratchData[2];
297 WDL_PtrList<IChannelData<>> mChannelData[2];
int MaxNChannels(ERoute direction) const
IPlugProcessor(const Config &config, EAPI plugAPI)
IPlugProcessor constructor.
Utility functions and macros.
void GetTimeSig(int &numerator, int &denominator) const
static int ParseChannelIOStr(const char *IOStr, WDL_PtrList< IOConfig > &channelIOList, int &totalNInChans, int &totalNOutChans, int &totalNInBuses, int &totalNOutBuses)
A static method to parse the config.h channel I/O string.
double GetSampleRate() const
Encapsulates a MIDI message and provides helper functions.
virtual void SetLatency(int latency)
Call this if the latency of your plug-in changes after initialization (perhaps from OnReset() ) This ...
An IOConfig is used to store bus info for each input/output configuration defined in the channel io s...
bool IsInstrument() const
double GetSamplesPerBeat() const
virtual void GetBusName(ERoute direction, int busIdx, int nBuses, WDL_String &str) const
Get the name for a particular bus.
void SetChannelLabel(ERoute direction, int idx, const char *formatStr, bool zeroBased=false)
This allows you to label input/output channels in supporting VST2 hosts.
virtual bool SendMidiMsg(const IMidiMsg &msg)=0
Send a single MIDI message // TODO: info about what thread should this be called on or not called on!...
IPlug Constant definitions, Types, magic numbers.
void SetTailSize(int tailSize)
Call this method if you need to update the tail size at runtime, for example if the decay time of you...
ERoute
Used to identify whether a bus/channel connection is an input or an output.
virtual void ProcessBlock(sample **inputs, sample **outputs, int nFrames)
Override in your plug-in class to process audio In ProcessBlock you are always guaranteed to get vali...
bool HasWildcardBus(ERoute direction) const
Check if we have any wildcard characters in the channel I/O configs.
const IOConfig * GetIOConfig(int idx) const
int MaxNBuses(ERoute direction, int *pConfigIdxWithTheMostBuses=nullptr) const
Used to determine the maximum number of input or output buses based on what was specified in the chan...
bool IsChannelConnected(ERoute direction, int chIdx) const
virtual void ProcessSysEx(ISysEx &msg)
Override this method to handle incoming MIDI System Exclusive (SysEx) messages.
bool HasSidechainInput() const
virtual void ProcessMidiMsg(const IMidiMsg &msg)
Override this method to handle incoming MIDI messages.
The base class for IPlug Audio Processing.
virtual bool SendSysEx(const ISysEx &msg)
Send a single MIDI System Exclusive (SysEx) message // TODO: info about what thread should this be ca...
bool LegalIO(int NInputChans, int NOutputChans) const
Check if a certain configuration of input channels and output channels is allowed based on the channe...
ITimeInfo mTimeInfo
Contains detailed information about the transport state.
virtual void OnReset()
Override this method in your plug-in class to do something prior to playback etc. ...
bool IsMidiEffect() const
int GetIOConfigWithChanCounts(std::vector< int > &inputBuses, std::vector< int > &outputBuses)
int NInChansConnected() const
Convenience method to find out how many input channels are connected.
std::unique_ptr< NChanDelayLine< sample > > mLatencyDelay
A multi-channel delay line used to delay the bypassed signal when a plug-in with latency is bypassed...
A struct for dealing with SysEx messages.
double GetSamplePos() const
void LimitToStereoIO()
This is called by IPlugVST in order to limit a plug-in to stereo I/O for certain picky hosts...
int GetAUPluginType() const
virtual bool SendMidiMsgs(WDL_TypedBuf< IMidiMsg > &msgs)
Send a collection of MIDI messages // TODO: info about what thread should this be called on or not ca...
int NOutChansConnected() const
Convenience method to find out how many output channels are connected.
Encapsulates information about the host transport state.
int MaxNChannelsForBus(ERoute direction, int busIdx) const
For a given input or output bus what is the maximum possible number of channels.
bool GetRenderingOffline() const
virtual void OnActivate(bool active)
Override OnActivate() which should be called by the API class when a plug-in is "switched on" by the ...
int NChannelsConnected(ERoute direction) const