9#define FASTLED_INTERNAL 1
26#define AUDIO_SAMPLE_RATE 44100
29#define SAMPLING_FREQUENCY AUDIO_SAMPLE_RATE
30#define MAX_FREQUENCY 4698.3
31#define MIN_FREQUENCY 174.6
40 FFTContext(
int samples,
int bands,
float fmin,
float fmax,
int sample_rate)
80 const float delta_f = (maxf - minf) /
m_cq_cfg.bands;
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;
94 if (magnitude <= 0.0f) {
102 out->
bins_db.push_back(magnitude_db);
110 ss <<
"FFTImpl Frequency Bands: ";
112 for (
int i = 0; i <
m_cq_cfg.bands; ++i) {
113 float f_start =
m_cq_cfg.fmin + i * delta_f;
114 float f_end = f_start + delta_f;
115 ss << f_start <<
"Hz-" << f_end <<
"Hz, ";
151 auto &audio_sample = sample.
pcm();
153 return run(slice, out);
164 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
void fft_unit_test(Slice< const int16_t > buffer, FFTBins *out)
size_t sampleSize() const
FFTContext(int samples, int bands, float fmin, float fmax, int sample_rate)
FFTImpl(const FFT_Args &args)
Result run(const AudioSample &sample, FFTBins *out)
size_t sampleSize() const
fl::scoped_ptr< FFTContext > mContext
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
Implements a simple red square effect for 2D LED grids.
fl::vector< float > bins_raw
fl::vector< float > bins_db
#define FASTLED_UNUSED(x)