55 bool needsFFT()
const override {
return true; }
57 const char*
getName()
const override {
return "ChordDetector"; }
58 void reset()
override;
function_list< void()> onChordEnd
bool isSimilarChord(const Chord &a, const Chord &b)
flat_map< int, const ChordTemplate * > mTemplateMap
void setMinDuration(u32 ms)
void normalizeChroma(float *chroma)
function_list< void(const Chord &chord)> onChord
float chromaDistance(const float *a, const float *b)
void setConfidenceThreshold(float threshold)
function_list< void(const Chord &chord)> onChordChange
float mConfidenceThreshold
ChordDetector() FL_NOEXCEPT
void calculateChroma(const fft::Bins &fft)
void update(shared_ptr< Context > context) override
void fireCallbacks() override
float matchChordPattern(const float *chroma, int root, ChordType type)
bool needsFFT() const override
shared_ptr< const fft::Bins > mRetainedFFT
const char * getName() const override
~ChordDetector() FL_NOEXCEPT override
Chord detectChord(const float *chroma, u32 timestamp)
bool needsFFTHistory() const override
void initializeTemplateMap()
const Chord & getCurrentChord() const
Base definition for an LED controller.
const char * getTypeName() const
Chord(int root, ChordType t, float conf, u32 ts)
const char * getRootName() const