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

◆ _generate_kernel()

void _generate_kernel ( kiss_fft_cpx kernel[],
kiss_fftr_cfg cfg,
enum window_type window_type window_type ,
float f,
float fmin,
float fs,
int N )

Definition at line 67 of file cq_kernel.cpp.hpp.

67 {
68 // Generates window in the center and zero everywhere else
69 float factor = f/fmin;
70 int N_window = N/factor; // Scales inversely with frequency (see CQT paper)
72
73 switch(window_type){
74 case HAMMING:
75 _generate_hamming(&time_K[(N-N_window)/2], N_window);
76 break;
77 case GAUSSIAN:
78 _generate_guassian(&time_K[(N-N_window)/2], N_window);
79 break;
80 }
81
82 // Fills window with f Hz wave sampled at fs Hz
83 for(int i = 0; i < N; i++) time_K[i] *= FFT_COS(2*M_PI*(f/fs)*(i-N/2));
84
85 #ifdef FIXED_POINT // If using fixed point, just scale inversely to N after FFT (don't normalize)
86 kiss_fftr(cfg, time_K, kernel); // Outputs garbage for Q31
87 for(int i = 0; i < N; i++){
88 kernel[i].r *= factor;
89 kernel[i].i *= factor;
90 }
91 #else // Else if floating point, follow CQT paper more exactly (normalize with N before FFT)
92 for(int i = 0; i < N; i++) time_K[i] /= N_window;
93 kiss_fftr(cfg, time_K, kernel);
94 #endif
95
96 fl::free(time_K);
97}
void _generate_hamming(kiss_fft_scalar window[], int N) FL_NOEXCEPT
void _generate_guassian(kiss_fft_scalar window[], int N) FL_NOEXCEPT
#define M_PI
window_type
Definition cq_kernel.h:26
@ HAMMING
Definition cq_kernel.h:27
@ GAUSSIAN
Definition cq_kernel.h:28
#define FFT_COS(x)
#define kiss_fft_scalar
Definition kiss_fft.h:69
kiss_fft_scalar r
Definition kiss_fft.h:85
kiss_fft_scalar i
Definition kiss_fft.h:86
void kiss_fftr(kiss_fftr_cfg st, const kiss_fft_scalar *timedata, kiss_fft_cpx *freqdata) FL_NOEXCEPT
void * calloc(size_t nmemb, size_t size)
void free(void *ptr)

References _generate_guassian(), _generate_hamming(), fl::calloc(), FFT_COS, FL_NOEXCEPT, fl::free(), GAUSSIAN, HAMMING, kiss_fft_scalar, kiss_fftr(), and M_PI.

Referenced by generate_kernels().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: