What data is sent to process blocks when built as vst?

When I specify that want to create an audio plugin, does the sample in process block represent the signal being fed into the plugin via the host or is it still talking to the input device? i ask this because my plugin is designed to sit at the end of the chain after recording, and it plays the master back into a buffer and edits said buffer before exporting to wav, mp3, etc… how do i tell process blocks i don’t want the real time data, but the recorded data from the host? I see the AudioPlayHead class… would calling rewind, then play send the signal I’m after to the process block method?

The plugin will sit, where ever your user puts it. You have to be prepared, that this can be any slot in any track. If it only works on the master track, you have to educate your user to do so (which will have an impact on the acceptance of your product.

When you aim to use the rewind function, be aware that not many hosts implement that, and from a users point of view, I wouldn’t want to have a plugin somewhere in my project taking control over the transport controls… but you will have to try in the host you are targeting.

The processBlock always contains the audio going through. Think of it as a stompbox, anything beyond might or might not work depending on many factors…


JUCE does not support doing that with the plugin formats it implements. (As that kind of functionality is not generally even available with the common plugin formats.)

You may want to look into the ARA (Audio Random Access) specification, which allows you to access audio data from a track in a host.

More info here: http://www.celemony.com/en/service1/about-celemony/technologies

Celemony also recently announced ARA2: ARA (Audio Random Access) plug-in extension

Note that it is not as widespread an interface as VST2/VST3/AU/…, but some DAWs seem to use it now: “On the DAW side, ARA is currently supported by Presonus Studio One, Cakewalk Sonar, Magix Samplitude Pro, Acoustica Mixcraft and Tracktion Waveform”.
And Logic 10.4 also supports it apparently: “With Logic Pro X 10.4, Apple is supporting the ARA 2 interface extension.”

JUCE however does not have built-in support for doing ARA plugins, so the JUCE source code would have to be altered to be able to do it.

Yes, that’s right!