Put the sidechain ports into a dedicated tab in PortMatrix
[ardour.git] / gtk2_ardour / fft.h
index a68ed59edc0f257f09e74266db531350df886103..6022f1c7704cd27e938802ba199461b439b9289d 100644 (file)
@@ -30,7 +30,9 @@
 #include <fftw3.h>
 
 
-#include <ardour/types.h>
+#include "ardour/types.h"
+
+namespace GTKArdour {
 
 class FFT
 {
@@ -38,28 +40,40 @@ class FFT
                FFT(uint32_t);
                ~FFT();
 
+               enum WindowingType {
+                       NONE,
+                       HANN
+               };
+
                void reset();
-               void analyze(ARDOUR::Sample *);
+               void analyze(ARDOUR::Sample *, WindowingType w = NONE);
                void calculate();
 
-               uint32_t bins() const { return _dataSize; }
+               uint32_t bins() const { return _data_size; }
+
+               float power_at_bin(uint32_t i) const { return _power_at_bin[i]; }
+               float phase_at_bin(uint32_t i) const { return _phase_at_bin[i]; }
 
-               float powerAtBin(uint32_t i) const { return _powerAtBin[i]; }
-               float phaseAtBin(uint32_t i) const { return _phaseAtBin[i]; }
 
        private:
 
-               uint32_t const _windowSize;
-               uint32_t const _dataSize;
+               float *get_hann_window();
+
+               uint32_t const _window_size;
+               uint32_t const _data_size;
                uint32_t _iterations;
 
+               float *_hann_window;
+
                float *_fftInput;
                float *_fftOutput;
 
-               float *_powerAtBin;
-               float *_phaseAtBin;
+               float *_power_at_bin;
+               float *_phase_at_bin;
 
                fftwf_plan _plan;
 };
 
+}
+
 #endif