[Solved] Direct offline processing problem (Cubase 9.5)

Our software has a problem when used for Direct Offline Processing in Cubase 9.5. This feature apparently creates some kind of “shadow” instance of the plug-in, and sends that instance the chunk data from the instance the user interacts with, in order to perform the processing. The problem is that our software skips certain chunk data when running in offline mode, and this new instance uses that offline mode flag, which causes the data to be skipped and our processing to fail to use the data.

What we need is a way for our software to know that it is receiving data for this new feature, and thus it should NOT skip this chunk data. But I don’t see any way to do that. There is no Direct Offline Processing flag. If there were, and Cubase set that flag instead of the normal offline flag, then our software would work fine.

As a background, the reason we’re skipping certain data in offline modes is that some hosts (I forget if Cubase was one of them) cache the last state of an offline instance, and send that chunk data to the plug-in again when opening a new instance in offline mode. That’s fine for parameters, but for this plug-in, we have data that is related to the audio that the user can edit, and if they open the plug-in using different audio (such as on a different track), then we don’t want any of that audio-specific data to be retained. To keep users from having to delete that unwanted data, we simply skip loading it when in offline mode. But this breaks the new Direct Offline Processing feature.

Is there any way to detect that this new feature is in use? If not, then would it be possible to ADD that ability in Cubase? All it would take would be a new flag under ProcessModes, such as kDirectOffline instead of simply kOffline, for example. That would allow our software to work as is, because it currently only looks for kOffline to detect if it should skip loading that data.


Hi Howard

When a plugin will be used in a offline processing context (which is the case with Cubase 9.5/Nuendo 8 feature: Direct offline processing), its component will be initialized with setIoMode (Vst::kOfflineProcessing).

The offline processing mode (passed in the process call) is used when:
[] the user exports audio (downmix)
] direct offline processing feature

With setIoMode (Vst::kOfflineProcessing) you are able to differentiate between export and DOP (Direct Offline Processing)

Best Regards