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 {