projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove old a-Hi/Low pass
[ardour.git]
/
gtk2_ardour
/
fft.cc
diff --git
a/gtk2_ardour/fft.cc
b/gtk2_ardour/fft.cc
index f78a1e94ad2f1935313765c16e1e67f8bb452388..a4e34bf2aafedbb56116c372772ef017c2320506 100644
(file)
--- a/
gtk2_ardour/fft.cc
+++ b/
gtk2_ardour/fft.cc
@@
-23,6
+23,8
@@
#include <string.h>
#include <math.h>
#include <string.h>
#include <math.h>
+using namespace GTKArdour;
+
FFT::FFT(uint32_t windowSize)
: _window_size(windowSize),
_data_size(_window_size/2),
FFT::FFT(uint32_t windowSize)
: _window_size(windowSize),
_data_size(_window_size/2),
@@
-46,7
+48,7
@@
FFT::reset()
{
memset(_power_at_bin, 0, sizeof(float) * _data_size);
memset(_phase_at_bin, 0, sizeof(float) * _data_size);
{
memset(_power_at_bin, 0, sizeof(float) * _data_size);
memset(_phase_at_bin, 0, sizeof(float) * _data_size);
-
+
_iterations = 0;
}
_iterations = 0;
}
@@
-74,11
+76,11
@@
FFT::analyze(ARDOUR::Sample *input, WindowingType windowing_type)
#define Re (_fftOutput[i])
#define Im (_fftOutput[_window_size-i])
#define Re (_fftOutput[i])
#define Im (_fftOutput[_window_size-i])
- for (uint32_t i=1; i < _data_size - 1; i++) {
+ for (uint32_t i=1; i < _data_size - 1; i++) {
power = (Re * Re) + (Im * Im);
phase = atanf(Im / Re);
power = (Re * Re) + (Im * Im);
phase = atanf(Im / Re);
-
+
if (Re < 0.0 && Im > 0.0) {
phase += M_PI;
} else if (Re < 0.0 && Im < 0.0) {
if (Re < 0.0 && Im > 0.0) {
phase += M_PI;
} else if (Re < 0.0 && Im < 0.0) {
@@
-96,7
+98,7
@@
void
FFT::calculate()
{
if (_iterations > 1) {
FFT::calculate()
{
if (_iterations > 1) {
- for (uint32_t i=0; i < _data_size - 1; i++) {
+ for (uint32_t i=0; i < _data_size - 1; i++) {
_power_at_bin[i] /= (float)_iterations;
_phase_at_bin[i] /= (float)_iterations;
}
_power_at_bin[i] /= (float)_iterations;
_phase_at_bin[i] /= (float)_iterations;
}
@@
-114,14
+116,14
@@
FFT::get_hann_window()
_hann_window = (float *) malloc(sizeof(float) * _window_size);
double sum = 0.0;
_hann_window = (float *) malloc(sizeof(float) * _window_size);
double sum = 0.0;
-
+
for (uint32_t i=0; i < _window_size; i++) {
_hann_window[i]=0.81f * ( 0.5f - (0.5f * (float) cos(2.0f * M_PI * (float)i / (float)(_window_size))));
sum += _hann_window[i];
}
double isum = 1.0 / sum;
for (uint32_t i=0; i < _window_size; i++) {
_hann_window[i]=0.81f * ( 0.5f - (0.5f * (float) cos(2.0f * M_PI * (float)i / (float)(_window_size))));
sum += _hann_window[i];
}
double isum = 1.0 / sum;
-
+
for (uint32_t i=0; i < _window_size; i++) {
_hann_window[i] *= isum;
}
for (uint32_t i=0; i < _window_size; i++) {
_hann_window[i] *= isum;
}