Map FFT bins to frequency channels.
- Parameters
-
| fftBins | Input FFT bins (magnitude spectrum) |
| outputBins | Output frequency bins (16 or 32 bins depending on mode) |
Definition at line 121 of file frequency_bin_mapper.cpp.hpp.
121 {
122 const size numBins =
static_cast<size
>(
mConfig.mode);
123
124
125 if (outputBins.size() < numBins) {
126 FL_WARN(
"FrequencyBinMapper: output buffer too small (" << outputBins.size() <<
" < " << numBins <<
")");
127 return;
128 }
129
130
131 float maxMag = 0.0f;
132 u32 fftBinsUsed = 0;
133
134
135 for (size i = 0; i < numBins; ++i) {
137
138 float sum = 0.0f;
139 u32 count = 0;
140
141
142 for (u32 j = mapping.startBin; j < mapping.endBin && j < fftBins.size(); ++j) {
143 sum += fftBins[j];
144 ++count;
145 ++fftBinsUsed;
146
147 if (fftBins[j] > maxMag) {
148 maxMag = fftBins[j];
149 }
150 }
151
152
153 if (count > 0) {
154 outputBins[i] = sum / static_cast<float>(count);
155 } else {
156 outputBins[i] = 0.0f;
157 }
158 }
159
160
164}
FrequencyBinMapper() FL_NO_EXCEPT
FrequencyBinMapperConfig mConfig
vector< BinMapping > mBinMappings
Mapping from output bins to FFT bin ranges Each entry contains (startBin, endBin) for averaging.
References FrequencyBinMapper(), fl::audio::FrequencyBinMapper::BinMapping::endBin, fl::FL_NO_EXCEPT, FL_WARN, mBinMappings, mConfig, mStats, and fl::audio::FrequencyBinMapper::BinMapping::startBin.
Referenced by ~FrequencyBinMapper().