arduino-audio-tools
Loading...
Searching...
No Matches
AudioESP32FFT.h
Go to the documentation of this file.
1#pragma once
2
3#include "AudioFFT.h"
4#include "fft.h"
5
13namespace audio_tools {
14
22 public:
23 bool begin(int len) override {
24 this->len = len;
26 assert(p_fft_object!=nullptr);
27 return p_fft_object!=nullptr;
28 }
29 void end()override{
31 }
32 void setValue(int idx, float value) override{
33 p_fft_object->input[idx] = value;
34 }
35
36 void fft() override{
38 };
39
40 void rfft() override {
41 irfft(p_fft_object->input, p_fft_object->output, p_fft_object->twiddle_factors, p_fft_object->size);
42 }
43
44 float magnitude(int idx) override {
45 return sqrt(magnitudeFast(idx));
46 }
47
49 float magnitudeFast(int idx) override {
50 return (pow(p_fft_object->output[2*idx],2) + pow(p_fft_object->output[2*idx+1],2));
51 }
52
53 float getValue(int idx) { return p_fft_object->input[idx];}
54
55 bool setBin(int pos, float real, float img) override {
56 if (pos>=len) return false;
57 p_fft_object->output[2*pos] = real;
58 p_fft_object->output[2*pos+1] = img;
59 return true;
60 }
61 bool getBin(int pos, FFTBin &bin) override {
62 if (pos>=len) return false;
63 bin.real = p_fft_object->output[2*pos];
64 bin.img = p_fft_object->output[2*pos+1];
65 return true;
66 }
67
68 bool isReverseFFT() override {return true;}
69
70 bool isValid() override{ return p_fft_object!=nullptr; }
71
73 int len;
74
75};
76
85 public:
87
89 float* array() {
90 return driverEx()->p_fft_object->output;
91 }
92
96};
97
98}
#define assert(T)
Definition avr.h:10
AudioFFT using https://github.com/pschatzmann/esp32-fft.
Definition AudioESP32FFT.h:84
float * array()
Provides the result array returned by the FFT: The real part of a magnitude at a frequency is followe...
Definition AudioESP32FFT.h:89
FFTDriverESP32FFT * driverEx()
Definition AudioESP32FFT.h:93
AudioESP32FFT()
Definition AudioESP32FFT.h:86
Executes FFT using audio data privded by write() and/or an inverse FFT where the samples are made ava...
Definition AudioFFT.h:191
FFTDriver * driver()
Definition AudioFFT.h:551
Driver for ESP32-FFT https://github.com/pschatzmann/esp32-fft
Definition AudioESP32FFT.h:21
float magnitudeFast(int idx) override
magnitude w/o sqrt
Definition AudioESP32FFT.h:49
float getValue(int idx)
Get result value from Reverse FFT.
Definition AudioESP32FFT.h:53
void setValue(int idx, float value) override
Sets the real value.
Definition AudioESP32FFT.h:32
bool isReverseFFT() override
Returns true if reverse FFT is supported.
Definition AudioESP32FFT.h:68
bool setBin(int pos, float real, float img) override
sets the value of a bin
Definition AudioESP32FFT.h:55
bool begin(int len) override
Definition AudioESP32FFT.h:23
bool getBin(int pos, FFTBin &bin) override
gets the value of a bin
Definition AudioESP32FFT.h:61
void end() override
Definition AudioESP32FFT.h:29
float magnitude(int idx) override
Calculate the magnitude (fft result) at index (sqr(i² + r²))
Definition AudioESP32FFT.h:44
fft_config_t * p_fft_object
Definition AudioESP32FFT.h:72
void fft() override
Perform FFT.
Definition AudioESP32FFT.h:36
void rfft() override
Calculate reverse FFT.
Definition AudioESP32FFT.h:40
bool isValid() override
Definition AudioESP32FFT.h:70
int len
Definition AudioESP32FFT.h:73
Abstract Class which defines the basic FFT functionality.
Definition AudioFFT.h:156
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:512
And individual FFT Bin.
Definition AudioFFT.h:65
float real
Definition AudioFFT.h:66
float img
Definition AudioFFT.h:67