Changing latency for offline processing mode

I have a plugin where I want to have different latency sample values between realtime and offline processing. When switching to offline mode, it does not appear that the DAW is using the new latency value for the freeze / render process. Is this functionality not supported? If not, is there an alternative way to achieve this feature?

Here is what I’ve observed when running from Ableton:

  • I click to freeze my track in the DAW

  • The host calls setProcessMode as expected and passes the kOffline state.

  • I send the message from my processor to the controller to send the restartComponent(kLatencyChanged) message.

  • The host calls getLatencySamples as expected to get the new value.

  • The host proceeds to send the audio to the process block as expected

  • The frozen track does not use the new latency (there’s silence at the beginning of the track corresponding to the delta between the original latency and the new one set during setupProcessing).

  • I’ve tried several debug setups to confirm that my latency change requests are being used if I set it prior to clicking the freeze track button. I believe this means that I’ve implemented the messaging and processing correctly.

  • I’ve reviewed the Latency Call Sequence and Audio ProcessorCall Sequence diagrams on the help site (linked below), but I don’t believe they indicate whether changing latency during the setupProcessing is supported.

https://steinbergmedia.github.io/vst3_dev_portal/pages/Technical+Documentation/Workflow+Diagrams/Get+Latency+Call+Sequence.html

Thank you,
Ryan

It is allow to call restartComponent(kLatencyChanged) (in Controller) after the setupProcessing (in Processor). Changing the samplerate may have an impact of the latency (in Samples).
There is something wrong with Ableton here…
Did you try with Cubase in the DOP (Direct Offline Processing)?

Cheers
Yvan

I grabbed a trial of Cubase Pro today to get access to plugin enabled DOP, and it’s working fine. It seems like either Ableton is doing something weird, or I have a bug that’s causing it to get treated differently between the platforms.

In any case, thank you very much for confirming what I want to do should be possible with the SDK. I’ll spend more time with Cubase to figure out what’s different.