SpectralEqualizer applies frequency-dependent gain correction to address mid-frequency dominance and ...
float mEqBuffer[kNumBins]
void computeBinCenters(float *out) const FL_NO_EXCEPT
MicProfile mCurrentMicProfile
void update(shared_ptr< Context > context) FL_NO_EXCEPT override
const float * getBins() const FL_NO_EXCEPT
vector< AttackDecayFilter< float > > mBinMaxFilters
float getDominantFreqHz() const FL_NO_EXCEPT
AttackDecayFilter< float > mVolumeMax
float mPinkNoiseGains[kNumBins]
float getVolumeNormFactor() const FL_NO_EXCEPT
bool getIsSilence() const FL_NO_EXCEPT
bool mUseAttackDecaySmoothing
float getVolumeDb() const FL_NO_EXCEPT
bool needsFFT() const FL_NO_EXCEPT override
void fireCallbacks() FL_NO_EXCEPT override
static constexpr float kFFTDownscale
const char * getName() const FL_NO_EXCEPT override
vector< AttackDecayFilter< float > > mBinOutputFilters
void configure(const EqualizerConfig &config) FL_NO_EXCEPT
Reconfigure equalizer tuning parameters at runtime.
float getZcf() const FL_NO_EXCEPT
float mMicGains[kNumBins]
float getAutoGain() const FL_NO_EXCEPT
float getMid() const FL_NO_EXCEPT
vector< ExponentialSmoother< float > > mBinSmoothers
void setSampleRate(int rate) FL_NO_EXCEPT override
shared_ptr< const fft::Bins > mRetainedFFT
SpectralEqualizer mSpectralEq
static constexpr int kNumBins
void recomputePinkNoiseGains() FL_NO_EXCEPT
void reset() FL_NO_EXCEPT override
function_list< void(const Equalizer &)> onEqualizer
float getBass() const FL_NO_EXCEPT
float getTreble() const FL_NO_EXCEPT
float getBin(int index) const FL_NO_EXCEPT
float getDominantMagnitude() const FL_NO_EXCEPT
float getVolume() const FL_NO_EXCEPT
EqualizerDetector() FL_NO_EXCEPT
void setMicProfile(MicProfile profile) FL_NO_EXCEPT
Set microphone correction profile (propagated from Processor).
#define constexpr
Declares that it is possible to evaluate a value at compile time, introduced in C++11.
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.
u8 u8 fract8 blur_amount FL_NO_EXCEPT
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.