FastLED 3.9.15
Loading...
Searching...
No Matches

◆ fft_unit_test()

void fl::FFTContext::fft_unit_test ( Slice< const int16_t > buffer,
FFTBins * out )
inline

Definition at line 67 of file fft_impl.cpp.

67 {
68
69 // FASTLED_ASSERT(512 == m_cq_cfg.samples, "FFTImpl samples mismatch and
70 // are still hardcoded to 512");
71 out->clear();
72 // allocate
73 FASTLED_STACK_ARRAY(kiss_fft_cpx, fft, m_cq_cfg.samples);
74 FASTLED_STACK_ARRAY(kiss_fft_cpx, cq, m_cq_cfg.bands);
75 // initialize
76 kiss_fftr(m_fftr_cfg, buffer.data(), fft);
78 const float maxf = m_cq_cfg.fmax;
79 const float minf = m_cq_cfg.fmin;
80 const float delta_f = (maxf - minf) / m_cq_cfg.bands;
81 // begin transform
82 for (int i = 0; i < m_cq_cfg.bands; ++i) {
83 int32_t real = cq[i].r;
84 int32_t imag = cq[i].i;
85 float r2 = float(real * real);
86 float i2 = float(imag * imag);
87 float magnitude = sqrt(r2 + i2);
88 float magnitude_db = 20 * log10(magnitude);
89 float f_start = minf + i * delta_f;
90 float f_end = f_start + delta_f;
91 FASTLED_UNUSED(f_start);
92 FASTLED_UNUSED(f_end);
93
94 if (magnitude <= 0.0f) {
95 magnitude_db = 0.0f;
96 }
97
98 // FASTLED_UNUSED(magnitude_db);
99 // FASTLED_WARN("magnitude_db: " << magnitude_db);
100 // out->push_back(magnitude_db);
101 out->bins_raw.push_back(magnitude);
102 out->bins_db.push_back(magnitude_db);
103 }
104 }
AudioAnalyzeFFT1024 fft
#define FASTLED_STACK_ARRAY(TYPE, NAME, SIZE)
Definition array.h:169
cq_kernels_t m_kernels
Definition fft_impl.cpp:123
kiss_fftr_cfg m_fftr_cfg
Definition fft_impl.cpp:122
cq_kernel_cfg m_cq_cfg
Definition fft_impl.cpp:124
void apply_kernels(kiss_fft_cpx fft[], kiss_fft_cpx cq[], struct sparse_arr kernels[], struct cq_kernel_cfg cfg)
Definition cq_kernel.c:140
void kiss_fftr(kiss_fftr_cfg st, const kiss_fft_scalar *timedata, kiss_fft_cpx *freqdata)
Definition kiss_fftr.c:67
#define FASTLED_UNUSED(x)
Definition unused.h:3

References apply_kernels(), fl::FFTBins::bins_db, fl::FFTBins::bins_raw, fl::FFTBins::clear(), fl::Slice< T >::data(), FASTLED_STACK_ARRAY, FASTLED_UNUSED, fft, kiss_fftr(), m_cq_cfg, m_fftr_cfg, and m_kernels.

+ Here is the call graph for this function: