FastLED 3.10.8
Loading...
Searching...
No Matches
fl::audio::fft::Context Class Reference

Detailed Description

Definition at line 60 of file fft_impl.cpp.hpp.

#include <fft_impl.cpp.hpp>

+ Collaboration diagram for fl::audio::fft::Context:

Classes

struct  FftScratch
 
struct  OctaveInfo
 

Public Member Functions

 Context (int samples, int bands, float fmin, float fmax, int sample_rate, Mode mode, Window window) FL_NO_EXCEPT
 
 ~Context () FL_NO_EXCEPT
 
fl::string info () const FL_NO_EXCEPT
 
void run (span< const i16 > buffer, Bins *out) FL_NO_EXCEPT
 
fl::size sampleSize () const FL_NO_EXCEPT
 

Private Member Functions

void buildLinearBinLut (fl::vector< u8 > &lut, int fftN) FL_NO_EXCEPT
 
void buildLogBinLut (fl::vector< u8 > &lut, int fftN, float fs, int binStart, int binEnd) FL_NO_EXCEPT
 
void computeBinEdgesQ16 () FL_NO_EXCEPT
 
void computeLinearBins (const u16 *mag, int, Bins *out) FL_NO_EXCEPT
 
void computeLogRebinNormFactors (fl::vector< float > &normFactors, const fl::vector< u8 > &lut, int fftN, float fs, int binStart, int binEnd) FL_NO_EXCEPT
 
void initHybrid (int samples, int bands, float fmin, float fmax, int sr) FL_NO_EXCEPT
 
void initLogRebin () FL_NO_EXCEPT
 
void initNaive (int samples, int bands, float fmin, float fmax, int sr) FL_NO_EXCEPT
 
void initOctaveWise (int samples, int bands, float fmin, float fmax, int sr) FL_NO_EXCEPT
 
void initWindow () FL_NO_EXCEPT
 
void logRebinRange (const u16 *mag, int fftN, float fs, int binStart, int binEnd, u32 *rawBinsI, const fl::vector< u8 > &lut) FL_NO_EXCEPT
 
void runHybrid (span< const i16 > buffer, Bins *out) FL_NO_EXCEPT
 
void runLogRebin (span< const i16 > buffer, Bins *out) FL_NO_EXCEPT
 
void runNaive (span< const i16 > buffer, Bins *out) FL_NO_EXCEPT
 
void runOctaveWise (span< const i16 > buffer, Bins *out) FL_NO_EXCEPT
 

Static Private Member Functions

static void applyWindow (const kiss_fft_scalar *samples, const alpha16 *win, kiss_fft_scalar *out, int N) FL_NO_EXCEPT
 
static void batchMag (const kiss_fft_scalar *re, const kiss_fft_scalar *im, u16 *mag, int n) FL_NO_EXCEPT
 
static void computeWindow (fl::vector< alpha16 > &win, int N, Window type) FL_NO_EXCEPT
 
static void decimateBy2 (kiss_fft_scalar *buf, int len) FL_NO_EXCEPT
 
static void deinterleave (const kiss_fft_cpx *cpx, kiss_fft_scalar *re, kiss_fft_scalar *im, int n) FL_NO_EXCEPT
 
static float fastDb (u32 x) FL_NO_EXCEPT
 
static u16 fastMag (i32 re, i32 im) FL_NO_EXCEPT
 
static FftScratch & scratch () FL_NO_EXCEPT
 

Private Attributes

fl::vector< u16 > mCoverageFirst
 
fl::vector< u16 > mCoverageLast
 
cq_kernel_cfg mCqCfg
 
fl::vector< kiss_fft_cpx > mFftOut
 
kiss_fftr_cfg mFftrCfg
 
float mFmax
 
float mFmin
 
fl::vector< alpha16 > mHybridBassWindow
 
fl::vector< float > mHybridMergedNorm
 
kiss_fftr_cfg mHybridMidFft = nullptr
 
fl::vector< kiss_fft_cpx > mHybridMidFftOut
 
float mHybridMidFs = 0.0f
 
int mHybridMidN = 0
 
int mHybridMidSplitBin = 0
 
fl::vector< alpha16 > mHybridMidWindow
 
fl::vector< float > mHybridNormBass
 
fl::vector< float > mHybridNormMid
 
fl::vector< float > mHybridNormUpper
 
kiss_fftr_cfg mHybridSmallFft = nullptr
 
fl::vector< kiss_fft_cpx > mHybridSmallFftOut
 
float mHybridSmallFs = 0.0f
 
int mHybridSmallN = 0
 
int mHybridSplitBin = 0
 
int mInputSamples
 
cq_kernels_t mKernels
 
fl::vector< u8 > mLinearBinLut
 
int mLinearKEnd = 0
 
int mLinearKStart = 0
 
fl::vector< float > mLogBinEdges
 
fl::vector< u16x16 > mLogBinEdgesQ16
 
fl::vector< u8 > mLogBinLut
 
fl::vector< u8 > mLogBinLutBass
 
fl::vector< u8 > mLogBinLutMid
 
fl::vector< float > mLogBinNormFactors
 
int mMaxBinsPerOctave = 0
 
Mode mMode
 
fl::vector< OctaveInfo > mOctaves
 
int mSampleRate
 
int mTotalBands
 
Window mWindow
 
fl::vector< alpha16 > mWindowBuf
 
fl::vector< kiss_fft_scalar > mWorkBuf
 

The documentation for this class was generated from the following file: