alias ProcessModes = int

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.


interface IAudioProcessor

Audio Processing Interface. This interface must always be supported by audio processing Plug-ins.

interface IEventList

List of events to process. \ingroup vstIHost vst300 - [host imp] - [released: 3.0.0]

interface IHostApplication

Basic Host Callback Interface. \ingroup vstIHost vst300 - [host imp] - [passed as 'context' in to IPluginBase::initialize () ] - [released: 3.0.0]

interface IParamValueQueue

Queue of changes for a specific parameter. \ingroup vstIHost vst300 - [host imp] - [released: 3.0.0]

interface IParameterChanges

All parameter changes of a processing block. \ingroup vstIHost vst300 - [host imp] - [released: 3.0.0]


struct AudioBusBuffers

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

struct Chord

Description of a chord. A chord is described with a key note, a root note and the \copydoc chordMask \see ProcessContext

struct ChordEvent

Chord event specific data. Used in \ref Event (union)

struct DataEvent

Data event specific data. Used in \ref Event (union)

struct Event


struct FrameRate
struct NoteExpressionTextEvent
struct NoteExpressionValueEvent
struct NoteOffEvent

Note-off event specific data. Used in \ref Event (union)

struct NoteOnEvent

Note-on event specific data. Used in \ref Event (union)

struct PlugType
struct PolyPressureEvent

PolyPressure event specific data. Used in \ref Event (union)

struct ProcessContext

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

struct 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

struct ProcessSetup

Audio processing setup. \see IAudioProcessor::setupProcessing


enum uint kInfiniteTail;


enum uint kNoTail;