|
arduino-audio-tools
|
AudioFFT using FFTReal. The only specific functionality is the access to the dataArray. More...
#include <AudioKissFFT.h>
Public Member Functions | |
| AudioKissFFT () | |
| 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 () |
| int | available () override |
| Data available for reverse fft. | |
| int | availableForWrite () override |
| We try to fill the buffer at once. | |
| bool | begin () override |
| starts the processing | |
| bool | begin (AudioFFTConfig info) |
| starts the processing | |
| void | clearBins () |
| clears the fft data | |
| virtual void | clearNotifyAudioChange () |
| Deletes all change notify subscriptions. | |
| AudioFFTConfig & | config () |
| Provides the actual configuration. | |
| kiss_fft_cpx * | dataArray () |
| Provides the complex array returned by the FFT | |
| AudioFFTConfig | defaultConfig (RxTxMode mode=TX_MODE) |
| Provides the default configuration. | |
| FFTDriver * | driver () |
| FFTDriverKissFFT * | driverEx () |
| void | end () override |
| Release the allocated memory. | |
| virtual void | flush () override |
| float | frequency (int bin) |
| Determines the frequency of the indicated bin. | |
| int | frequencyToBin (int freq) |
| Determine the bin number from the frequency. | |
| bool | fromMEL (float *values, int n_bins, float min_freq=0.0f, float max_freq=0.0f) |
| Convert MEL spectrum back to linear frequency spectrum. | |
| bool | getBin (int pos, FFTBin &bin) |
| gets the value of a bin | |
| bool | isNotifyActive () |
| Checks if the automatic AudioInfo update is active. | |
| int | length () |
| The number of samples. | |
| float | magnitude (int bin) |
| float | magnitudeFast (int bin) |
| float * | magnitudes () |
| float * | magnitudesFast () |
| operator bool () override | |
| float | phase (int bin) |
| calculates the phase | |
| size_t | readBytes (uint8_t *data, size_t len) override |
| Provides the result of a reverse FFT. | |
| virtual size_t | readSilence (uint8_t *buffer, size_t length) |
| Source to generate silence: just sets the buffer to 0. | |
| template<typename T > | |
| T & | reference () |
| Provides the reference pointer. | |
| 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 () |
| 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 | setWriteBufferSize (int size) |
| int | size () |
| The number of bins used by the FFT which are relevant for the result. | |
| float * | toMEL (int n_bins, float min_freq=0.0f, float max_freq=0.0f) |
| Convert the FFT result to MEL spectrum. | |
| 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) |
| Writes len bytes of silence (=0). | |
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) |
| virtual int | not_supported (int out, const char *msg="") |
| void | notifyAudioChange (AudioInfo info) |
| template<typename T > | |
| void | processSamples (const void *data, size_t count) |
| void | refillReadBuffer () |
| void | rfft () |
| reverse fft | |
| void | rfftWriteData (BaseBuffer< uint8_t > &data) |
| write reverse fft result to buffer to make it available for readBytes | |
| template<typename T > | |
| T | windowedSample (T sample, int pos) |
| template<typename T > | |
| void | writeIFFT (float *data, int len) |
| bool | writeStrideBuffer (uint8_t *buffer, size_t len) |
Protected Attributes | |
| int | _timeout = 10 |
| int | bins = 0 |
| AudioFFTConfig | cfg |
| int | current_pos = 0 |
| bool | has_rfft_data = false |
| AudioInfo | info |
| bool | is_notify_active = true |
| Vector< float > | l_magnitudes {0} |
| Vector< float > | mel_bins {0} |
| Vector< AudioInfoSupport * > | notify_vector |
| FFTDriver * | p_driver = nullptr |
| FFTInverseOverlapAdder | rfft_add {0} |
| RingBuffer< uint8_t > | rfft_data {0} |
| Vector< float > | step_data {0} |
| SingleBuffer< uint8_t > | stride_buffer {0} |
| unsigned long | timestamp = 0l |
| unsigned long | timestamp_begin = 0l |
| RingBuffer< uint8_t > | tmp_in {0} |
| RingBuffer< uint8_t > | tmp_out {0} |
| int | write_buffer_size = MAX_SINGLE_CHARS |
AudioFFT using FFTReal. The only specific functionality is the access to the dataArray.
|
inline |
|
inlinevirtualinherited |
Adds target to be notified about audio changes.
Reimplemented in CodecNOP, EncodedAudioOutput, EncodedAudioStream, AACDecoderFDK, DecoderBasic, CodecChain, MP3DecoderHelix, MP3DecoderMAD, OggContainerDecoder, RTSPClient< TcpClient, UdpSocket >, Pipeline, and Pipeline::ModifyingStreamAdapter.
provides the actual input AudioInfo
Implements AudioInfoSupport.
Reimplemented in JupyterAudioT< T >, MozziStream, TimerCallbackAudioStream, EncodedAudioStream, PureDataStream, AdapterAudioOutputToAudioStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, and InputMerge< T >.
provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream
Reimplemented in PureDataStream, PWMAudioOutput, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, FormatConverterStream, Pipeline, ResampleStream, and ResampleStreamT< TInterpolator >.
|
inlineoverridevirtualinherited |
Data available for reverse fft.
Reimplemented from BaseStream.
|
inlineoverridevirtualinherited |
We try to fill the buffer at once.
Reimplemented from BaseStream.
|
inlineoverridevirtualinherited |
starts the processing
Reimplemented from BaseStream.
|
inlineinherited |
starts the processing
|
inlineprotectedinherited |
|
inlineinherited |
clears the fft data
Deletes all change notify subscriptions.
Reimplemented in RTSPClient< TcpClient, UdpSocket >.
|
inlineinherited |
Provides the actual configuration.
|
inline |
Provides the complex array returned by the FFT
|
inlineinherited |
Provides the default configuration.
|
inlineinherited |
provides access to the FFTDriver which implements the basic FFT functionality
|
inline |
|
inlineoverridevirtualinherited |
Release the allocated memory.
Reimplemented from BaseStream.
Reimplemented from Print.
Reimplemented in PureDataStream, URLStreamBufferedT< T >, URLStreamBufferedT< ICYStream >, AudioStreamWrapper, ResampleStream, URLStream, BufferedTaskStream, I2SStream, MemoryStream, RingBufferStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, and BufferedStream.
|
inlineinherited |
Convert MEL spectrum back to linear frequency spectrum.
| values | Pointer to MEL spectrum values |
| n_bins | Number of MEL bins |
|
inlineprotectedinherited |
make sure that we do not reuse already found results
|
inlineinherited |
The number of samples.
Calculates the magnitude of the fft result to determine the max value (bin is 0 to size())
|
inlineinherited |
Provides the magnitudes as array of size size(). Please note that this method is allocating additinal memory!
|
inlineinherited |
Provides the magnitudes w/o calling the square root function as array of size size(). Please note that this method is allocating additinal memory!
Reimplemented from AudioStream.
Provides the result of a reverse FFT.
Reimplemented from AudioStream.
Source to generate silence: just sets the buffer to 0.
|
inlineprotectedinherited |
|
inlinevirtualinherited |
Removes a target in order not to be notified about audio changes.
Reimplemented in RTSPClient< TcpClient, UdpSocket >.
|
inlineinherited |
Just resets the current_pos e.g. to start a new cycle.
|
inlineinherited |
Determines the result values in the max magnitude bin.
|
inlineinherited |
Determines the N biggest result values.
time after the fft: time when the last result was provided - you can poll this to check if we have a new result
|
inlineprotectedinherited |
reverse fft
|
inlineprotectedinherited |
write reverse fft result to buffer to make it available for readBytes
Notify change of audio information.
Reimplemented from AudioStream.
Deactivate/Reactivate automatic AudioInfo updates: (default is active)
|
inlineinherited |
The number of bins used by the FFT which are relevant for the result.
Convert the FFT result to MEL spectrum.
Provide the audio data as FFT input.
Reimplemented from AudioStream.
Reimplemented in MemoryStream, AudioStreamWrapper, BufferedTaskStream, RingBufferStream, BufferedStream, and URLStream.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |