96 bool needsFFT()
const override {
return true; }
97 const char*
getName()
const override {
return "EqualizerDetector"; }
98 void reset()
override;
111 float getBin(
int index)
const;
SpectralEqualizer applies frequency-dependent gain correction to address mid-frequency dominance and ...
float mEqBuffer[kNumBins]
float getBin(int index) const
MicProfile mCurrentMicProfile
vector< AttackDecayFilter< float > > mBinMaxFilters
float getVolumeDb() const
void setMicProfile(MicProfile profile)
Set microphone correction profile (propagated from Processor).
bool getIsSilence() const
void setSampleRate(int rate) override
EqualizerDetector() FL_NOEXCEPT
AttackDecayFilter< float > mVolumeMax
float mPinkNoiseGains[kNumBins]
bool mUseAttackDecaySmoothing
float getDominantFreqHz() const
static constexpr float kFFTDownscale
bool needsFFT() const override
vector< AttackDecayFilter< float > > mBinOutputFilters
void configure(const EqualizerConfig &config)
Reconfigure equalizer tuning parameters at runtime.
float mMicGains[kNumBins]
float getDominantMagnitude() const
vector< ExponentialSmoother< float > > mBinSmoothers
shared_ptr< const fft::Bins > mRetainedFFT
SpectralEqualizer mSpectralEq
static constexpr int kNumBins
void recomputePinkNoiseGains()
void computeBinCenters(float *out) const
float getVolumeNormFactor() const
void update(shared_ptr< Context > context) override
function_list< void(const Equalizer &)> onEqualizer
float getAutoGain() const
const float * getBins() const
void fireCallbacks() override
const char * getName() const override
FFTScalingMode
FFT bin scaling mode applied before per-bin normalization.
@ Logarithmic
Log10(1 + magnitude) — compresses high peaks.
@ Linear
Identity (same as None, explicit name for WLED compat)
@ None
Raw magnitudes (no scaling)
@ SquareRoot
Square root of magnitude (WLED-MM default, good perceptual balance)
float outputAttack
Output smoothing with separate attack/decay (dynamics limiter).
float normAttack
Normalization attack time (seconds)
float minFreq
Low end of spectrum (Hz). Must be >= FFT bin width (sampleRate/fftSize, e.g. 86 Hz at 44100/512) to e...
float silenceThreshold
Raw RMS threshold for silence detection.
FFTScalingMode scalingMode
FFT bin scaling mode applied to raw magnitudes before normalization.
float outputDecay
Output decay time (seconds). 0 = use smoothing tau.
EqualizationCurve curve
Spectral equalization curve applied to FFT bins before normalization.
float normDecay
Normalization decay time (seconds)
float smoothing
Bin temporal smoothing (ExponentialSmoother tau, used as attack)
float maxFreq
High end of spectrum (Hz)
Configuration for the equalizer detector.
MicProfile
Microphone frequency response correction profile.
@ None
No correction (flat response assumed)
EqualizationCurve
Equalization curve type.
Base definition for an LED controller.
span< const float, kNumBins > bins
16 bins, each 0.0-1.0
float volumeNormFactor
Volume normalization factor (1/volumeMax). Higher = quieter input was scaled more.
float dominantFreqHz
Frequency of strongest bin (Hz)
float volume
0.0-1.0 (self-normalized RMS)
static constexpr int kNumBins
bool isSilence
True when input signal is effectively silent.
float dominantMagnitude
Magnitude of strongest bin (0.0-1.0, normalized)
float volumeDb
Volume in approximate dB (roughly -100 to 0)
float zcf
0.0-1.0 (zero-crossing factor)
Snapshot of equalizer state, passed to onEqualizer callbacks.