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

AudioFFT for ARM processors that provided Cmsis DSP. More...

#include <AudioCmsisFFT.h>

Inheritance diagram for AudioCmsisFFT:
AudioFFTBase AudioOutput Print AudioInfoSupport AudioInfoSource

Public Member Functions

virtual void addNotifyAudioChange (AudioInfoSupport &bi)
 Adds target to be notified about audio changes.
 
float * array ()
 Provides the result array returned by CMSIS FFT.
 
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.
 
bool begin () override
 starts the processing
 
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
 
FFTDriverCmsisFFTdriverEx ()
 
void end () override
 Release the allocated memory.
 
virtual void flush ()
 
float frequency (int bin)
 Determines the frequency of the indicated bin.
 
bool getBin (int pos, FFTBin &bin)
 gets the value of a bin
 
virtual bool isDeletable ()
 If true we need to release the related memory in the destructor.
 
bool isInverseFFT ()
 Returns true if we need to calculate the inverse FFT.
 
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 ()
 
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 ()
 
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.
 
bool setBin (int idx, float real, float img)
 sets the value of a bin
 
bool setBin (int pos, FFTBin &bin)
 sets the value of a bin
 
void setNotifyActive (bool flag)
 Deactivate/Reactivate automatic AudioInfo updates: (default is active)
 
void setOutput (Print &out)
 Define final output for reverse ffft.
 
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)
 
void rfft ()
 reverse fft if necessary
 
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
 
Printp_out = nullptr
 
float rfft_max = 0
 
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

AudioFFT for ARM processors that provided Cmsis DSP.

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: