From 736b223af831c8c068a1dae568cedafc1099a5d5 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sat, 12 Jun 2021 20:36:22 +0200 Subject: [PATCH] Set the audioMasterGetTime flags Apparently this is a thing, and Ardour is the only DAW that respects them. --- CHANGELOG.md | 3 +++ src/plugin/bridges/vst2.cpp | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c19d589e..c1946804 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,9 @@ Versioning](https://semver.org/spec/v2.0.0.html). ### Fixed +- Fixed missing transport information for VST2 plugins in **Ardour**, breaking + host sync and LFOs in certain plugins. This was a regression from yabridge + 3.2.0. - Fixed _Insert Piz Here_'s _midiLooper_ crashing in **REAPER** when the plugin tries to use REAPER's [host function API](https://www.reaper.fm/sdk/vst/vst_ext.php#vst_host) which currently isn't diff --git a/src/plugin/bridges/vst2.cpp b/src/plugin/bridges/vst2.cpp index fbceb1c4..5427eb75 100644 --- a/src/plugin/bridges/vst2.cpp +++ b/src/plugin/bridges/vst2.cpp @@ -619,9 +619,14 @@ void Vst2PluginBridge::do_process(T** inputs, T** outputs, int sample_frames) { // To prevent unnecessary bridging overhead, we'll send the time information // together with the buffers because basically every plugin needs this + // NOTE: Apparently the value parameter here is a bitfield controlling which + // for which transport information gets populated, and Ardour is the + // only DAW that uses this. Since those flags aren't part of the + // VeSTige headers, let's just set all of them! const VstTimeInfo* returned_time_info = - reinterpret_cast(host_callback_function( - &plugin, audioMasterGetTime, 0, 0, nullptr, 0.0)); + reinterpret_cast( + host_callback_function(&plugin, audioMasterGetTime, 0, + ~static_cast(0), nullptr, 0.0)); if (returned_time_info) { request.current_time_info = *returned_time_info; } else {