21#include <pluginterfaces/base/ftypes.h>
22#include <pluginterfaces/vst/vsttypes.h>
29using namespace Steinberg;
30using namespace Steinberg::Vst;
85 return static_cast<uint32
>(ceil(
fSampleRate * iMillis / 1000.0));
91 auto oneBarInSeconds = 240.0 / iTempo;
92 if(iTimeSigNumerator != iTimeSigDenominator && iTimeSigDenominator != 0)
94 oneBarInSeconds *= (
static_cast<double>(iTimeSigNumerator) /
static_cast<double>(iTimeSigDenominator));
96 return static_cast<uint32
>(ceil(
fSampleRate * oneBarInSeconds));
102 return static_cast<uint32
>(ceil(iSampleCount * 1000.0 /
fSampleRate));
116 TSamples
getNextBarSampleCount(TSamples iCurrentSampleCount,
double iTempo, int32 iTimeSigNumerator = 4, int32 iTimeSigDenominator = 4)
const
118 auto sampleCountFor1Bar =
120 auto barMultiples = iCurrentSampleCount / sampleCountFor1Bar;
121 auto barBoundary = barMultiples * sampleCountFor1Bar;
122 if(barBoundary == iCurrentSampleCount)
123 return iCurrentSampleCount;
125 return barBoundary + sampleCountFor1Bar;
Keeps track of the time in number of samples processed vs sample rate.
Definition SampleRateBasedClock.h:51
RateLimiter(uint32 iRateLimitInSamples=0)
Definition SampleRateBasedClock.h:53
uint32 fSampleCount
Definition SampleRateBasedClock.h:73
uint32 fRateLimitInSamples
Definition SampleRateBasedClock.h:72
bool shouldUpdate(uint32 numSamples)
Calls this method when a new batch of samples is processed and returns true if the limit (in samples)...
Definition SampleRateBasedClock.h:60
RateLimiter getRateLimiter(uint32 iMillis) const
Definition SampleRateBasedClock.h:141
TSamples getNextBarSampleCount(TSamples iCurrentSampleCount, double iTempo, int32 iTimeSigNumerator=4, int32 iTimeSigDenominator=4) const
Given the current sample count (which can be extracted from ProcessData::processContext->projectTimeS...
Definition SampleRateBasedClock.h:116
SampleRate fSampleRate
Definition SampleRateBasedClock.h:147
uint32 getSampleCountFor1Bar(double iTempo, int32 iTimeSigNumerator=4, int32 iTimeSigDenominator=4) const
Definition SampleRateBasedClock.h:89
uint32 getTimeForSampleCount(uint32 iSampleCount) const
Definition SampleRateBasedClock.h:100
SampleRate getSampleRate() const
Definition SampleRateBasedClock.h:129
uint32 getSampleCountFor(uint32 iMillis) const
Definition SampleRateBasedClock.h:83
void setSampleRate(SampleRate iSampleRate)
Definition SampleRateBasedClock.h:135
SampleRateBasedClock(SampleRate iSampleRate)
Definition SampleRateBasedClock.h:77