Hi all,
I’m developing a batch audio processor using Tracktion Engine 3.2.0 and JUCE 8.0.7.Problem:When I use offline rendering (Renderer::renderToFile) to process audio with a VST3 plugin (Graillon 3), the exported audio file is almost identical to the input—no matter how I set the plugin parameters (e.g., pitch shift, wet/dry), there is no audible or waveform difference.This happens both when running in console/no-UI mode and when launching with GUI/ScopedJuceInitialiser_GUI initialized (even if the plugin UI is shown/created).
// (1) Init engine and edit
auto edit = initializeEngine(engine, Edit::EditRole::forRendering);
// (2) Load plugin (VST3)
auto plugin = createAndInitializePlugin(engine, *edit, pluginPath, pluginName);
// (3) Set plugin parameters
auto params = plugin->getAutomatableParameters();
params[18]->setParameter(1.0f, NotificationType::sendNotificationSync); // Pitch shift
params[1]->setParameter(1.0f, NotificationType::sendNotificationSync); // Wet
params[0]->setParameter(0.0f, NotificationType::sendNotificationSync); // Dry
params[63]->setParameter(1.0f, NotificationType::sendNotificationSync); // FX Enable
// (4) Setup track and wave clip
auto audioTrack = edit->insertNewAudioTrack({}, nullptr, true);
audioTrack->pluginList.insertPlugin(*plugin, 0, nullptr);
auto* clipTrack = dynamic_cast<ClipTrack*>(audioTrack.get());
auto clip = clipTrack->insertWaveClip("offline_clip", audioFile, clipPos, false);
// (5) Offline render
Renderer::Parameters renderParams(*edit);
renderParams.destFile = juce::File(outputPath);
renderParams.usePlugins = true;
renderParams.tracksToDo.setBit(0);
renderParams.allowedClips.add(clip.get());
Renderer::renderToFile("Offline render task", renderParams);
No matter what, the exported buffer is unchanged. I checked:
Plugin definitely loads (log prints OK)
Parameters after setParameter calls print correct values
Input buffer is not silent
What I’m asking
Why is offline rendering (no matter with/without UI) not producing any plugin processing?
Is there a known limitation in Tracktion Engine or JUCE host code that would cause VST3 plugins to “ignore” processing in offline/batch export?
Do I need to set a special host flag, “realtime mode”, or avoid kOffline mode for plugin rendering?
How does Waveform DAW achieve effect export in its “export”/render dialog? (I want to batch export with effects, like in Waveform)
Any advice to get VST3 plugins to process audio during offline rendering, or to “trick” the plugin/host so that effects are included in the output file?
Thanks for any insight!
(If you need to see more code, I can post the full rendering pipeline.)
