9#ifndef FASTLED_INTERNAL
10#define FASTLED_INTERNAL 1
29#define AUDIO_SAMPLE_RATE 44100
32#define SAMPLING_FREQUENCY AUDIO_SAMPLE_RATE
33#define MAX_FREQUENCY 4698.3
34#define MIN_FREQUENCY 174.6
43 FFTContext(
int samples,
int bands,
float fmin,
float fmax,
int sample_rate)
83 const float delta_f = (maxf - minf) /
m_cq_cfg.bands;
85 for (
int i = 0; i <
m_cq_cfg.bands; ++i) {
88 float r2 = float(real * real);
89 float i2 = float(imag * imag);
90 float magnitude = sqrt(r2 + i2);
91 float magnitude_db = 20 * log10(magnitude);
92 float f_start = minf + i * delta_f;
93 float f_end = f_start + delta_f;
97 if (magnitude <= 0.0f) {
105 out->
bins_db.push_back(magnitude_db);
113 ss <<
"FFTImpl Frequency Bands: ";
115 for (
int i = 0; i <
m_cq_cfg.bands; ++i) {
116 float f_start =
m_cq_cfg.fmin + i * delta_f;
117 float f_end = f_start + delta_f;
118 ss << f_start <<
"Hz-" << f_end <<
"Hz, ";
154 auto &audio_sample = sample.
pcm();
156 return run(slice, out);
167 mContext->fft_unit_test(sample, out);
central include file for FastLED, defines the CFastLED class/object
#define FASTLED_STACK_ARRAY(TYPE, NAME, SIZE)
const VectorPCM & pcm() const
FFTContext(int samples, int bands, float fmin, float fmax, int sample_rate)
fl::size sampleSize() const
void fft_unit_test(span< const i16 > buffer, FFTBins *out)
FFTImpl(const FFT_Args &args)
Result run(const AudioSample &sample, FFTBins *out)
fl::size sampleSize() const
fl::unique_ptr< FFTContext > mContext
const string & str() const
void free_kernels(struct sparse_arr *kernels, struct cq_kernel_cfg cfg)
void apply_kernels(kiss_fft_cpx fft[], kiss_fft_cpx cq[], struct sparse_arr kernels[], struct cq_kernel_cfg cfg)
struct sparse_arr * generate_kernels(struct cq_kernel_cfg cfg)
struct sparse_arr * cq_kernels_t
void kiss_fftr(kiss_fftr_cfg st, const kiss_fft_scalar *timedata, kiss_fft_cpx *freqdata)
kiss_fftr_cfg kiss_fftr_alloc(int nfft, int inverse_fft, void *mem, size_t *lenmem)
struct kiss_fftr_state * kiss_fftr_cfg
void * memfill(void *ptr, int value, fl::size num)
fl::vector< float > bins_raw
fl::vector< float > bins_db
#define FASTLED_UNUSED(x)