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