462 {
463 const int numRawBins = fftN / 2 + 1;
466
467 const u16x16 rawBinHz(
static_cast<float>(
mSampleRate) /
468 static_cast<float>(fftN));
469 const u16x16 halfBin = rawBinHz >> 1;
470 const u16x16 fminFP(
mFmin);
471 const u16x16 fmaxFP(
mFmax);
472 const u16x16 linearBinHz(
473 (
mFmax -
mFmin) /
static_cast<float>(numLinearBins));
474
475
477 if (fminFP > halfBin) {
480 }
484
485 for (int k = 0; k < numRawBins; ++k) {
486 u16x16 freq = rawBinHz * static_cast<u32>(k);
487
488 if (freq < fminFP) {
489 lut[k] = 0;
490 continue;
491 }
492 int linIdx = static_cast<int>(
493 ((freq - fminFP) / linearBinHz).to_int());
494 if (linIdx >= numLinearBins)
495 linIdx = numLinearBins - 1;
496 lut[k] =
static_cast<u8>(linIdx);
497 }
498 }
constexpr u32 to_int() const FL_NO_EXCEPT
static constexpr FASTLED_FORCE_INLINE u16x16 ceil(u16x16 x) FL_NO_EXCEPT
void resize(fl::size n) FL_NO_EXCEPT