00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef CSL_WINDOW_H
00021 #define CSL_WINDOW_H
00022
00023 #include "CSL_Core.h"
00024
00025 namespace csl {
00026
00029 class Window : public UnitGenerator {
00030 public:
00031 Window();
00032
00033 Window(unsigned windowSize, float gain = 1);
00034 ~Window();
00035
00036 void setSize(unsigned windowSize);
00037 void setGain(float gain);
00038 sample *window() { return mWindowBuffer.mMonoBuffers[0]; };
00039
00040 void nextBuffer(Buffer &outputBuffer, unsigned outBufNum) throw (CException);
00041 void dump();
00042
00043 protected:
00044 Buffer mWindowBuffer;
00045 unsigned mWindowBufferPos;
00046 unsigned mWindowSize;
00047 float mGain;
00048
00049 virtual void fillWindow();
00050 };
00051
00053 class RectangularWindow : public Window {
00054 public:
00055 RectangularWindow() : Window() { }
00056 RectangularWindow(unsigned windowSize) : Window(windowSize) { }
00057 RectangularWindow(unsigned windowSize, float gain) : Window(windowSize, gain) { }
00058 ~RectangularWindow() { }
00059
00060 protected:
00061 void fillWindow();
00062 };
00063
00065 class HammingWindow : public Window {
00066 public:
00067
00068 HammingWindow() : Window() { }
00069 HammingWindow(unsigned windowSize) : Window(windowSize) { }
00070 HammingWindow(unsigned windowSize, float gain) : Window(windowSize, gain) { }
00071 ~HammingWindow() { }
00072
00073 protected:
00074 void fillWindow();
00075 };
00076
00078 class HannWindow : public Window {
00079 public:
00080 HannWindow() : Window() { }
00081 HannWindow(unsigned windowSize) : Window(windowSize) { }
00082 HannWindow(unsigned windowSize, float gain) : Window(windowSize, gain) { }
00083 ~HannWindow() { }
00084
00085 protected:
00086 void fillWindow();
00087 };
00088
00090 class BlackmanWindow : public Window {
00091 public:
00092 BlackmanWindow() : Window() { }
00093 BlackmanWindow(unsigned windowSize) : Window(windowSize) { }
00094 BlackmanWindow(unsigned windowSize, float gain) : Window(windowSize, gain) { }
00095 ~BlackmanWindow() { }
00096
00097 protected:
00098 void fillWindow();
00099 };
00100
00102 class BlackmanHarrisWindow : public Window {
00103 public:
00104 BlackmanHarrisWindow() : Window() { }
00105 BlackmanHarrisWindow(unsigned windowSize) : Window(windowSize) { }
00106 BlackmanHarrisWindow(unsigned windowSize, float gain) : Window(windowSize, gain) { }
00107 ~BlackmanHarrisWindow() { }
00108
00109 protected:
00110 void fillWindow();
00111 };
00112
00114 class WelchWindow : public Window {
00115 public:
00116 WelchWindow() : Window() { }
00117 WelchWindow(unsigned windowSize) : Window(windowSize) { }
00118 WelchWindow(unsigned windowSize, float gain) : Window(windowSize, gain) { }
00119 ~WelchWindow() { }
00120
00121 protected:
00122 void fillWindow();
00123 };
00124
00125 }
00126
00127 #endif