Skip to content

File syn_fft.h

File List > dsp > syn_fft.h

Go to the documentation of this file

#ifndef SYN_FFT_H
#define SYN_FFT_H

#include "../common/syn_defs.h"
#include "../util/syn_qmath.h"

#ifdef __cplusplus
extern "C" {
#endif

SYN_Status syn_dsp_fft(q16_t *real, q16_t *imag, uint16_t n);

SYN_Status syn_fft_window_hanning(q16_t *out, uint16_t n);

SYN_Status syn_fft_window_hamming(q16_t *out, uint16_t n);

SYN_Status syn_fft_window_blackman(q16_t *out, uint16_t n);

typedef struct {
    uint16_t bin;    
    q16_t magnitude; 
    q16_t freq_hz;   
} SYN_FFTPeak;

SYN_Status syn_fft_magnitude_spectrum(const q16_t *real, const q16_t *imag, q16_t *mag, uint16_t n);

SYN_Status syn_fft_find_peaks(const q16_t *mag, uint16_t n_bins, q16_t sample_rate_hz,
                              SYN_FFTPeak *peaks, uint8_t max_peaks, uint8_t *num_peaks_found);

SYN_Status syn_fft_thd(const q16_t *mag, uint16_t n_bins, uint16_t fundamental_bin,
                       uint8_t max_harmonics, q16_t *thd_pct);

#ifdef __cplusplus
}
#endif

#endif /* SYN_FFT_H */