VST Calling Sequences

Introduction

The diagrams below illustrate the most important calling sequences taking place between VST host application and plug-in. This is of interest to plug-in developers as well as to host developers.


Threading issues

In general, processEvents(), startProcess(), stopProcess(), process(), processReplacing() and processDoubleReplacing() are called from a time-critical high priority thread (except for offline processing).
To satisfy realtime constraints for low latency audio processing, memory allocations and lock-based syncronisation should be avoided.
The same applies to setParameter() and setProgram() when playing automation from host. Any others functions are called from UI thread in general.
The host takes care that processing and setup functions are isolated from each other. setSampleRate(), setBlockSize(), setProcessPrecision(), etc. calls occur only in suspended state, i.e. before resume() is called.


Sequence Diagrams

Initialisation.gif

Figure 3: A plug-in is initialized

Termination.gif

Figure 4: A plug-in is terminated

TurnOn.gif

Figure 1: A plug-in is turned on

TurnOff.gif

Figure 2: A plug-in is turned off

Sampleratechange.gif

Figure 6: The sample rate changed

Blocksizechange.gif

Figure 9: The block size changed

SpeakerarrangementnegotiationforVSTfx.gif

Figure 5: The speaker arrangements negotiation between the host and the plug-in

IOchange.gif

Figure 7: The number of IOs changed caused e.g. by user interaction

ControlChanged.gif

Figure 8: A control changed within the userinterface of the plug-in

Offlineprocessing.gif

Figure 10: A plug-in processes offline

Empty


Copyright ©2006 Steinberg Media Technologies. All Rights Reserved.