static constexpr size TREBLE_BIN_END
FrequencyRange getBinFrequencyRange(size binIndex) const
static constexpr size TREBLE_BIN_START
void calculateBinMappings()
Calculate FFT bin to frequency bin mappings Pre-calculates which FFT bins contribute to each frequenc...
float frequencyToFFTBin(float frequency) const
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.
float getBassEnergy(span< const float > frequencyBins) const
Get bass energy (average of bins 0-1 in 16-bin mode)
~FrequencyBinMapper() FL_NOEXCEPT
vector< float > mBinFrequencies
Pre-calculated frequency boundaries for each output bin Size: numBins + 1 (includes both lower and up...
float getMidEnergy(span< const float > frequencyBins) const
Get mid energy (average of bins 6-7 in 16-bin mode)
void mapBins(span< const float > fftBins, span< float > outputBins) const
Map FFT bins to frequency channels.
FrequencyBinMapperConfig mConfig
static constexpr size MID_BIN_END
const FrequencyBinMapperConfig & getConfig() const
Get current configuration.
static constexpr size BASS_BIN_END
void calculateLinearFrequencies()
Calculate linearly-spaced frequency boundaries.
void calculateLogFrequencies()
Calculate logarithmically-spaced frequency boundaries.
float getTrebleEnergy(span< const float > frequencyBins) const
Get treble energy (average of bins 14-15 in 16-bin mode)
void calculateBinBoundaries()
Calculate frequency bin boundaries (linear or logarithmic spacing)
size getNumBins() const
Get number of output bins (16 or 32)
vector< BinMapping > mBinMappings
const Stats & getStats() const
void configure(const FrequencyBinMapperConfig &config)
Configure the frequency bin mapper This calculates bin boundaries and FFT-to-frequency bin mappings.
static constexpr size MID_BIN_START
FrequencyBinMapper() FL_NOEXCEPT
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.
Base definition for an LED controller.