Browse Source

Simplify vst2 and vst3 transport code

Signed-off-by: falkTX <falktx@falktx.com>
pull/321/head
falkTX 2 years ago
parent
commit
b8288d44ee
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
2 changed files with 7 additions and 5 deletions
  1. +4
    -3
      distrho/src/DistrhoPluginVST2.cpp
  2. +3
    -2
      distrho/src/DistrhoPluginVST3.cpp

+ 4
- 3
distrho/src/DistrhoPluginVST2.cpp View File

@@ -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<int32_t>(ppqPos) / ppqPerBar + 1;
fTimePosition.bbt.beat = static_cast<int32_t>(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;


+ 3
- 2
distrho/src/DistrhoPluginVST3.cpp View File

@@ -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<int32_t>(ppqPos) / ppqPerBar + 1;
fTimePosition.bbt.beat = static_cast<int32_t>(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;


Loading…
Cancel
Save