float rms(fl::span< const int16_t > data)
float getTrebleEnergy(const fft::Bins &fft) const
float calculateEnergyFlux(float currentRMS) const
function_list< void(const Drop &)> onDropEvent
bool shouldTriggerDrop(float impact, u32 timestamp) const
function_list< void()> onDrop
float mEnergyFluxThreshold
float calculateBassFlux(float currentBass) const
void setImpactThreshold(float threshold) FL_NO_EXCEPT
void(*)(const Drop &) DropCallback
void(*)(float) ImpactCallback
void update(shared_ptr< Context > context) FL_NO_EXCEPT override
float getBassEnergy(const fft::Bins &fft) const
DropDetector() FL_NO_EXCEPT
void setEnergyFluxThreshold(float threshold)
void setMinTimeBetweenDrops(u32 ms)
void setBassThreshold(float threshold)
float getCurrentImpact(shared_ptr< Context > context) const
float calculateDropImpact(float energyFlux, float bassFlux, float spectralNovelty, float rms) const
const Drop & getLastDrop() const
function_list< void(float impact)> onDropImpact
float getMidEnergy(const fft::Bins &fft) const
void updateBaselines(float rms, float bass)
void reset() FL_NO_EXCEPT override
float calculateSpectralNovelty(float bass, float mid, float treble) const
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Base definition for an LED controller.
Drop() FL_NO_EXCEPT=default