From b8288d44ee2784fcaa29d318ce602e8831a68b8c Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 20 Jun 2022 12:18:17 +0100 Subject: [PATCH] Simplify vst2 and vst3 transport code Signed-off-by: falkTX --- distrho/src/DistrhoPluginVST2.cpp | 7 ++++--- distrho/src/DistrhoPluginVST3.cpp | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/distrho/src/DistrhoPluginVST2.cpp b/distrho/src/DistrhoPluginVST2.cpp index 86a020bd..dd666c9b 100644 --- a/distrho/src/DistrhoPluginVST2.cpp +++ b/distrho/src/DistrhoPluginVST2.cpp @@ -1100,9 +1100,8 @@ public: if (const VstTimeInfo* const vstTimeInfo = (const VstTimeInfo*)hostCallback(audioMasterGetTime, 0, kWantVstTimeFlags)) { - fTimePosition.frame = vstTimeInfo->samplePos; - fTimePosition.playing = (vstTimeInfo->flags & kVstTransportPlaying); - fTimePosition.bbt.valid = ((vstTimeInfo->flags & kVstTempoValid) != 0 || (vstTimeInfo->flags & kVstTimeSigValid) != 0); + fTimePosition.frame = vstTimeInfo->samplePos; + fTimePosition.playing = vstTimeInfo->flags & kVstTransportPlaying; // ticksPerBeat is not possible with VST2 fTimePosition.bbt.ticksPerBeat = 1920.0; @@ -1119,6 +1118,7 @@ public: const double barBeats = (std::fmod(ppqPos, ppqPerBar) / ppqPerBar) * vstTimeInfo->timeSigNumerator; const double rest = std::fmod(barBeats, 1.0); + fTimePosition.bbt.valid = true; fTimePosition.bbt.bar = static_cast(ppqPos) / ppqPerBar + 1; fTimePosition.bbt.beat = static_cast(barBeats - rest + 0.5) + 1; fTimePosition.bbt.tick = rest * fTimePosition.bbt.ticksPerBeat; @@ -1134,6 +1134,7 @@ public: } else { + fTimePosition.bbt.valid = false; fTimePosition.bbt.bar = 1; fTimePosition.bbt.beat = 1; fTimePosition.bbt.tick = 0.0; diff --git a/distrho/src/DistrhoPluginVST3.cpp b/distrho/src/DistrhoPluginVST3.cpp index cebf2f45..8af93a08 100644 --- a/distrho/src/DistrhoPluginVST3.cpp +++ b/distrho/src/DistrhoPluginVST3.cpp @@ -1187,8 +1187,7 @@ public: #if DISTRHO_PLUGIN_WANT_TIMEPOS if (v3_process_context* const ctx = data->ctx) { - fTimePosition.playing = ctx->state & V3_PROCESS_CTX_PLAYING; - fTimePosition.bbt.valid = ctx->state & (V3_PROCESS_CTX_TEMPO_VALID|V3_PROCESS_CTX_TIME_SIG_VALID); + fTimePosition.playing = ctx->state & V3_PROCESS_CTX_PLAYING; // ticksPerBeat is not possible with VST3 fTimePosition.bbt.ticksPerBeat = 1920.0; @@ -1210,6 +1209,7 @@ public: const double barBeats = (std::fmod(ppqPos, ppqPerBar) / ppqPerBar) * ctx->time_sig_numerator; const double rest = std::fmod(barBeats, 1.0); + fTimePosition.bbt.valid = true; fTimePosition.bbt.bar = static_cast(ppqPos) / ppqPerBar + 1; fTimePosition.bbt.beat = static_cast(barBeats - rest + 0.5) + 1; fTimePosition.bbt.tick = rest * fTimePosition.bbt.ticksPerBeat; @@ -1225,6 +1225,7 @@ public: } else { + fTimePosition.bbt.valid = false; fTimePosition.bbt.bar = 1; fTimePosition.bbt.beat = 1; fTimePosition.bbt.tick = 0.0;