LMMS
Loading...
Searching...
No Matches
ivstaudioprocessor.h
Go to the documentation of this file.
1//------------------------------------------------------------------------
2// Project : VST SDK
3//
4// Category : Interfaces
5// Filename : pluginterfaces/vst/ivstaudioprocessor.h
6// Created by : Steinberg, 10/2005
7// Description : VST Audio Processing Interfaces
8//
9//-----------------------------------------------------------------------------
10// This file is part of a Steinberg SDK. It is subject to the license terms
11// in the LICENSE file found in the top-level directory of this distribution
12// and at www.steinberg.net/sdklicenses.
13// No part of the SDK, including this file, may be copied, modified, propagated,
14// or distributed except according to the terms contained in the LICENSE file.
15//-----------------------------------------------------------------------------
16
17#pragma once
18
19#include "ivstcomponent.h"
20#include "vstspeaker.h"
21
22//------------------------------------------------------------------------
24//------------------------------------------------------------------------
25
26//------------------------------------------------------------------------
28//------------------------------------------------------------------------
29#ifndef kVstAudioEffectClass
30#define kVstAudioEffectClass "Audio Module Class"
31#endif
32
33//------------------------------------------------------------------------
34namespace Steinberg {
35namespace Vst {
36
37class IEventList;
38class IParameterChanges;
39struct ProcessContext;
40
41//------------------------------------------------------------------------
43namespace PlugType
44{
48//------------------------------------------------------------------------
49const CString kFxAnalyzer = "Fx|Analyzer";
50const CString kFxDelay = "Fx|Delay";
51const CString kFxDistortion = "Fx|Distortion";
52const CString kFxDynamics = "Fx|Dynamics";
53const CString kFxEQ = "Fx|EQ";
54const CString kFxFilter = "Fx|Filter";
55const CString kFx = "Fx";
56const CString kFxInstrument = "Fx|Instrument";
57const CString kFxInstrumentExternal = "Fx|Instrument|External";
58const CString kFxSpatial = "Fx|Spatial";
59const CString kFxGenerator = "Fx|Generator";
60const CString kFxMastering = "Fx|Mastering";
61const CString kFxModulation = "Fx|Modulation";
62const CString kFxPitchShift = "Fx|Pitch Shift";
63const CString kFxRestoration = "Fx|Restoration";
64const CString kFxReverb = "Fx|Reverb";
65const CString kFxSurround = "Fx|Surround";
66const CString kFxTools = "Fx|Tools";
67const CString kFxNetwork = "Fx|Network";
68
69const CString kInstrument = "Instrument";
70const CString kInstrumentDrum = "Instrument|Drum";
71const CString kInstrumentExternal = "Instrument|External";
72const CString kInstrumentPiano = "Instrument|Piano";
73const CString kInstrumentSampler = "Instrument|Sampler";
74const CString kInstrumentSynth = "Instrument|Synth";
75const CString kInstrumentSynthSampler = "Instrument|Synth|Sampler";
76
77const CString kSpatial = "Spatial";
78const CString kSpatialFx = "Spatial|Fx";
79const CString kOnlyRealTime = "OnlyRT";
80const CString kOnlyOfflineProcess = "OnlyOfflineProcess";
81const CString kOnlyARA = "OnlyARA";
82
83const CString kNoOfflineProcess = "NoOfflineProcess";
84const CString kUpDownMix = "Up-Downmix";
85const CString kAnalyzer = "Analyzer";
86const CString kAmbisonics = "Ambisonics";
87
88const CString kMono = "Mono";
89const CString kStereo = "Stereo";
90const CString kSurround = "Surround";
91
92//------------------------------------------------------------------------
94}
95
96//------------------------------------------------------------------------
99{
100//------------------------------------------------------------------------
101 kDistributable = 1 << 0,
103//------------------------------------------------------------------------
104};
105
106//------------------------------------------------------------------------
115
116//------------------------------------------------------------------------
144
145//------------------------------------------------------------------------
151static const uint32 kNoTail = 0;
152
153//------------------------------------------------------------------------
160
161//------------------------------------------------------------------------
166{
167//------------------------------------------------------------------------
172//------------------------------------------------------------------------
173};
174
175//------------------------------------------------------------------------
192{
194
195//------------------------------------------------------------------------
198 union
199 {
202 };
203//------------------------------------------------------------------------
204};
205
206//------------------------------------------------------------------------
247
248//------------------------------------------------------------------------
259{
260public:
261//------------------------------------------------------------------------
282 virtual tresult PLUGIN_API setBusArrangements (SpeakerArrangement* inputs, int32 numIns,
283 SpeakerArrangement* outputs, int32 numOuts) = 0;
284
288 virtual tresult PLUGIN_API getBusArrangement (BusDirection dir, int32 index, SpeakerArrangement& arr) = 0;
289
291 virtual tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) = 0;
292
300 virtual uint32 PLUGIN_API getLatencySamples () = 0;
301
303 virtual tresult PLUGIN_API setupProcessing (ProcessSetup& setup) = 0;
304
314 virtual tresult PLUGIN_API setProcessing (TBool state) = 0;
315
317 virtual tresult PLUGIN_API process (ProcessData& data) = 0;
318
328 virtual uint32 PLUGIN_API getTailSamples () = 0;
329
330//------------------------------------------------------------------------
331 static const FUID iid;
332};
333
334DECLARE_CLASS_IID (IAudioProcessor, 0x42043F99, 0xB7DA453C, 0xA569E79D, 0x9AAEC33D)
335
336//------------------------------------------------------------------------
367{
368public:
369 //------------------------------------------------------------------------
371 virtual tresult PLUGIN_API setAudioPresentationLatencySamples (BusDirection dir, int32 busIndex, uint32 latencyInSamples) = 0;
372
373 //------------------------------------------------------------------------
374 static const FUID iid;
375};
376
377DECLARE_CLASS_IID (IAudioPresentationLatency, 0x309ECE78, 0xEB7D4fae, 0x8B2225D9, 0x09FD08B6)
378
379//------------------------------------------------------------------------
400{
401public:
402 enum Flags
403 {
404 kNeedSystemTime = 1 << 0, // kSystemTimeValid
405 kNeedContinousTimeSamples = 1 << 1, // kContTimeValid
406 kNeedProjectTimeMusic = 1 << 2, // kProjectTimeMusicValid
407 kNeedBarPositionMusic = 1 << 3, // kBarPositionValid
408 kNeedCycleMusic = 1 << 4, // kCycleValid
409 kNeedSamplesToNextClock = 1 << 5, // kClockValid
410 kNeedTempo = 1 << 6, // kTempoValid
411 kNeedTimeSignature = 1 << 7, // kTimeSigValid
412 kNeedChord = 1 << 8, // kChordValid
413 kNeedFrameRate = 1 << 9, // kSmpteValid
414 kNeedTransportState = 1 << 10, // kPlaying, kCycleActive, kRecording
415 };
416 virtual uint32 PLUGIN_API getProcessContextRequirements () = 0;
417//------------------------------------------------------------------------
418 static const FUID iid;
419};
420
421DECLARE_CLASS_IID (IProcessContextRequirements, 0x2A654303, 0xEF764E3D, 0x95B5FE83, 0x730EF6D0)
422
423//------------------------------------------------------------------------
424} // namespace Vst
425} // namespace Steinberg
426
427//------------------------------------------------------------------------
429//------------------------------------------------------------------------
#define nullptr
Definition DistrhoDefines.h:75
Definition funknown.h:233
Definition funknown.h:361
Definition ivstaudioprocessor.h:367
static const FUID iid
Definition ivstaudioprocessor.h:374
virtual tresult PLUGIN_API setAudioPresentationLatencySamples(BusDirection dir, int32 busIndex, uint32 latencyInSamples)=0
Definition ivstaudioprocessor.h:259
virtual tresult PLUGIN_API setProcessing(TBool state)=0
virtual tresult PLUGIN_API setupProcessing(ProcessSetup &setup)=0
virtual tresult PLUGIN_API process(ProcessData &data)=0
static const FUID iid
Definition ivstaudioprocessor.h:331
virtual tresult PLUGIN_API getBusArrangement(BusDirection dir, int32 index, SpeakerArrangement &arr)=0
virtual uint32 PLUGIN_API getTailSamples()=0
virtual tresult PLUGIN_API setBusArrangements(SpeakerArrangement *inputs, int32 numIns, SpeakerArrangement *outputs, int32 numOuts)=0
virtual uint32 PLUGIN_API getLatencySamples()=0
virtual tresult PLUGIN_API canProcessSampleSize(int32 symbolicSampleSize)=0
Definition ivstevents.h:197
Definition ivstparameterchanges.h:120
Definition ivstaudioprocessor.h:400
static const FUID iid
Definition ivstaudioprocessor.h:418
Flags
Definition ivstaudioprocessor.h:403
@ kNeedSamplesToNextClock
Definition ivstaudioprocessor.h:409
@ kNeedSystemTime
Definition ivstaudioprocessor.h:404
@ kNeedChord
Definition ivstaudioprocessor.h:412
@ kNeedContinousTimeSamples
Definition ivstaudioprocessor.h:405
@ kNeedProjectTimeMusic
Definition ivstaudioprocessor.h:406
@ kNeedFrameRate
Definition ivstaudioprocessor.h:413
@ kNeedTempo
Definition ivstaudioprocessor.h:410
@ kNeedTransportState
Definition ivstaudioprocessor.h:414
@ kNeedTimeSignature
Definition ivstaudioprocessor.h:411
@ kNeedBarPositionMusic
Definition ivstaudioprocessor.h:407
@ kNeedCycleMusic
Definition ivstaudioprocessor.h:408
virtual uint32 PLUGIN_API getProcessContextRequirements()=0
#define DECLARE_CLASS_IID(ClassName, l1, l2, l3, l4)
Definition funknown.h:74
JSAMPIMAGE data
Definition jpeglib.h:945
Definition ivstaudioprocessor.h:44
const CString kFx
others type (not categorized)
Definition ivstaudioprocessor.h:55
const CString kUpDownMix
used for Mixconverter/Up-Mixer/Down-Mixer
Definition ivstaudioprocessor.h:84
const CString kAnalyzer
Meter, Scope, FFT-Display, not selectable as insert plug-in.
Definition ivstaudioprocessor.h:85
const CString kFxInstrumentExternal
Fx which could be loaded as Instrument too and is external (wrapped Hardware).
Definition ivstaudioprocessor.h:57
const CString kFxSpatial
MonoToStereo, StereoEnhancer,...
Definition ivstaudioprocessor.h:58
const CString kFxPitchShift
Pitch Processing, Pitch Correction, Vocal Tuning...
Definition ivstaudioprocessor.h:62
const CString kOnlyARA
used for plug-ins that require ARA to operate (will not work as normal insert plug-in)
Definition ivstaudioprocessor.h:81
const CString kFxAnalyzer
Scope, FFT-Display, Loudness Processing...
Definition ivstaudioprocessor.h:49
const CString kSurround
used for Surround only plug-in [optional]
Definition ivstaudioprocessor.h:90
const CString kFxReverb
Reverberation, Room Simulation, Convolution Reverb...
Definition ivstaudioprocessor.h:64
const CString kInstrumentSynth
Instrument based on Synthesis.
Definition ivstaudioprocessor.h:74
const CString kFxDynamics
Compressor, Expander, Gate, Limiter, Maximizer, Tape Simulator, EnvelopeShaper...
Definition ivstaudioprocessor.h:52
const CString kFxTools
Volume, Mixer, Tuner...
Definition ivstaudioprocessor.h:66
const CString kFxDelay
Delay, Multi-tap Delay, Ping-Pong Delay...
Definition ivstaudioprocessor.h:50
const CString kFxEQ
Equalization, Graphical EQ...
Definition ivstaudioprocessor.h:53
const CString kFxModulation
Phaser, Flanger, Chorus, Tremolo, Vibrato, AutoPan, Rotary, Cloner...
Definition ivstaudioprocessor.h:61
const CString kSpatialFx
used for SurroundPanner and as insert effect
Definition ivstaudioprocessor.h:78
const CString kNoOfflineProcess
will be NOT used for plug-in offline processing (will work as normal insert plug-in)
Definition ivstaudioprocessor.h:83
const CString kInstrument
Effect used as instrument (sound generator), not as insert.
Definition ivstaudioprocessor.h:69
const CString kFxSurround
dedicated to surround processing: LFE Splitter, Bass Manager...
Definition ivstaudioprocessor.h:65
const CString kInstrumentSynthSampler
Instrument based on Synthesis and Samples.
Definition ivstaudioprocessor.h:75
const CString kSpatial
used for SurroundPanner
Definition ivstaudioprocessor.h:77
const CString kStereo
used for Stereo only plug-in [optional]
Definition ivstaudioprocessor.h:89
const CString kInstrumentExternal
External Instrument (wrapped Hardware).
Definition ivstaudioprocessor.h:71
const CString kOnlyRealTime
indicates that it supports only realtime process call, no processing faster than realtime
Definition ivstaudioprocessor.h:79
const CString kFxRestoration
Denoiser, Declicker,...
Definition ivstaudioprocessor.h:63
const CString kOnlyOfflineProcess
used for plug-in offline processing (will not work as normal insert plug-in)
Definition ivstaudioprocessor.h:80
const CString kInstrumentPiano
Instrument for Piano sounds.
Definition ivstaudioprocessor.h:72
const CString kInstrumentDrum
Instrument for Drum sounds.
Definition ivstaudioprocessor.h:70
const CString kAmbisonics
used for Ambisonics channel (FX or Panner/Mixconverter/Up-Mixer/Down-Mixer when combined with other c...
Definition ivstaudioprocessor.h:86
const CString kInstrumentSampler
Instrument based on Samples.
Definition ivstaudioprocessor.h:73
const CString kFxInstrument
Fx which could be loaded as Instrument too.
Definition ivstaudioprocessor.h:56
const CString kFxDistortion
Amp Simulator, Sub-Harmonic, SoftClipper...
Definition ivstaudioprocessor.h:51
const CString kFxNetwork
using Network
Definition ivstaudioprocessor.h:67
const CString kFxFilter
WahWah, ToneBooster, Specific Filter,...
Definition ivstaudioprocessor.h:54
const CString kMono
used for Mono only plug-in [optional]
Definition ivstaudioprocessor.h:88
const CString kFxGenerator
Tone Generator, Noise Generator...
Definition ivstaudioprocessor.h:59
const CString kFxMastering
Dither, Noise Shaping,...
Definition ivstaudioprocessor.h:60
double Sample64
64-bit precision audio sample
Definition vsttypes.h:92
ComponentFlags
Definition ivstaudioprocessor.h:99
@ kDistributable
Component can be run on remote computer.
Definition ivstaudioprocessor.h:101
@ kSimpleModeSupported
Component supports simple IO mode (or works in simple mode anyway) see vst3IoMode.
Definition ivstaudioprocessor.h:102
static const uint32 kInfiniteTail
Definition ivstaudioprocessor.h:159
ProcessModes
Definition ivstaudioprocessor.h:139
@ kRealtime
realtime processing
Definition ivstaudioprocessor.h:140
@ kOffline
offline processing
Definition ivstaudioprocessor.h:142
@ kPrefetch
prefetch processing
Definition ivstaudioprocessor.h:141
float Sample32
32-bit precision audio sample
Definition vsttypes.h:91
static const uint32 kNoTail
Definition ivstaudioprocessor.h:151
double SampleRate
sample rate
Definition vsttypes.h:93
int32 BusDirection
bus direction (in/out)
Definition vsttypes.h:70
uint64 SpeakerArrangement
Bitset of speakers.
Definition vsttypes.h:98
const char8 * CString
C-String.
Definition vsttypes.h:64
SymbolicSampleSizes
Definition ivstaudioprocessor.h:111
@ kSample32
32-bit precision
Definition ivstaudioprocessor.h:112
@ kSample64
64-bit precision
Definition ivstaudioprocessor.h:113
Definition baseiids.cpp:43
unsigned long long uint64
Definition ftypes.h:67
int int32
Definition ftypes.h:50
static const uint32 kMaxInt32u
Definition ftypes.h:58
uint8 TBool
Definition ftypes.h:89
int32 tresult
Definition ftypes.h:76
unsigned int uint32
Definition ftypes.h:51
Definition ivstaudioprocessor.h:192
int32 numChannels
number of audio channels in bus
Definition ivstaudioprocessor.h:196
Sample64 ** channelBuffers64
sample buffers to process with 64-bit precision
Definition ivstaudioprocessor.h:201
uint64 silenceFlags
Bitset of silence state per channel.
Definition ivstaudioprocessor.h:197
AudioBusBuffers()
Definition ivstaudioprocessor.h:193
Sample32 ** channelBuffers32
sample buffers to process with 32-bit precision
Definition ivstaudioprocessor.h:200
Definition ivstprocesscontext.h:97
Definition ivstaudioprocessor.h:214
IEventList * inputEvents
incoming events for this block (optional)
Definition ivstaudioprocessor.h:242
int32 symbolicSampleSize
sample size - value of SymbolicSampleSizes
Definition ivstaudioprocessor.h:233
AudioBusBuffers * inputs
buffers of input busses
Definition ivstaudioprocessor.h:237
AudioBusBuffers * outputs
buffers of output busses
Definition ivstaudioprocessor.h:238
int32 numInputs
number of audio input busses
Definition ivstaudioprocessor.h:235
ProcessContext * processContext
processing context (optional, but most welcome)
Definition ivstaudioprocessor.h:244
int32 processMode
processing mode - value of ProcessModes
Definition ivstaudioprocessor.h:232
IEventList * outputEvents
outgoing events for this block (optional)
Definition ivstaudioprocessor.h:243
IParameterChanges * outputParameterChanges
outgoing parameter changes for this block (optional)
Definition ivstaudioprocessor.h:241
ProcessData()
Definition ivstaudioprocessor.h:215
int32 numOutputs
number of audio output busses
Definition ivstaudioprocessor.h:236
int32 numSamples
number of samples to process
Definition ivstaudioprocessor.h:234
IParameterChanges * inputParameterChanges
incoming parameter changes for this block
Definition ivstaudioprocessor.h:240
Definition ivstaudioprocessor.h:166
int32 symbolicSampleSize
SymbolicSampleSizes
Definition ivstaudioprocessor.h:169
int32 maxSamplesPerBlock
maximum number of samples per audio block
Definition ivstaudioprocessor.h:170
int32 processMode
ProcessModes
Definition ivstaudioprocessor.h:168
SampleRate sampleRate
sample rate
Definition ivstaudioprocessor.h:171