Processing mode informs the Plug-in about the context and at which frequency the process call is called. VST3 defines 3 modes: - kRealtime: each process call is called at a realtime frequency (defined by [numSamples of ProcessData] / samplerate). The Plug-in should always try to process as fast as possible in order to let enough time slice to other Plug-ins. - kPrefetch: each process call could be called at a variable frequency (jitter, slower / faster than realtime), the Plug-in should process at the same quality level than realtime, Plug-in must not slow down to realtime (e.g. disk streaming)! The host should avoid to process in kPrefetch mode such sampler based Plug-in. - kOffline: each process call could be faster than realtime or slower, higher quality than realtime could be used. Plug-ins using disk streaming should be sure that they have enough time in the process call for streaming, if needed by slowing down to realtime or slower. . Note about Process Modes switching: -Switching between kRealtime and kPrefetch process modes are done in realtime thread without need of calling IAudioProcessor::setupProcessing, the Plug-in should check in process call the member processMode of ProcessData in order to know in which mode it is processed. -Switching between kRealtime (or kPrefetch) and kOffline requires that the host calls IAudioProcessor::setupProcessing in order to inform the Plug-in about this mode change.
Audio Processing Interface. This interface must always be supported by audio processing Plug-ins.
List of events to process. \ingroup vstIHost vst300 - [host imp] - [released: 3.0.0]
Basic Host Callback Interface. \ingroup vstIHost vst300 - [host imp] - [passed as 'context' in to IPluginBase::initialize () ] - [released: 3.0.0]
Queue of changes for a specific parameter. \ingroup vstIHost vst300 - [host imp] - [released: 3.0.0]
All parameter changes of a processing block. \ingroup vstIHost vst300 - [host imp] - [released: 3.0.0]
Processing buffers of an audio bus. This structure contains the processing buffer for each channel of an audio bus. - The number of channels (numChannels) must always match the current bus arrangement. It could be set to value '0' when the host wants to flush the parameters (when the Plug-in is not processed). - The size of the channel buffer array must always match the number of channels. So the host must always supply an array for the channel buffers, regardless if the bus is active or not. However, if an audio bus is currently inactive, the actual sample buffer addresses are safe to be null. - The silence flag is set when every sample of the according buffer has the value '0'. It is intended to be used as help for optimizations allowing a Plug-in to reduce processing activities. But even if this flag is set for a channel, the channel buffers must still point to valid memory! This flag is optional. A host is free to support it or not. . \see ProcessData
Description of a chord. A chord is described with a key note, a root note and the \copydoc chordMask \see ProcessContext
Chord event specific data. Used in \ref Event (union)
Data event specific data. Used in \ref Event (union)
Event
Event
Legacy MIDI CC Out event specific data. Used in \ref Event (union)
Note-off event specific data. Used in \ref Event (union)
Note-on event specific data. Used in \ref Event (union)
PolyPressure event specific data. Used in \ref Event (union)
Audio processing context. For each processing block the host provides timing information and musical parameters that can change over time. For a host that supports jumps (like cycle) it is possible to split up a processing block into multiple parts in order to provide a correct project time inside of every block, but this behaviour is not mandatory. Since the timing will be correct at the beginning of the next block again, a host that is dependent on a fixed processing block size can choose to neglect this problem. \see IAudioProcessor, ProcessData
Any data needed in audio processing. The host prepares AudioBusBuffers for each input/output bus, regardless of the bus activation state. Bus buffer indices always match with bus indices used in IComponent::getBusInfo of media type kAudio. \see AudioBusBuffers, IParameterChanges, IEventList, ProcessContext
Audio processing setup. \see IAudioProcessor::setupProcessing
kInfiniteTail * * to be returned by getTailSamples when infinite tail is wanted \see IAudioProcessor::getTailSamples
kNoTail * * to be returned by getTailSamples when no tail is wanted \see IAudioProcessor::getTailSamples