452 {
453 const int numRawBins = fftN / 2 + 1;
456
457 const u16x16 rawBinHz(
static_cast<float>(
mSampleRate) /
458 static_cast<float>(fftN));
459 const u16x16 halfBin = rawBinHz >> 1;
460 const u16x16 fminFP(
mFmin);
461 const u16x16 fmaxFP(
mFmax);
462 const u16x16 linearBinHz(
463 (
mFmax -
mFmin) /
static_cast<float>(numLinearBins));
464
465
467 if (fminFP > halfBin) {
470 }
474
475 for (int k = 0; k < numRawBins; ++k) {
476 u16x16 freq = rawBinHz * static_cast<u32>(k);
477
478 if (freq < fminFP) {
479 lut[k] = 0;
480 continue;
481 }
482 int linIdx = static_cast<int>(
483 ((freq - fminFP) / linearBinHz).to_int());
484 if (linIdx >= numLinearBins)
485 linIdx = numLinearBins - 1;
486 lut[k] =
static_cast<u8>(linIdx);
487 }
488 }
static constexpr FASTLED_FORCE_INLINE u16x16 ceil(u16x16 x) FL_NOEXCEPT
constexpr u32 to_int() const FL_NOEXCEPT
void resize(fl::size n) FL_NOEXCEPT