74 void update(fl::u32 currentTimeMs);
142 1.70f, 1.71f, 1.73f, 1.78f, 1.68f, 1.56f, 1.55f, 1.63f,
143 1.79f, 1.62f, 1.80f, 2.06f, 2.47f, 3.35f, 6.83f, 9.55f
166 bool detectOnset(
const float* currentBins,
const float* previousBins);
175#if SKETCH_HAS_LOTS_OF_MEMORY
177 fl::size mHistoryIndex;
178 float calculateAdaptiveThreshold();
189 void setThresholds(
float bassThresh,
float midThresh,
float trebleThresh);
192#if SKETCH_HAS_LOTS_OF_MEMORY
221 0.5f, 0.6f, 0.8f, 1.0f, 1.2f, 1.3f, 1.4f, 1.4f,
222 1.3f, 1.2f, 1.0f, 0.8f, 0.6f, 0.4f, 0.2f, 0.1f
225#if SKETCH_HAS_LOTS_OF_MEMORY
227 fl::size mHistoryIndex;
UINumberField palette("Palette", 0, 0, 2)
fl::array< float, 16 > mPreviousMagnitudes
bool isTrebleBeat() const
CRGB volumeToColor(const CRGBPalette16 &palette) const
const AudioData & getData() const
void update(fl::u32 currentTimeMs)
void processFFT(const AudioSample &sample)
fl::u8 volumeToScale255() const
void detectBeat(fl::u32 currentTimeMs)
AudioReactiveConfig mConfig
void updateSpectralFlux()
void mapFFTBinsToFrequencyChannels()
float getSpectralFlux() const
float getMidEnergy() const
float computeRMS(const fl::vector< fl::i16 > &samples)
static constexpr float PINK_NOISE_COMPENSATION[16]
void calculateBandEnergies()
void updateVolumeAndPeak(const AudioSample &sample)
float getTrebleEnergy() const
fl::unique_ptr< SpectralFluxDetector > mSpectralFluxDetector
static constexpr fl::u32 BEAT_COOLDOWN
float mapFrequencyBin(int fromBin, int toBin)
void detectEnhancedBeats(fl::u32 currentTimeMs)
void applyPerceptualWeighting()
const AudioData & getSmoothedData() const
void begin(const AudioReactiveConfig &config=AudioReactiveConfig{})
void setConfig(const AudioReactiveConfig &config)
fl::u8 frequencyToScale255(fl::u8 binIndex) const
float getBassEnergy() const
void processSample(const AudioSample &sample)
fl::unique_ptr< PerceptualWeighting > mPerceptualWeighting
void applyLoudnessCompensation(AudioData &data, float referenceLevel) const
static constexpr float A_WEIGHTING_COEFFS[16]
void applyAWeighting(AudioData &data) const
void setThreshold(float threshold)
float calculateSpectralFlux(const float *currentBins, const float *previousBins)
bool detectOnset(const float *currentBins, const float *previousBins)
fl::array< float, 16 > mPreviousMagnitudes
float getThreshold() const
A fixed-size array implementation similar to std::array.
Defines the red, green, and blue (RGB) pixel struct.
Utility functions for color fill, palettes, blending, and more.
HeapVector< T, Allocator > vector
float spectralFluxThreshold
Representation of an RGB pixel (Red, Green, Blue)
void detectBeats(const float *frequencyBins, AudioData &audioData)
void setThresholds(float bassThresh, float midThresh, float trebleThresh)
float mPreviousBassEnergy
float mPreviousTrebleEnergy
SpectralFluxDetector combined