arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
AudioLibs
AudioESP32FFT.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
AudioFFT.h
"
4
#include "fft.h"
5
13
namespace
audio_tools
{
14
21
class
FFTDriverESP32FFT
:
public
FFTDriver
{
22
public
:
23
bool
begin
(
int
len
)
override
{
24
this->len =
len
;
25
if
(
p_fft_object
==
nullptr
)
p_fft_object
=
fft_init
(
len
,
FFT_REAL
,
FFT_FORWARD
,
NULL
,
NULL
);
26
assert
(
p_fft_object
!=
nullptr
);
27
return
p_fft_object
!=
nullptr
;
28
}
29
void
end
()
override
{
30
if
(
p_fft_object
!=
nullptr
)
fft_destroy
(
p_fft_object
);
31
}
32
void
setValue
(
int
idx,
float
value)
override
{
33
p_fft_object
->input[idx] = value;
34
}
35
36
void
fft
()
override
{
37
fft_execute
(
p_fft_object
);
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
72
fft_config_t
*
p_fft_object
=
nullptr
;
73
int
len
;
74
75
};
76
84
class
AudioESP32FFT
:
public
AudioFFTBase
{
85
public
:
86
AudioESP32FFT
():
AudioFFTBase
(
new
FFTDriverESP32FFT
()) {}
87
89
float
*
array
() {
90
return
driverEx
()->
p_fft_object
->output;
91
}
92
93
FFTDriverESP32FFT
*
driverEx
() {
94
return
(
FFTDriverESP32FFT
*)
driver
();
95
}
96
};
97
98
}
AudioFFT.h
assert
#define assert(T)
Definition
avr.h:10
audio_tools::AudioESP32FFT
AudioFFT using https://github.com/pschatzmann/esp32-fft.
Definition
AudioESP32FFT.h:84
audio_tools::AudioESP32FFT::array
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
audio_tools::AudioESP32FFT::driverEx
FFTDriverESP32FFT * driverEx()
Definition
AudioESP32FFT.h:93
audio_tools::AudioESP32FFT::AudioESP32FFT
AudioESP32FFT()
Definition
AudioESP32FFT.h:86
audio_tools::AudioFFTBase
Executes FFT using audio data privded by write() and/or an inverse FFT where the samples are made ava...
Definition
AudioFFT.h:191
audio_tools::AudioFFTBase::driver
FFTDriver * driver()
Definition
AudioFFT.h:551
audio_tools::FFTDriverESP32FFT
Driver for ESP32-FFT https://github.com/pschatzmann/esp32-fft
Definition
AudioESP32FFT.h:21
audio_tools::FFTDriverESP32FFT::magnitudeFast
float magnitudeFast(int idx) override
magnitude w/o sqrt
Definition
AudioESP32FFT.h:49
audio_tools::FFTDriverESP32FFT::getValue
float getValue(int idx)
Get result value from Reverse FFT.
Definition
AudioESP32FFT.h:53
audio_tools::FFTDriverESP32FFT::setValue
void setValue(int idx, float value) override
Sets the real value.
Definition
AudioESP32FFT.h:32
audio_tools::FFTDriverESP32FFT::isReverseFFT
bool isReverseFFT() override
Returns true if reverse FFT is supported.
Definition
AudioESP32FFT.h:68
audio_tools::FFTDriverESP32FFT::setBin
bool setBin(int pos, float real, float img) override
sets the value of a bin
Definition
AudioESP32FFT.h:55
audio_tools::FFTDriverESP32FFT::begin
bool begin(int len) override
Definition
AudioESP32FFT.h:23
audio_tools::FFTDriverESP32FFT::getBin
bool getBin(int pos, FFTBin &bin) override
gets the value of a bin
Definition
AudioESP32FFT.h:61
audio_tools::FFTDriverESP32FFT::end
void end() override
Definition
AudioESP32FFT.h:29
audio_tools::FFTDriverESP32FFT::magnitude
float magnitude(int idx) override
Calculate the magnitude (fft result) at index (sqr(i² + r²))
Definition
AudioESP32FFT.h:44
audio_tools::FFTDriverESP32FFT::p_fft_object
fft_config_t * p_fft_object
Definition
AudioESP32FFT.h:72
audio_tools::FFTDriverESP32FFT::fft
void fft() override
Perform FFT.
Definition
AudioESP32FFT.h:36
audio_tools::FFTDriverESP32FFT::rfft
void rfft() override
Calculate reverse FFT.
Definition
AudioESP32FFT.h:40
audio_tools::FFTDriverESP32FFT::isValid
bool isValid() override
Definition
AudioESP32FFT.h:70
audio_tools::FFTDriverESP32FFT::len
int len
Definition
AudioESP32FFT.h:73
audio_tools::FFTDriver
Abstract Class which defines the basic FFT functionality.
Definition
AudioFFT.h:156
audio_tools
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition
AudioCodecsBase.h:10
audio_tools::writeData
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition
AudioTypes.h:512
audio_tools::FFTBin
And individual FFT Bin.
Definition
AudioFFT.h:65
audio_tools::FFTBin::real
float real
Definition
AudioFFT.h:66
audio_tools::FFTBin::img
float img
Definition
AudioFFT.h:67
Generated by
1.9.8