37 const float NEUTRAL_THRESHOLD = 0.3f;
59 default:
return "unknown";
72 bool needsFFT()
const override {
return true; }
74 const char*
getName()
const override {
return "MoodAnalyzer"; }
75 void reset()
override;
float rms(fl::span< const int16_t > data)
const Mood & getCurrentMood() const
float calculateSpectralCentroid(const fft::Bins &fft)
Mood::Category getMoodCategory() const
fl::vector< float > mArousalHistory
function_list< void(float valence, float arousal)> onValenceArousal
void update(shared_ptr< Context > context) override
function_list< void(const Mood &mood)> onMoodChange
void setAveragingFrames(int frames)
void fireCallbacks() override
bool needsFFTHistory() const override
bool shouldChangeMood(const Mood &newMood)
fl::vector< float > mValenceHistory
shared_ptr< const fft::Bins > mRetainedFFT
float calculateSpectralFlux(const fft::Bins &fft, const fft::Bins *prevFFT)
float calculateSpectralRolloff(const fft::Bins &fft, float threshold=0.85f)
float calculateArousal(float rms, float zcr, float flux)
bool needsFFT() const override
float calculateValence(float centroid, float rolloff, float flux)
float mConfidenceThreshold
~MoodAnalyzer() FL_NOEXCEPT override
function_list< void(const Mood &mood)> onMood
void setMinDuration(u32 ms)
const char * getName() const override
void setConfidenceThreshold(float threshold)
float calculateConfidence(float valence, float arousal)
MoodAnalyzer() FL_NOEXCEPT
constexpr enable_if< is_fixed_point< T >::value, T >::type abs(T x) FL_NOEXCEPT
Base definition for an LED controller.
Category getCategory() const
const char * getCategoryName() const