Browse Source

Make TimePosition::BarBeatTick::tick a double

Signed-off-by: falkTX <falktx@falktx.com>
pull/277/head
falkTX 4 years ago
parent
commit
1083a86dd7
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
3 changed files with 11 additions and 10 deletions
  1. +2
    -1
      distrho/DistrhoPlugin.hpp
  2. +6
    -6
      distrho/src/DistrhoPluginLV2.cpp
  3. +3
    -3
      distrho/src/DistrhoPluginVST.cpp

+ 2
- 1
distrho/DistrhoPlugin.hpp View File

@@ -569,8 +569,9 @@ struct TimePosition {
Current tick within beat.@n
Should always be >= 0 and < @a ticksPerBeat.@n
The first tick is tick '0'.
@note Fraction part of tick is only available on some plugin formats.
*/
int32_t tick;
double tick;

/**
Number of ticks that have elapsed between frame 0 and the first beat of the current measure.


+ 6
- 6
distrho/src/DistrhoPluginLV2.cpp View File

@@ -223,10 +223,10 @@ public:
#if DISTRHO_PLUGIN_WANT_TIMEPOS
fTimePosition.clear();

// hosts may not send all values, resulting on some invalid data
// hosts may not send all values, resulting on some invalid data, let's reset everything
fTimePosition.bbt.bar = 1;
fTimePosition.bbt.beat = 1;
fTimePosition.bbt.tick = 0;
fTimePosition.bbt.tick = 0.0;
fTimePosition.bbt.barStartTick = 0;
fTimePosition.bbt.beatsPerBar = 4;
fTimePosition.bbt.beatType = 4;
@@ -441,8 +441,8 @@ public:
if (fLastPositionData.barBeat >= 0.0f)
{
const double rest = std::fmod(fLastPositionData.barBeat, 1.0f);
fTimePosition.bbt.beat = std::round(fLastPositionData.barBeat-rest+1.0);
fTimePosition.bbt.tick = rest*fTimePosition.bbt.ticksPerBeat+0.5;
fTimePosition.bbt.beat = std::round(fLastPositionData.barBeat - rest + 1.0);
fTimePosition.bbt.tick = rest * fTimePosition.bbt.ticksPerBeat;
}
}

@@ -643,8 +643,8 @@ public:
(double)fLastPositionData.beatsPerBar);

const double rest = std::fmod(fLastPositionData.barBeat, 1.0f);
fTimePosition.bbt.beat = std::round(fLastPositionData.barBeat-rest+1.0);
fTimePosition.bbt.tick = rest*fTimePosition.bbt.ticksPerBeat+0.5;
fTimePosition.bbt.beat = std::round(fLastPositionData.barBeat - rest + 1.0);
fTimePosition.bbt.tick = rest * fTimePosition.bbt.ticksPerBeat;

if (fLastPositionData.bar >= 0)
{


+ 3
- 3
distrho/src/DistrhoPluginVST.cpp View File

@@ -1036,7 +1036,7 @@ public:

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 = static_cast<int32_t>(rest * fTimePosition.bbt.ticksPerBeat + 0.5);
fTimePosition.bbt.tick = rest * fTimePosition.bbt.ticksPerBeat;
fTimePosition.bbt.beatsPerBar = vstTimeInfo->timeSigNumerator;
fTimePosition.bbt.beatType = vstTimeInfo->timeSigDenominator;

@@ -1044,14 +1044,14 @@ public:
{
--fTimePosition.bbt.bar;
fTimePosition.bbt.beat = vstTimeInfo->timeSigNumerator - fTimePosition.bbt.beat + 1;
fTimePosition.bbt.tick = int(fTimePosition.bbt.ticksPerBeat) - fTimePosition.bbt.tick - 1;
fTimePosition.bbt.tick = fTimePosition.bbt.ticksPerBeat - fTimePosition.bbt.tick - 1;
}
}
else
{
fTimePosition.bbt.bar = 1;
fTimePosition.bbt.beat = 1;
fTimePosition.bbt.tick = 0;
fTimePosition.bbt.tick = 0.0;
fTimePosition.bbt.beatsPerBar = 4.0f;
fTimePosition.bbt.beatType = 4.0f;
}


Loading…
Cancel
Save