58 bool needsFFT()
const override {
return true; }
60 const char*
getName()
const override {
return "BuildupDetector"; }
61 void reset()
override;
float rms(fl::span< const int16_t > data)
SavitzkyGolayFilter< float, 7 > mEnergySG
float getProgress() const
float calculateEnergyTrend() const
bool needsFFTHistory() const override
float calculateTrebleTrend() const
SavitzkyGolayFilter< float, 7 > mTrebleSG
bool needsFFT() const override
BuildupDetector() FL_NOEXCEPT
void updateEnergyHistory(float energy)
bool mFireBuildupProgress
function_list< void()> onBuildupEnd
const char * getName() const override
const Buildup & getBuildup() const
function_list< void(float progress)> onBuildupProgress
float mIntensityThreshold
float getIntensity() const
bool shouldEndBuildup() const
function_list< void(const Buildup &)> onBuildup
void update(shared_ptr< Context > context) override
~BuildupDetector() FL_NOEXCEPT override
shared_ptr< const fft::Bins > mRetainedFFT
void setIntensityThreshold(float threshold)
void setMinDuration(u32 ms)
function_list< void()> onBuildupStart
float getTrebleEnergy(const fft::Bins &fft) const
float calculateBuildupIntensity(float energyTrend, float trebleTrend, float rms) const
function_list< void()> onBuildupPeak
void setMaxDuration(u32 ms)
float mEnergyRiseThreshold
void setEnergyRiseThreshold(float threshold)
bool shouldStartBuildup(float intensity) const
void updateTrebleHistory(float treble)
void fireCallbacks() override
Base definition for an LED controller.