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

Detailed Description

Definition at line 59 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)
 
 ~Context () FL_NOEXCEPT
 
fl::string info () const
 
void run (span< const i16 > buffer, Bins *out)
 
fl::size sampleSize () const
 

Private Member Functions

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

Static Private Member Functions

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

Private Attributes

cq_kernel_cfg mCqCfg
 
fl::vector< kiss_fft_cpxmFftOut
 
kiss_fftr_cfg mFftrCfg
 
float mFmax
 
float mFmin
 
fl::vector< alpha16mHybridBassWindow
 
fl::vector< float > mHybridMergedNorm
 
kiss_fftr_cfg mHybridMidFft = nullptr
 
fl::vector< kiss_fft_cpxmHybridMidFftOut
 
float mHybridMidFs = 0.0f
 
int mHybridMidN = 0
 
int mHybridMidSplitBin = 0
 
fl::vector< alpha16mHybridMidWindow
 
fl::vector< float > mHybridNormBass
 
fl::vector< float > mHybridNormMid
 
fl::vector< float > mHybridNormUpper
 
kiss_fftr_cfg mHybridSmallFft = nullptr
 
fl::vector< kiss_fft_cpxmHybridSmallFftOut
 
float mHybridSmallFs = 0.0f
 
int mHybridSmallN = 0
 
int mHybridSplitBin = 0
 
int mInputSamples
 
cq_kernels_t mKernels
 
fl::vector< u8mLinearBinLut
 
int mLinearKEnd = 0
 
int mLinearKStart = 0
 
fl::vector< float > mLogBinEdges
 
fl::vector< u16x16mLogBinEdgesQ16
 
fl::vector< u8mLogBinLut
 
fl::vector< u8mLogBinLutBass
 
fl::vector< u8mLogBinLutMid
 
fl::vector< float > mLogBinNormFactors
 
int mMaxBinsPerOctave = 0
 
Mode mMode
 
fl::vector< OctaveInfomOctaves
 
int mSampleRate
 
int mTotalBands
 
Window mWindow
 
fl::vector< alpha16mWindowBuf
 
fl::vector< kiss_fft_scalarmWorkBuf
 

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