arduino-audio-tools
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
AudioFFTBase Class Reference

Executes FFT using audio data. The Driver which is passed in the constructor selects a specifc FFT implementation. More...

#include <AudioFFT.h>

Inheritance diagram for AudioFFTBase:
AudioOutput Print AudioInfoSupport AudioInfoSource AudioCmsisFFT AudioESP32FFT AudioEspressifFFT AudioKissFFT AudioRealFFT

Public Member Functions

 AudioFFTBase (FFTDriver *driver)
 Default Constructor. The len needs to be of the power of 2 (e.g. 512, 1024, 2048, 4096, 8192)
 
virtual void addNotifyAudioChange (AudioInfoSupport &bi)
 Adds target to be notified about audio changes.
 
virtual AudioInfo audioInfo () override
 provides the actual input AudioInfo
 
virtual AudioInfo audioInfoOut ()
 provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream
 
int availableForWrite () override
 We try to fill the buffer at once.
 
virtual bool begin ()
 
bool begin (AudioFFTConfig info)
 starts the processing
 
virtual bool begin (AudioInfo info)
 
virtual void clearNotifyAudioChange ()
 Deletes all change notify subscriptions.
 
AudioFFTConfigconfig ()
 Provides the actual configuration.
 
AudioFFTConfig defaultConfig ()
 Provides the default configuration.
 
FFTDriverdriver ()
 provides access to the FFTDriver which implements the basic FFT functionality
 
void end () override
 Release the allocated memory.
 
virtual void flush ()
 
float frequency (int bin)
 Determines the frequency of the indicated bin.
 
virtual bool isDeletable ()
 If true we need to release the related memory in the destructor.
 
bool isNotifyActive ()
 Checks if the automatic AudioInfo update is active.
 
int length ()
 The number of samples.
 
float magnitude (int bin)
 Calculates the magnitude of the fft result to determine the max value (bin is 0 to size())
 
float magnitudeFast (int bin)
 
float * magnitudes ()
 Provides the magnitudes as array of size size(). Please note that this method is allocating additinal memory!
 
float * magnitudesFast ()
 Provides the magnitudes w/o calling the square root function as array of size size(). Please note that this method is allocating additinal memory!
 
 operator bool ()
 
virtual bool removeNotifyAudioChange (AudioInfoSupport &bi)
 Removes a target in order not to be notified about audio changes.
 
void reset ()
 Just resets the current_pos e.g. to start a new cycle.
 
AudioFFTResult result ()
 Determines the result values in the max magnitude bin.
 
template<int N>
void resultArray (AudioFFTResult(&result)[N])
 Determines the N biggest result values.
 
unsigned long resultTime ()
 time after the fft: time when the last result was provided - you can poll this to check if we have a new result
 
unsigned long resultTimeBegin ()
 time before the fft
 
void setAudioInfo (AudioInfo info) override
 Notify change of audio information.
 
void setNotifyActive (bool flag)
 Deactivate/Reactivate automatic AudioInfo updates: (default is active)
 
int size ()
 The number of bins used by the FFT which are relevant for the result.
 
size_t write (const uint8_t *data, size_t len) override
 Provide the audio data as FFT input.
 
virtual size_t write (uint8_t ch) override
 
virtual void writeSilence (size_t len)
 

Protected Member Functions

int bytesPerSample ()
 
template<typename T >
void fft ()
 
template<int N>
void insertSorted (AudioFFTResult(&result)[N], AudioFFTResult tmp)
 make sure that we do not reuse already found results
 
bool isPowerOfTwo (uint16_t x)
 
void notifyAudioChange (AudioInfo info)
 
template<typename T >
void processSamples (const void *data, size_t samples)
 
template<typename T >
windowedSample (T sample)
 
void writeStrideBuffer (uint8_t *buffer, size_t len)
 

Protected Attributes

int _timeout = 10
 
int bins = 0
 
AudioFFTConfig cfg
 
int current_pos = 0
 
bool is_active = false
 
bool is_notify_active = true
 
Vector< AudioInfoSupport * > notify_vector
 
FFTDriverp_driver =nullptr
 
float * p_magnitudes = nullptr
 
RingBuffer< uint8_t > stride_buffer {0}
 
unsigned long timestamp =0l
 
unsigned long timestamp_begin =0l
 
SingleBuffer< uint8_t > tmp {MAX_SINGLE_CHARS}
 
int tmpPos = 0
 

Detailed Description

Executes FFT using audio data. The Driver which is passed in the constructor selects a specifc FFT implementation.

Author
Phil Schatzmann

Member Function Documentation

◆ writeSilence()

virtual void writeSilence ( size_t  len)
inlinevirtualinherited

Writes n 0 values (= silence)

Parameters
len

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