void updateHypotheses(u32 timestamp) FL_NO_EXCEPT
vector< float > mPreviousMagnitudes
float getBPM() const FL_NO_EXCEPT
void setStabilityThreshold(float threshold) FL_NO_EXCEPT
function_list< void()> onTempoUnstable
static constexpr size FLUX_HISTORY_SIZE
vector< TempoHypothesis > mHypotheses
function_list< void()> onTempoStable
float getConfidence() const FL_NO_EXCEPT
bool needsFFTHistory() const FL_NO_EXCEPT override
function_list< void(float bpm, float confidence)> onTempoWithConfidence
float getStability() const FL_NO_EXCEPT
bool isStable() const FL_NO_EXCEPT
deque< float > mBPMHistory
static constexpr size BPM_HISTORY_SIZE
void setMinBPM(float minBPM) FL_NO_EXCEPT
void update(shared_ptr< Context > context) FL_NO_EXCEPT override
void updateCurrentTempo() FL_NO_EXCEPT
static constexpr size MAX_ONSET_HISTORY
~TempoAnalyzer() FL_NO_EXCEPT override
void setMaxBPM(float maxBPM) FL_NO_EXCEPT
static constexpr u32 MIN_BEAT_INTERVAL_MS
static constexpr u32 MAX_BEAT_INTERVAL_MS
float mStabilityThreshold
void fireCallbacks() FL_NO_EXCEPT override
void updateStability() FL_NO_EXCEPT
function_list< void(float bpm)> onTempoChange
void pruneHypotheses() FL_NO_EXCEPT
float calculateSpectralFlux(const fft::Bins &fft) FL_NO_EXCEPT
void reset() FL_NO_EXCEPT override
float calculateIntervalScore(u32 interval) FL_NO_EXCEPT
void updateAdaptiveThreshold() FL_NO_EXCEPT
TempoAnalyzer() FL_NO_EXCEPT
MovingAverage< float, 43 > mFluxAvg
const char * getName() const FL_NO_EXCEPT override
MedianFilter< float, 21 > mBPMMedian
float calculateTempoConfidence(const TempoHypothesis &hyp) FL_NO_EXCEPT
bool detectOnset(u32 timestamp) FL_NO_EXCEPT
bool needsFFT() const FL_NO_EXCEPT override
shared_ptr< const fft::Bins > mRetainedFFT
SilenceEnvelope mConfidenceEnvelope
function_list< void(float bpm)> onTempo
static constexpr u32 STABLE_FRAMES_REQUIRED
static constexpr size MAX_HYPOTHESES
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Base definition for an LED controller.