How to realize in VST plugin another process on mixdown?

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Hi!

How to realize in VST plugin another process on mixdown? (I use VST SDK 2.4)

Thanks in advance.

Post

you mean you want to detect when the host is rendering the output (not in realtime mode) and change your process based upon that?

if that is what you want to do, you can call getCurrentProcessLevel() in process(), processevents(), and resume(). hosts are supposed to update the process level and call resume before beginning to process events, however this will not always happen (naughty hosts) and so you will need to actually check on every call to process() in order to be sure. some hosts do not even support process-level and some may update it at odd (not useful) times.

if you want to write a plugin which follows the spec directly, you should call getCurrentProcessLevel() inside your resume() function. the levels should be 0 = realtime/normal, 1 = non-realtime/rendering, 2 = offline processing (i think?)

check the "sdk" headers for the comments about this function.

the sequence of events should be:

- plugin initialization
- setsamplerate() called
- host dependent initialization, opening editor, etc
- resume() called
if something changes in the host, for example rendering is requested, or the track is rewound and replayed:

- suspend() called
- the host changes it's internal flags and reconfigures things
- resume() called
- rendering calls to process()/others begin

like i said though not all hosts will behave in this way. some might go directly into offline processing or rendering without calling suspend()/resume() at all, and some may not bother to update flags.

Post

Thank you! I use getCurrentProcessLevel() value for switch process - it work (test in Cubase SX 3). In VST SDK 2.4 for rendering getCurrentProcessLevel() value = 2.
Miracles do not happen.
http://nickcrowlab.blogspot.com/

Post Reply

Return to “DSP and Plugin Development”