00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef SPECTRALREASSIGNMENT_H
00020 #define SPECTRALREASSIGNMENT_H
00021
00022 #include "Typedefs.h"
00023 #include "Debug.h"
00024
00025 #include "Window.h"
00026 #include "FFTComplex.h"
00027
00028 class SpectralReassignment{
00029 protected:
00030 int _frameSize;
00031 int _fftSize;
00032 Real _samplerate;
00033 Window::WindowType _windowType;
00034
00035 Window _windowAlgo;
00036 Window _windowIntegAlgo;
00037 Window _windowDerivAlgo;
00038
00039 FFTComplex _fftAlgo;
00040
00041 MatrixXC _window;
00042 MatrixXC _windowInteg;
00043 MatrixXC _windowDeriv;
00044
00045 MatrixXR _fftAbs2;
00046 MatrixXC _fftInteg;
00047 MatrixXC _fftDeriv;
00048
00049 MatrixXR _time;
00050 MatrixXR _freq;
00051
00052 public:
00053 SpectralReassignment(int frameSize, int fftSize, Real samplerate, Window::WindowType windowType = Window::RECTANGULAR);
00054 ~SpectralReassignment();
00055
00056 void process(const MatrixXR& frames,
00057 MatrixXC* fft, MatrixXR* reassignTime, MatrixXR* reassignFreq);
00058
00059 void setup();
00060 void reset();
00061
00062 int frameSize() const;
00063 int fftSize() const;
00064
00065 Window::WindowType windowType() const;
00066 };
00067
00068 #endif