VST 3 Interfaces VST 3.7
SDK for developing VST plug-in
Steinberg::Vst Namespace Reference

All VST specific interfaces are located in Vst namespace. More...

Namespaces

namespace  Algo
 
namespace  Attributes
 Attributes used to defined a Layer in a VST XML Representation.
 
namespace  AttributesFlags
 Attributes Flags defining a Layer in a VST XML Representation.
 
namespace  AttributesFunction
 Attributes Function used to defined the function of a Layer in a VST XML Representation.
 
namespace  AttributesStyle
 Attributes Style associated a specific Layer Type in a VST XML Representation.
 
namespace  ChannelContext
 For Channel Context Info Interface.
 
namespace  CurveType
 Curve Types used in a VST XML Representation.
 
namespace  DataExchangeHandler
 
namespace  FunctionNameType
 
namespace  Helpers
 
namespace  InterAppAudio
 
namespace  LayerType
 Layer Types used in a VST XML Representation.
 
namespace  MPE
 
namespace  MusicalCharacter
 Predefined Musical Character.
 
namespace  MusicalInstrument
 Predefined Musical Instrument.
 
namespace  MusicalStyle
 Predefined Musical Style.
 
namespace  ParameterChangeTransfer
 
namespace  ParameterValueQueue
 
namespace  PlugType
 Component Types used as subCategories in PClassInfo2.
 
namespace  PresetAttributes
 Predefined Preset Attributes.
 
namespace  PresetFile
 
namespace  SampleAccurate
 
namespace  SpeakerArr
 Speaker Arrangement Definitions (SpeakerArrangement)
 
namespace  StateType
 Predefined StateType used for Key kStateType.
 
namespace  StringConvert
 
namespace  Test
 
namespace  UMP
 
namespace  ViewType
 View Types used for IEditController::createView.
 

Classes

class  AudioBuffer
 
class  AudioBus
 
struct  AudioBusBuffers
 Processing buffers of an audio bus. More...
 
class  AudioEffect
 
class  BufferStream
 
class  Bus
 
struct  BusInfo
 BusInfo: This is the structure used with getBusInfo, informing the host about what is a specific given bus. More...
 
class  BusList
 
class  BypassProcessor
 
struct  Chord
 Description of a chord. More...
 
struct  ChordEvent
 Chord event specific data. More...
 
class  Component
 
class  ComponentBase
 
class  ConnectionProxy
 
struct  DataEvent
 Data event specific data. More...
 
struct  DataExchangeBlock
 
class  DataExchangeHandler
 
class  DataExchangeReceiverHandler
 
class  EditController
 
class  EditControllerEx1
 
class  EditorView
 
struct  Event
 EventStructure representing a single Event of different types associated to a specific event (kEvent) bus. More...
 
class  EventBus
 
class  EventList
 
class  FileStream
 
struct  FrameRate
 Frame Rate A frame rate describes the number of image (frame) displayed per second. More...
 
class  HostApplication
 
class  HostAttributeList
 
struct  HostDataExchangeHandler
 
class  HostMessage
 
class  HostProcessData
 
class  IAttributeList
 Attribute list used in IMessage and IStreamAttributes: Vst::IAttributeList. More...
 
class  IAudioPresentationLatency
 Extended IAudioProcessor interface for a component: Vst::IAudioPresentationLatency. More...
 
class  IAudioProcessor
 Audio processing interface: Vst::IAudioProcessor. More...
 
class  IAutomationState
 Extended plug-in interface IEditController: Vst::IAutomationState. More...
 
class  IComponent
 Component base interface: Vst::IComponent. More...
 
class  IComponentHandler
 Host callback interface for an edit controller: Vst::IComponentHandler. More...
 
class  IComponentHandler2
 Extended host callback interface for an edit controller: Vst::IComponentHandler2. More...
 
class  IComponentHandler3
 Extended host callback interface Vst::IComponentHandler3 for an edit controller. More...
 
class  IComponentHandlerBusActivation
 Extended host callback interface for an edit controller: Vst::IComponentHandlerBusActivation. More...
 
class  IComponentHandlerSystemTime
 Extended plug-in interface IComponentHandler for an edit controller. More...
 
class  IConnectionPoint
 Connect a component with another one: Vst::IConnectionPoint. More...
 
class  IContextMenu
 Context Menu interface: Vst::IContextMenu. More...
 
struct  IContextMenuItem
 IContextMenuItem is an entry element of the context menu. More...
 
class  IContextMenuTarget
 Context Menu Item Target interface: Vst::IContextMenuTarget. More...
 
class  IDataExchangeHandler
 Host Data Exchange handler interface: Vst::IDataExchangeHandler. More...
 
struct  IDataExchangeHandlerHost
 
class  IDataExchangeReceiver
 Data Exchange Receiver interface: Vst::IDataExchangeReceiver. More...
 
class  IEditController
 Edit controller component interface: Vst::IEditController. More...
 
class  IEditController2
 Edit controller component interface extension: Vst::IEditController2. More...
 
class  IEditControllerHostEditing
 Parameter Editing from host: Vst::IEditControllerHostEditing. More...
 
class  IEventList
 List of events to process: Vst::IEventList. More...
 
class  IHostApplication
 Basic host callback interface: Vst::IHostApplication. More...
 
class  IInterAppAudioConnectionNotification
 Extended plug-in interface IEditController for Inter-App Audio connection state change notifications. More...
 
class  IInterAppAudioHost
 Inter-App Audio host Interface. More...
 
class  IInterAppAudioPresetManager
 Extended plug-in interface IEditController for Inter-App Audio Preset Management. More...
 
class  IKeyswitchController
 Extended plug-in interface IEditController for key switches support: Vst::IKeyswitchController. More...
 
class  IMessage
 Private plug-in message: Vst::IMessage. More...
 
class  IMidiLearn
 MIDI Learn interface: Vst::IMidiLearn. More...
 
class  IMidiMapping
 MIDI Mapping interface: Vst::IMidiMapping. More...
 
class  INoteExpressionController
 Extended plug-in interface IEditController for note expression event support: Vst::INoteExpressionController. More...
 
class  INoteExpressionPhysicalUIMapping
 Extended plug-in interface IEditController for note expression event support: Vst::INoteExpressionPhysicalUIMapping. More...
 
class  IParameterChanges
 All parameter changes of a processing block: Vst::IParameterChanges. More...
 
class  IParameterFinder
 Extension for IPlugView to find view parameters (lookup value under mouse support): Vst::IParameterFinder. More...
 
class  IParameterFunctionName
 Edit controller component interface extension: Vst::IParameterFunctionName. More...
 
class  IParamValueQueue
 Queue of changes for a specific parameter: Vst::IParamValueQueue. More...
 
class  IPlugInterfaceSupport
 Host callback interface for an edit controller: Vst::IPlugInterfaceSupport. More...
 
class  IPrefetchableSupport
 Indicates that the plug-in could or not support Prefetch (dynamically): Vst::IPrefetchableSupport. More...
 
class  IProcessContextRequirements
 Extended IAudioProcessor interface for a component: Vst::IProcessContextRequirements. More...
 
class  IProgramListData
 Component extension to access program list data: Vst::IProgramListData. More...
 
class  IProgress
 Extended host callback interface for an edit controller: Vst::IProgress. More...
 
class  IRemapParamID
 Extended IEditController interface for a component. More...
 
class  IStreamAttributes
 Meta attributes of a stream: Vst::IStreamAttributes. More...
 
class  ITestPlugProvider
 Test Helper. More...
 
class  ITestPlugProvider2
 Test Helper extension. More...
 
class  IUnitData
 Component extension to access unit data: Vst::IUnitData. More...
 
class  IUnitHandler
 Host callback for unit support: Vst::IUnitHandler. More...
 
class  IUnitHandler2
 Host callback for extended unit support: Vst::IUnitHandler2. More...
 
class  IUnitInfo
 Edit controller extension to describe the plug-in structure: Vst::IUnitInfo. More...
 
class  IVst3ToAAXWrapper
 VST 3 to AAX Wrapper interface: Vst::IVst3ToAAXWrapper. More...
 
class  IVst3ToAUWrapper
 VST 3 to AU Wrapper interface: Vst::IVst3ToAUWrapper. More...
 
class  IVst3ToVst2Wrapper
 VST 3 to VST 2 Wrapper interface: Vst::IVst3ToVst2Wrapper. More...
 
class  IVst3WrapperMPESupport
 Wrapper MPE Support interface: Vst::IVst3WrapperMPESupport. More...
 
class  IXmlRepresentationController
 Extended plug-in interface IEditController for a component: Vst::IXmlRepresentationController. More...
 
struct  KeyswitchInfo
 KeyswitchInfo is the structure describing a key switch This structure is used by the method IKeyswitchController::getKeyswitchInfo. More...
 
struct  LegacyMIDICCOutEvent
 Legacy MIDI CC Out event specific data. More...
 
struct  NoteExpressionTextEvent
 Note Expression Text event. More...
 
class  NoteExpressionType
 
class  NoteExpressionTypeContainer
 
struct  NoteExpressionTypeInfo
 NoteExpressionTypeInfo is the structure describing a note expression supported by the plug-in. More...
 
struct  NoteExpressionValueDescription
 Description of a Note Expression Type This structure is part of the NoteExpressionTypeInfo structure, it describes for given NoteExpressionTypeID its default value (for example 0.5 for a kTuningTypeID (kIsBipolar: centered)), its minimum and maximum (for predefined NoteExpressionTypeID the full range is predefined too) and a stepCount when the given NoteExpressionTypeID is limited to discrete values (like on/off state). More...
 
struct  NoteExpressionValueEvent
 Note Expression Value event. More...
 
struct  NoteOffEvent
 Note-off event specific data. More...
 
struct  NoteOnEvent
 Note-on event specific data. More...
 
class  ParamChanges
 
class  Parameter
 
class  ParameterChanges
 
class  ParameterChangeTransfer
 
class  ParameterContainer
 
struct  ParameterInfo
 Controller Parameter Info. More...
 
class  ParameterValueQueue
 
class  ParamPoint
 
struct  PhysicalUIMap
 PhysicalUIMap describes a mapping of a noteExpression Type to a Physical UI Type. More...
 
struct  PhysicalUIMapList
 PhysicalUIMapList describes a list of PhysicalUIMap. More...
 
class  PluginContextFactory
 
class  PlugInterfaceSupport
 
class  PlugProvider
 
struct  PolyPressureEvent
 PolyPressure event specific data. More...
 
class  PresetFile
 
struct  ProcessContext
 Audio processing context. More...
 
class  ProcessContextRequirements
 
struct  ProcessData
 Any data needed in audio processing. More...
 
class  ProcessDataSlicer
 
struct  ProcessSetup
 Audio processing setup. More...
 
class  ProgramList
 
struct  ProgramListInfo
 Basic Program List Description. More...
 
class  ProgramListWithPitchNames
 
class  RangeNoteExpressionType
 
class  RangeParameter
 
class  ReadOnlyBStream
 
struct  RepresentationInfo
 RepresentationInfo is the structure describing a representation This structure is used in the function. More...
 
struct  RoutingInfo
 Routing Information: When the plug-in supports multiple I/O busses, a host may want to know how the busses are related. More...
 
struct  RTTransferT
 
struct  ScaleEvent
 Scale event specific data. More...
 
class  SingleComponentEffect
 
class  SpeakerArray
 
class  StringListParameter
 
class  StringResult
 
class  SystemTime
 
class  TestBase
 
struct  TestDefaults
 
class  TestEnh
 
struct  TestingPluginContext
 
class  ThreadChecker
 
class  Unit
 
struct  UnitInfo
 Basic Unit Description. More...
 
class  VSTGUIEditor
 
class  XmlRepresentationHelper
 

Typedefs

typedef char[4] ChunkID
 
typedef int32 ProcessSampleSize
 
typedef std::function< bool(ITestResult *)> TestFunc
 
typedef std::function< bool(FUnknown *, ITestResult *)> TestFuncWithContext
 
typedef uint32 DataExchangeQueueID
 
typedef uint32 DataExchangeBlockID
 
typedef uint32 DataExchangeUserContextID
 
using KnobMode = int32
 Knob Mode Type. More...
 
typedef uint32 NoteExpressionTypeID
 Note Expression Types. More...
 
typedef double NoteExpressionValue
 Note Expression Value. More...
 
typedef uint32 KeyswitchTypeID
 
typedef uint32 PhysicalUITypeID
 Physical UI Type. More...
 
typedef uint32 PrefetchableSupport
 Prefetchable Support Type. More...
 
typedef char16 TChar
 UTF-16 character. More...
 
typedef TChar String128[128]
 128 character UTF-16 string More...
 
typedef const char8CString
 C-String. More...
 
typedef int32 MediaType
 media type (audio/event) More...
 
typedef int32 BusDirection
 bus direction (in/out) More...
 
typedef int32 BusType
 bus type (main/aux) More...
 
typedef int32 IoMode
 I/O mode (see vst3IoMode) More...
 
typedef int32 UnitID
 unit identifier More...
 
typedef double ParamValue
 parameter value type: normalized value => [0.0, 1.0] More...
 
typedef uint32 ParamID
 parameter identifier: value in range [0, 0x7FFFFFFF]. More...
 
typedef int32 ProgramListID
 program list identifier More...
 
typedef int16 CtrlNumber
 MIDI controller number (see ControllerNumbers for allowed values) More...
 
typedef double TQuarterNotes
 time expressed in quarter notes More...
 
typedef int64 TSamples
 time expressed in audio samples More...
 
typedef uint32 ColorSpec
 color defining by 4 component ARGB value (Alpha/Red/Green/Blue) More...
 
typedef float Sample32
 32-bit precision audio sample More...
 
typedef double Sample64
 64-bit precision audio sample More...
 
typedef double SampleRate
 sample rate More...
 
typedef uint64 SpeakerArrangement
 Bitset of speakers. More...
 
typedef uint64 Speaker
 Bit for one speaker. More...
 

Enumerations

enum  ChunkType
 
enum  ComponentFlags { kDistributable = 1 << 0 , kSimpleModeSupported = 1 << 1 }
 Component Flags used as classFlags in PClassInfo2. More...
 
enum  SymbolicSampleSizes { kSample32 , kSample64 }
 Symbolic sample size. More...
 
enum  ProcessModes { kRealtime , kPrefetch , kOffline }
 Processing mode informs the plug-in about the context and at which frequency the process call is called. More...
 
enum  MediaTypes { kAudio = 0 , kEvent , kNumMediaTypes }
 Bus media types. More...
 
enum  BusDirections { kInput = 0 , kOutput }
 Bus directions. More...
 
enum  BusTypes { kMain = 0 , kAux }
 Bus types. More...
 
enum  IoModes { kSimple = 0 , kAdvanced , kOfflineProcessing }
 I/O modes. More...
 
enum  RestartFlags : int32 {
  kReloadComponent = 1 << 0 , kIoChanged = 1 << 1 , kParamValuesChanged = 1 << 2 , kLatencyChanged = 1 << 3 ,
  kParamTitlesChanged = 1 << 4 , kMidiCCAssignmentChanged = 1 << 5 , kNoteExpressionChanged = 1 << 6 , kIoTitlesChanged = 1 << 7 ,
  kPrefetchableSupportChanged = 1 << 8 , kRoutingInfoChanged = 1 << 9 , kKeyswitchChanged = 1 << 10 , kParamIDMappingChanged = 1 << 11
}
 Flags used for IComponentHandler::restartComponent. More...
 
enum  KnobModes : KnobMode { kCircularMode = 0 , kRelativCircularMode , kLinearMode }
 Knob Mode. More...
 
enum  NoteIDUserRange { kNoteIDUserRangeLowerBound = -10000 , kNoteIDUserRangeUpperBound = -1000 }
 Reserved note identifier (noteId) range for a plug-in. More...
 
enum  ControllerNumbers {
  kCtrlBankSelectMSB = 0 , kCtrlModWheel = 1 , kCtrlBreath = 2 , kCtrlFoot = 4 ,
  kCtrlPortaTime = 5 , kCtrlDataEntryMSB = 6 , kCtrlVolume = 7 , kCtrlBalance = 8 ,
  kCtrlPan = 10 , kCtrlExpression = 11 , kCtrlEffect1 = 12 , kCtrlEffect2 = 13 ,
  kCtrlGPC1 = 16 , kCtrlGPC2 = 17 , kCtrlGPC3 = 18 , kCtrlGPC4 = 19 ,
  kCtrlBankSelectLSB = 32 , kCtrlDataEntryLSB = 38 , kCtrlSustainOnOff = 64 , kCtrlPortaOnOff = 65 ,
  kCtrlSustenutoOnOff = 66 , kCtrlSoftPedalOnOff = 67 , kCtrlLegatoFootSwOnOff = 68 , kCtrlHold2OnOff = 69 ,
  kCtrlSoundVariation = 70 , kCtrlFilterCutoff = 71 , kCtrlReleaseTime = 72 , kCtrlAttackTime = 73 ,
  kCtrlFilterResonance = 74 , kCtrlDecayTime = 75 , kCtrlVibratoRate = 76 , kCtrlVibratoDepth = 77 ,
  kCtrlVibratoDelay = 78 , kCtrlSoundCtrler10 = 79 , kCtrlGPC5 = 80 , kCtrlGPC6 = 81 ,
  kCtrlGPC7 = 82 , kCtrlGPC8 = 83 , kCtrlPortaControl = 84 , kCtrlEff1Depth = 91 ,
  kCtrlEff2Depth = 92 , kCtrlEff3Depth = 93 , kCtrlEff4Depth = 94 , kCtrlEff5Depth = 95 ,
  kCtrlDataIncrement = 96 , kCtrlDataDecrement = 97 , kCtrlNRPNSelectLSB = 98 , kCtrlNRPNSelectMSB = 99 ,
  kCtrlRPNSelectLSB = 100 , kCtrlRPNSelectMSB = 101 , kCtrlAllSoundsOff = 120 , kCtrlResetAllCtrlers = 121 ,
  kCtrlLocalCtrlOnOff = 122 , kCtrlAllNotesOff = 123 , kCtrlOmniModeOff = 124 , kCtrlOmniModeOn = 125 ,
  kCtrlPolyModeOnOff = 126 , kCtrlPolyModeOn = 127 , kAfterTouch = 128 , kPitchBend = 129 ,
  kCountCtrlNumber , kCtrlProgramChange = 130 , kCtrlPolyPressure = 131 , kCtrlQuarterFrame = 132
}
 Controller Numbers (MIDI) More...
 
enum  NoteExpressionTypeIDs : uint32 {
  kVolumeTypeID = 0 , kPanTypeID , kTuningTypeID , kVibratoTypeID ,
  kExpressionTypeID , kBrightnessTypeID , kTextTypeID , kPhonemeTypeID ,
  kCustomStart = 100000 , kCustomEnd = 200000 , kInvalidTypeID = 0xFFFFFFFF
}
 NoteExpressionTypeIDs describes the type of the note expression. More...
 
enum  KeyswitchTypeIDs : uint32 { kNoteOnKeyswitchTypeID = 0 , kOnTheFlyKeyswitchTypeID , kOnReleaseKeyswitchTypeID , kKeyRangeTypeID }
 KeyswitchTypeIDs describes the type of a key switch. More...
 
enum  PhysicalUITypeIDs {
  kPUIXMovement = 0 , kPUIYMovement , kPUIPressure , kPUITypeCount ,
  kInvalidPUITypeID = 0xFFFFFFFF
}
 PhysicalUITypeIDs describes the type of Physical UI (PUI) which could be associated to a note expression. More...
 
enum  ePrefetchableSupport { kIsNeverPrefetchable = 0 , kIsYetPrefetchable , kIsNotYetPrefetchable , kNumPrefetchableSupport }
 Prefetchable Support Enum. More...
 

Functions

void ** getChannelBuffersPointer (const ProcessSetup &processSetup, const AudioBusBuffers &bufs)
 
uint32 getSampleFramesSizeInBytes (const ProcessSetup &processSetup, int32 numSamples)
 
uint64 getChannelMask (int32 numChannels)
 
tresult getSpeakerChannelIndex (SpeakerArrangement arrangement, uint64 speaker, int32 &channel)
 
void setupVSTGUIBundleSupport (void *hInstance)
 
const ChunkIDgetChunkID (ChunkType type)
 
bool verify (tresult result)
 
bool copyStream (IBStream *inStream, IBStream *outStream)
 
 IMPLEMENT_FUNKNOWN_METHODS (FileStream, IBStream, IBStream::iid) tresult FileStream
 
 IMPLEMENT_REFCOUNT (ReadOnlyBStream) ReadOnlyBStream
 
 IMPLEMENT_FUNKNOWN_METHODS (BufferStream, IBStream, IBStream::iid) BufferStream
 
bool isEqualID (const ChunkID id1, const ChunkID id2)
 
 IMPLEMENT_FUNKNOWN_METHODS (ConnectionProxy, IConnectionPoint, IConnectionPoint::iid) ConnectionProxy
 
 IMPLEMENT_FUNKNOWN_METHODS (EventList, IEventList, IEventList::iid) EventList
 
 IMPLEMENT_FUNKNOWN_METHODS (HostMessage, IMessage, IMessage::iid) HostMessage
 
 IMPLEMENT_FUNKNOWN_METHODS (HostAttributeList, IAttributeList, IAttributeList::iid) IPtr< IAttributeList > HostAttributeList
 
 IMPLEMENT_FUNKNOWN_METHODS (ParameterChanges, IParameterChanges, IParameterChanges::iid) IMPLEMENT_FUNKNOWN_METHODS(ParameterValueQueue
 
 IMPLEMENT_FUNKNOWN_METHODS (TestBase, ITest, ITest::iid)
 
void addMessage (ITestResult *testResult, const std::u16string &str)
 
void addMessage (ITestResult *testResult, const char *str)
 
void addErrorMessage (ITestResult *testResult, const char *str)
 
void addErrorMessage (ITestResult *testResult, const std::u16string &str)
 
std::u16string printf (const char8 *format,...)
 
 IMPLEMENT_FUNKNOWN_METHODS (ParamChanges, IParamValueQueue, IParamValueQueue::iid) ParamChanges
 
 SMTG_TYPE_ALIGN_CHECK (PFactoryInfo, 4, 4, 4, 4) SMTG_TYPE_ALIGN_CHECK(PClassInfo
 
 SMTG_TYPE_ALIGN_CHECK (PClassInfo2, 4, 4, 4, 4) SMTG_TYPE_ALIGN_CHECK(PClassInfoW
 
 SMTG_TYPE_ALIGN_CHECK (ProcessSetup, 8, 1, 8, 8) SMTG_TYPE_ALIGN_CHECK(AudioBusBuffers
 
 SMTG_TYPE_ALIGN_CHECK (ProcessData, 8, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK(BusInfo
 
 SMTG_TYPE_ALIGN_CHECK (RoutingInfo, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK(IContextMenuItem
 
 SMTG_TYPE_ALIGN_CHECK (ParameterInfo, 8, 1, 8, 8) SMTG_TYPE_ALIGN_CHECK(NoteOnEvent
 
 SMTG_TYPE_ALIGN_CHECK (NoteOffEvent, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK(DataEvent
 
 SMTG_TYPE_ALIGN_CHECK (PolyPressureEvent, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK(ChordEvent
 
 SMTG_TYPE_ALIGN_CHECK (ScaleEvent, 8, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK(LegacyMIDICCOutEvent
 
 SMTG_TYPE_ALIGN_CHECK (Event, 8, 1, 8, 8) SMTG_TYPE_ALIGN_CHECK(NoteExpressionValueDescription
 
 SMTG_TYPE_ALIGN_CHECK (NoteExpressionValueEvent, 8, 1, 4, 8) SMTG_TYPE_ALIGN_CHECK(NoteExpressionTextEvent
 
 SMTG_TYPE_ALIGN_CHECK (NoteExpressionTypeInfo, 8, 1, 8, 8) SMTG_TYPE_ALIGN_CHECK(KeyswitchInfo
 
 SMTG_TYPE_ALIGN_CHECK (FrameRate, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK(Chord
 
 SMTG_TYPE_ALIGN_CHECK (ProcessContext, 8, 1, 8, 8) SMTG_TYPE_ALIGN_CHECK(RepresentationInfo
 
 SMTG_TYPE_ALIGN_CHECK (UnitInfo, 4, 1, 4, 4) SMTG_TYPE_ALIGN_CHECK(ProgramListInfo
 
void printStructSizes ()
 
void * aligned_alloc (size_t numBytes, uint32_t alignment)
 
void aligned_free (void *addr, uint32_t alignment)
 
Sample32 ** getChannelBuffers (AudioBusBuffers &buffer)
 
bool operator== (const DataExchangeHandler::Config &c1, const DataExchangeHandler::Config &c2)
 
bool operator!= (const DataExchangeBlock &lhs, const DataExchangeBlock &rhs)
 
bool operator== (const DataExchangeBlock &lhs, const DataExchangeBlock &rhs)
 
const Steinberg::Vst::TChartoTChar (const std::u16string &str)
 
std::u16string toString (NumberT value)
 
FUnknowncreateTestFactoryInstance (void *)
 
const FUIDgetTestFactoryUID ()
 
void registerTest (FIDString name, const char *desc, const TestFunc &func)
 
void registerTest (FIDString name, const char *desc, TestFunc &&func)
 
void registerTest (FIDString name, const char *desc, const TestFuncWithContext &func)
 
void registerTest (FIDString name, const char *desc, TestFuncWithContext &&func)
 
void registerTest (FIDString name, ITest *test)
 
IMessageallocateMessage (IHostApplication *host)
 Helper to allocate a message. More...
 

Variables

 kHeader
 
 kComponentState
 
 kControllerState
 
 kProgramData
 
 kMetaInfo
 
 kChunkList
 
 kNumPresetChunks
 
 IParamValueQueue
 
IParamValueQueue::iid constexpr int32 kQueueReservedPoints
 
const int32 kDefaultFactoryFlags = PFactoryInfo::kUnicode
 Standard value for PFactoryInfo::flags. More...
 
const Speaker kSpeakerL = 1 << 0
 Speaker Definitions. More...
 
const Speaker kSpeakerR = 1 << 1
 Right (R) More...
 
const Speaker kSpeakerC = 1 << 2
 Center (C) More...
 
const Speaker kSpeakerLfe = 1 << 3
 Subbass (Lfe) More...
 
const Speaker kSpeakerLs = 1 << 4
 Left Surround (Ls) More...
 
const Speaker kSpeakerRs = 1 << 5
 Right Surround (Rs) More...
 
const Speaker kSpeakerLc = 1 << 6
 Left of Center (Lc) - Front Left Center. More...
 
const Speaker kSpeakerRc = 1 << 7
 Right of Center (Rc) - Front Right Center. More...
 
const Speaker kSpeakerS = 1 << 8
 Surround (S) More...
 
const Speaker kSpeakerCs = kSpeakerS
 Center of Surround (Cs) - Back Center - Surround (S) More...
 
const Speaker kSpeakerSl = 1 << 9
 Side Left (Sl) More...
 
const Speaker kSpeakerSr = 1 << 10
 Side Right (Sr) More...
 
const Speaker kSpeakerTc = 1 << 11
 Top Center Over-head, Top Middle (Tc) More...
 
const Speaker kSpeakerTfl = 1 << 12
 Top Front Left (Tfl) More...
 
const Speaker kSpeakerTfc = 1 << 13
 Top Front Center (Tfc) More...
 
const Speaker kSpeakerTfr = 1 << 14
 Top Front Right (Tfr) More...
 
const Speaker kSpeakerTrl = 1 << 15
 Top Rear/Back Left (Trl) More...
 
const Speaker kSpeakerTrc = 1 << 16
 Top Rear/Back Center (Trc) More...
 
const Speaker kSpeakerTrr = 1 << 17
 Top Rear/Back Right (Trr) More...
 
const Speaker kSpeakerLfe2 = 1 << 18
 Subbass 2 (Lfe2) More...
 
const Speaker kSpeakerM = 1 << 19
 Mono (M) More...
 
const Speaker kSpeakerACN0 = (Speaker)1 << 20
 Ambisonic ACN 0. More...
 
const Speaker kSpeakerACN1 = (Speaker)1 << 21
 Ambisonic ACN 1. More...
 
const Speaker kSpeakerACN2 = (Speaker)1 << 22
 Ambisonic ACN 2. More...
 
const Speaker kSpeakerACN3 = (Speaker)1 << 23
 Ambisonic ACN 3. More...
 
const Speaker kSpeakerACN4 = (Speaker)1 << 38
 Ambisonic ACN 4. More...
 
const Speaker kSpeakerACN5 = (Speaker)1 << 39
 Ambisonic ACN 5. More...
 
const Speaker kSpeakerACN6 = (Speaker)1 << 40
 Ambisonic ACN 6. More...
 
const Speaker kSpeakerACN7 = (Speaker)1 << 41
 Ambisonic ACN 7. More...
 
const Speaker kSpeakerACN8 = (Speaker)1 << 42
 Ambisonic ACN 8. More...
 
const Speaker kSpeakerACN9 = (Speaker)1 << 43
 Ambisonic ACN 9. More...
 
const Speaker kSpeakerACN10 = (Speaker)1 << 44
 Ambisonic ACN 10. More...
 
const Speaker kSpeakerACN11 = (Speaker)1 << 45
 Ambisonic ACN 11. More...
 
const Speaker kSpeakerACN12 = (Speaker)1 << 46
 Ambisonic ACN 12. More...
 
const Speaker kSpeakerACN13 = (Speaker)1 << 47
 Ambisonic ACN 13. More...
 
const Speaker kSpeakerACN14 = (Speaker)1 << 48
 Ambisonic ACN 14. More...
 
const Speaker kSpeakerACN15 = (Speaker)1 << 49
 Ambisonic ACN 15. More...
 
const Speaker kSpeakerACN16 = (Speaker)1 << 50
 Ambisonic ACN 16. More...
 
const Speaker kSpeakerACN17 = (Speaker)1 << 51
 Ambisonic ACN 17. More...
 
const Speaker kSpeakerACN18 = (Speaker)1 << 52
 Ambisonic ACN 18. More...
 
const Speaker kSpeakerACN19 = (Speaker)1 << 53
 Ambisonic ACN 19. More...
 
const Speaker kSpeakerACN20 = (Speaker)1 << 54
 Ambisonic ACN 20. More...
 
const Speaker kSpeakerACN21 = (Speaker)1 << 55
 Ambisonic ACN 21. More...
 
const Speaker kSpeakerACN22 = (Speaker)1 << 56
 Ambisonic ACN 22. More...
 
const Speaker kSpeakerACN23 = (Speaker)1 << 57
 Ambisonic ACN 23. More...
 
const Speaker kSpeakerACN24 = (Speaker)1 << 58
 Ambisonic ACN 24. More...
 
const Speaker kSpeakerTsl = (Speaker)1 << 24
 Top Side Left (Tsl) More...
 
const Speaker kSpeakerTsr = (Speaker)1 << 25
 Top Side Right (Tsr) More...
 
const Speaker kSpeakerLcs = (Speaker)1 << 26
 Left of Center Surround (Lcs) - Back Left Center. More...
 
const Speaker kSpeakerRcs = (Speaker)1 << 27
 Right of Center Surround (Rcs) - Back Right Center. More...
 
const Speaker kSpeakerBfl = (Speaker)1 << 28
 Bottom Front Left (Bfl) More...
 
const Speaker kSpeakerBfc = (Speaker)1 << 29
 Bottom Front Center (Bfc) More...
 
const Speaker kSpeakerBfr = (Speaker)1 << 30
 Bottom Front Right (Bfr) More...
 
const Speaker kSpeakerPl = (Speaker)1 << 31
 Proximity Left (Pl) More...
 
const Speaker kSpeakerPr = (Speaker)1 << 32
 Proximity Right (Pr) More...
 
const Speaker kSpeakerBsl = (Speaker)1 << 33
 Bottom Side Left (Bsl) More...
 
const Speaker kSpeakerBsr = (Speaker)1 << 34
 Bottom Side Right (Bsr) More...
 
const Speaker kSpeakerBrl = (Speaker)1 << 35
 Bottom Rear Left (Brl) More...
 
const Speaker kSpeakerBrc = (Speaker)1 << 36
 Bottom Rear Center (Brc) More...
 
const Speaker kSpeakerBrr = (Speaker)1 << 37
 Bottom Rear Right (Brr) More...
 
const Speaker kSpeakerLw = (Speaker)1 << 59
 Left Wide (Lw) More...
 
const Speaker kSpeakerRw = (Speaker)1 << 60
 Right Wide (Rw) More...
 

Detailed Description

All VST specific interfaces are located in Vst namespace.

Typedef Documentation

◆ DataExchangeQueueID

◆ DataExchangeBlockID

◆ DataExchangeUserContextID

◆ KnobMode

using KnobMode = int32

Knob Mode Type.

◆ NoteExpressionTypeID

Note Expression Types.

◆ NoteExpressionValue

typedef double NoteExpressionValue

Note Expression Value.

◆ KeyswitchTypeID

◆ PhysicalUITypeID

Physical UI Type.

◆ PrefetchableSupport

Prefetchable Support Type.

◆ TChar

typedef char16 TChar

UTF-16 character.

◆ String128

typedef TChar String128[128]

128 character UTF-16 string

◆ CString

typedef const char8* CString

C-String.

◆ MediaType

typedef int32 MediaType

media type (audio/event)

◆ BusDirection

bus direction (in/out)

◆ BusType

typedef int32 BusType

bus type (main/aux)

◆ IoMode

typedef int32 IoMode

I/O mode (see vst3IoMode)

◆ UnitID

typedef int32 UnitID

unit identifier

◆ ParamValue

typedef double ParamValue

parameter value type: normalized value => [0.0, 1.0]

◆ ParamID

typedef uint32 ParamID

parameter identifier: value in range [0, 0x7FFFFFFF].

The range [0x80000000, 0xFFFFFFFF], is reserved for host application.

◆ ProgramListID

program list identifier

◆ CtrlNumber

typedef int16 CtrlNumber

MIDI controller number (see ControllerNumbers for allowed values)

◆ TQuarterNotes

typedef double TQuarterNotes

time expressed in quarter notes

◆ TSamples

typedef int64 TSamples

time expressed in audio samples

◆ ColorSpec

typedef uint32 ColorSpec

color defining by 4 component ARGB value (Alpha/Red/Green/Blue)

◆ Sample32

typedef float Sample32

32-bit precision audio sample

◆ Sample64

typedef double Sample64

64-bit precision audio sample

◆ SampleRate

typedef double SampleRate

sample rate

◆ SpeakerArrangement

Bitset of speakers.

◆ Speaker

typedef uint64 Speaker

Bit for one speaker.

Enumeration Type Documentation

◆ ComponentFlags

Component Flags used as classFlags in PClassInfo2.

Enumerator
kDistributable 

Component can be run on remote computer.

kSimpleModeSupported 

Component supports simple IO mode (or works in simple mode anyway) see vst3IoMode.

◆ SymbolicSampleSizes

Symbolic sample size.

See also
ProcessSetup, ProcessData
Enumerator
kSample32 

32-bit precision

kSample64 

64-bit precision

◆ ProcessModes

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.
See also
ProcessSetup, ProcessData
Enumerator
kRealtime 

realtime processing

kPrefetch 

prefetch processing

kOffline 

offline processing

◆ MediaTypes

enum MediaTypes

Bus media types.

Enumerator
kAudio 

audio

kEvent 

events

kNumMediaTypes 

◆ BusDirections

Bus directions.

Enumerator
kInput 

input bus

kOutput 

output bus

◆ BusTypes

enum BusTypes

Bus types.

Enumerator
kMain 

main bus

kAux 

auxiliary bus (sidechain)

◆ IoModes

enum IoModes

I/O modes.

Enumerator
kSimple 

1:1 Input / Output. Only used for Instruments. See vst3IoMode

kAdvanced 

n:m Input / Output. Only used for Instruments.

kOfflineProcessing 

plug-in used in an offline processing context

◆ RestartFlags

Flags used for IComponentHandler::restartComponent.

Enumerator
kReloadComponent 

The Component should be reloaded The host has to unload completely the plug-in (controller/processor) and reload it.

[SDK 3.0.0]

kIoChanged 

Input/Output Bus configuration has changed The plug-in informs the host that either the bus configuration or the bus count has changed.

The host has to deactivate the plug-in, asks the plug-in for its wanted new bus configurations, adapts its processing graph and reactivate the plug-in. [SDK 3.0.0]

kParamValuesChanged 

Multiple parameter values have changed (as result of a program change for example) The host invalidates all caches of parameter values and asks the edit controller for the current values.

[SDK 3.0.0]

kLatencyChanged 

Latency has changed The plug informs the host that its latency has changed, getLatencySamples should return the new latency after setActive (true) was called The host has to deactivate and reactivate the plug-in, then afterwards the host could ask for the current latency (getLatencySamples) See IAudioProcessor::getLatencySamples [SDK 3.0.0].

kParamTitlesChanged 

Parameter titles (title, shortTitle and units), default values, stepCount or flags (ParameterFlags) have changed The host invalidates all caches of parameter infos and asks the edit controller for the current infos.

[SDK 3.0.0]

kMidiCCAssignmentChanged 

MIDI Controllers and/or Program Changes Assignments have changed The plug-in informs the host that its MIDI-CC mapping has changed (for example after a MIDI learn or new loaded preset) or if the stepCount or UnitID of a ProgramChange parameter has changed.

The host has to rebuild the MIDI-CC => parameter mapping (getMidiControllerAssignment) and reread program changes parameters (stepCount and associated unitID) [SDK 3.0.1]

kNoteExpressionChanged 

Note Expression has changed (info, count, PhysicalUIMapping, ...) Either the note expression type info, the count of note expressions or the physical UI mapping has changed.

The host invalidates all caches of note expression infos and asks the edit controller for the current ones. See INoteExpressionController, NoteExpressionTypeInfo and INoteExpressionPhysicalUIMapping [SDK 3.5.0]

kIoTitlesChanged 

Input / Output bus titles have changed The host invalidates all caches of bus titles and asks the edit controller for the current titles.

[SDK 3.5.0]

kPrefetchableSupportChanged 

Prefetch support has changed The plug-in informs the host that its PrefetchSupport has changed The host has to deactivate the plug-in, calls IPrefetchableSupport::getPrefetchableSupport and reactivate the plug-in.

See IPrefetchableSupport [SDK 3.6.1]

kRoutingInfoChanged 

RoutingInfo has changed The plug-in informs the host that its internal routing (relation of an event-input-channel to an audio-output-bus) has changed.

The host asks the plug-in for the new routing with IComponent::getRoutingInfo, vst3Routing See IComponent [SDK 3.6.6]

kKeyswitchChanged 

Key switches has changed (info, count) Either the Key switches info, the count of Key switches has changed.

The host invalidates all caches of Key switches infos and asks the edit controller (IKeyswitchController) for the current ones. See IKeyswitchController [SDK 3.7.3]

kParamIDMappingChanged 

Mapping of ParamID has changed The Plug-in informs the host that its parameters ID has changed.

This has to be called by the edit controller in the method setComponentState or setState (during projects loading) when the plug-in detects that the given state was associated to an older version of the plug-in, or to a plug-in to replace (for ex. migrating VST2 => VST3), with a different set of parameter IDs, then the host could remap any used parameters like automation by asking the IRemapParamID interface (which extends IEditController). See IRemapParamID [SDK 3.7.11]

◆ KnobModes

Knob Mode.

Enumerator
kCircularMode 

Circular with jump to clicked position.

kRelativCircularMode 

Circular without jump to clicked position.

kLinearMode 

Linear: depending on vertical movement.

◆ NoteIDUserRange

Reserved note identifier (noteId) range for a plug-in.

Guaranteed not used by the host.

Enumerator
kNoteIDUserRangeLowerBound 
kNoteIDUserRangeUpperBound 

◆ ControllerNumbers

Controller Numbers (MIDI)

Enumerator
kCtrlBankSelectMSB 

Bank Select MSB.

kCtrlModWheel 

Modulation Wheel.

kCtrlBreath 

Breath controller.

kCtrlFoot 

Foot Controller.

kCtrlPortaTime 

Portamento Time.

kCtrlDataEntryMSB 

Data Entry MSB.

kCtrlVolume 

Channel Volume (formerly Main Volume)

kCtrlBalance 

Balance.

kCtrlPan 

Pan.

kCtrlExpression 

Expression.

kCtrlEffect1 

Effect Control 1.

kCtrlEffect2 

Effect Control 2.

kCtrlGPC1 

General Purpose Controller #1.

kCtrlGPC2 

General Purpose Controller #2.

kCtrlGPC3 

General Purpose Controller #3.

kCtrlGPC4 

General Purpose Controller #4.

kCtrlBankSelectLSB 

Bank Select LSB.

kCtrlDataEntryLSB 

Data Entry LSB.

kCtrlSustainOnOff 

Damper Pedal On/Off (Sustain)

kCtrlPortaOnOff 

Portamento On/Off.

kCtrlSustenutoOnOff 

Sustenuto On/Off.

kCtrlSoftPedalOnOff 

Soft Pedal On/Off.

kCtrlLegatoFootSwOnOff 

Legato Footswitch On/Off.

kCtrlHold2OnOff 

Hold 2 On/Off.

kCtrlSoundVariation 

Sound Variation.

kCtrlFilterCutoff 

Filter Cutoff (Timbre/Harmonic Intensity)

kCtrlReleaseTime 

Release Time.

kCtrlAttackTime 

Attack Time.

kCtrlFilterResonance 

Filter Resonance (Brightness)

kCtrlDecayTime 

Decay Time.

kCtrlVibratoRate 

Vibrato Rate.

kCtrlVibratoDepth 

Vibrato Depth.

kCtrlVibratoDelay 

Vibrato Delay.

kCtrlSoundCtrler10 

undefined

kCtrlGPC5 

General Purpose Controller #5.

kCtrlGPC6 

General Purpose Controller #6.

kCtrlGPC7 

General Purpose Controller #7.

kCtrlGPC8 

General Purpose Controller #8.

kCtrlPortaControl 

Portamento Control.

kCtrlEff1Depth 

Effect 1 Depth (Reverb Send Level)

kCtrlEff2Depth 

Effect 2 Depth (Tremolo Level)

kCtrlEff3Depth 

Effect 3 Depth (Chorus Send Level)

kCtrlEff4Depth 

Effect 4 Depth (Delay/Variation/Detune Level)

kCtrlEff5Depth 

Effect 5 Depth (Phaser Level)

kCtrlDataIncrement 

Data Increment (+1)

kCtrlDataDecrement 

Data Decrement (-1)

kCtrlNRPNSelectLSB 

NRPN Select LSB.

kCtrlNRPNSelectMSB 

NRPN Select MSB.

kCtrlRPNSelectLSB 

RPN Select LSB.

kCtrlRPNSelectMSB 

RPN Select MSB.

kCtrlAllSoundsOff 

All Sounds Off.

kCtrlResetAllCtrlers 

Reset All Controllers.

kCtrlLocalCtrlOnOff 

Local Control On/Off.

kCtrlAllNotesOff 

All Notes Off.

kCtrlOmniModeOff 

Omni Mode Off + All Notes Off.

kCtrlOmniModeOn 

Omni Mode On + All Notes Off.

kCtrlPolyModeOnOff 

Poly Mode On/Off + All Sounds Off.

kCtrlPolyModeOn 

Poly Mode On.

kAfterTouch 

After Touch (associated to Channel Pressure)

kPitchBend 

Pitch Bend Change.

kCountCtrlNumber 

Count of Controller Number.

kCtrlProgramChange 

Program Change (use LegacyMIDICCOutEvent.value only)

kCtrlPolyPressure 

Polyphonic Key Pressure (use LegacyMIDICCOutEvent.value for pitch and LegacyMIDICCOutEvent.value2 for pressure)

kCtrlQuarterFrame 

Quarter Frame ((use LegacyMIDICCOutEvent.value only)

◆ NoteExpressionTypeIDs

NoteExpressionTypeIDs describes the type of the note expression.

VST predefines some types like volume, pan, tuning by defining their ranges and curves. Used by NoteExpressionEvent::typeId and NoteExpressionTypeID::typeId

See also
NoteExpressionTypeInfo
Enumerator
kVolumeTypeID 

Volume, plain range [0 = -oo , 0.25 = 0dB, 0.5 = +6dB, 1 = +12dB]: plain = 20 * log (4 * norm)

kPanTypeID 

Panning (L-R), plain range [0 = left, 0.5 = center, 1 = right].

kTuningTypeID 

Tuning, plain range [0 = -120.0 (ten octaves down), 0.5 none, 1 = +120.0 (ten octaves up)] plain = 240 * (norm - 0.5) and norm = plain / 240 + 0.5 oneOctave is 12.0 / 240.0; oneHalfTune = 1.0 / 240.0;.

kVibratoTypeID 

Vibrato.

kExpressionTypeID 

Expression.

kBrightnessTypeID 

Brightness.

kTextTypeID 

See NoteExpressionTextEvent.

kPhonemeTypeID 

TODO:

kCustomStart 

start of custom note expression type ids

kCustomEnd 

end of custom note expression type ids

kInvalidTypeID 

indicates an invalid note expression type

◆ KeyswitchTypeIDs

KeyswitchTypeIDs describes the type of a key switch.

See also
KeyswitchInfo
Enumerator
kNoteOnKeyswitchTypeID 

press before noteOn is played

kOnTheFlyKeyswitchTypeID 

press while noteOn is played

kOnReleaseKeyswitchTypeID 

press before entering release

kKeyRangeTypeID 

key should be maintained pressed for playing

◆ PhysicalUITypeIDs

PhysicalUITypeIDs describes the type of Physical UI (PUI) which could be associated to a note expression.

See also
PhysicalUIMap
Enumerator
kPUIXMovement 

absolute X position when touching keys of PUIs.

Range [0=left, 0.5=middle, 1=right]

kPUIYMovement 

absolute Y position when touching keys of PUIs.

Range [0=bottom/near, 0.5=center, 1=top/far]

kPUIPressure 

pressing a key down on keys of PUIs.

Range [0=No Pressure, 1=Full Pressure]

kPUITypeCount 

count of current defined PUIs

kInvalidPUITypeID 

indicates an invalid or not initialized PUI type

◆ ePrefetchableSupport

Prefetchable Support Enum.

Enumerator
kIsNeverPrefetchable 

every instance of the plug does not support prefetch processing

kIsYetPrefetchable 

in the current state the plug support prefetch processing

kIsNotYetPrefetchable 

in the current state the plug does not support prefetch processing

kNumPrefetchableSupport 

Function Documentation

◆ allocateMessage()

IMessage * Steinberg::Vst::allocateMessage ( IHostApplication host)
inline

Helper to allocate a message.

Variable Documentation

◆ kDefaultFactoryFlags

const int32 kDefaultFactoryFlags = PFactoryInfo::kUnicode

Standard value for PFactoryInfo::flags.

Empty

Copyright © Steinberg Media Technologies GmbH. All Rights Reserved. This documentation is under this license.