static constexpr size TREBLE_BIN_END
FrequencyRange getBinFrequencyRange(size binIndex) const FL_NO_EXCEPT
void configure(const FrequencyBinMapperConfig &config) FL_NO_EXCEPT
Configure the frequency bin mapper This calculates bin boundaries and FFT-to-frequency bin mappings.
static constexpr size TREBLE_BIN_START
float getBassEnergy(span< const float > frequencyBins) const FL_NO_EXCEPT
Get bass energy (average of bins 0-1 in 16-bin mode)
void calculateLogFrequencies() FL_NO_EXCEPT
Calculate logarithmically-spaced frequency boundaries.
float frequencyToFFTBin(float frequency) const FL_NO_EXCEPT
Convert frequency (Hz) to FFT bin index.
static constexpr size BASS_BIN_START
Bass/mid/treble bin indices (for 16-bin mode) These are pre-calculated based on the bin count.
FrequencyBinMapper() FL_NO_EXCEPT
vector< float > mBinFrequencies
Pre-calculated frequency boundaries for each output bin Size: numBins + 1 (includes both lower and up...
void calculateLinearFrequencies() FL_NO_EXCEPT
Calculate linearly-spaced frequency boundaries.
float getTrebleEnergy(span< const float > frequencyBins) const FL_NO_EXCEPT
Get treble energy (average of bins 14-15 in 16-bin mode)
FrequencyBinMapperConfig mConfig
const Stats & getStats() const FL_NO_EXCEPT
static constexpr size MID_BIN_END
size getNumBins() const FL_NO_EXCEPT
Get number of output bins (16 or 32)
float getMidEnergy(span< const float > frequencyBins) const FL_NO_EXCEPT
Get mid energy (average of bins 6-7 in 16-bin mode)
static constexpr size BASS_BIN_END
void calculateBinBoundaries() FL_NO_EXCEPT
Calculate frequency bin boundaries (linear or logarithmic spacing)
void calculateBinMappings() FL_NO_EXCEPT
Calculate FFT bin to frequency bin mappings Pre-calculates which FFT bins contribute to each frequenc...
void mapBins(span< const float > fftBins, span< float > outputBins) const FL_NO_EXCEPT
Map FFT bins to frequency channels.
~FrequencyBinMapper() FL_NO_EXCEPT
const FrequencyBinMapperConfig & getConfig() const FL_NO_EXCEPT
Get current configuration.
vector< BinMapping > mBinMappings
static constexpr size MID_BIN_START
Get frequency boundaries for a specific output bin.
Mapping from output bins to FFT bin ranges Each entry contains (startBin, endBin) for averaging.
Get statistics (for debugging/monitoring)
FrequencyBinMode
Frequency bin mode - controls number of output bins.
bool useLogSpacing
Use logarithmic spacing (recommended for audio) Logarithmic spacing provides better bass/mid/treble s...
u32 fftBinCount
Number of FFT bins available from FFT output For 512-sample FFT at 22050 Hz: 256 bins (512/2)
float minFrequency
Minimum frequency (Hz) - default 20 Hz (bass)
float maxFrequency
Maximum frequency (Hz) - default 16000 Hz (treble)
u32 sampleRate
Sample rate (Hz) - must match FFT sample rate.
FrequencyBinMode mode
Number of output frequency bins (16 or 32)
Configuration for frequency bin mapping.
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Base definition for an LED controller.