00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _HumRemover_
00025 #define _HumRemover_
00026
00027 #include "InPort.hxx"
00028 #include "OutPort.hxx"
00029 #include "InControl.hxx"
00030 #include "Frame.hxx"
00031 #include "FrameTransformation.hxx"
00032 #include "FrameTransformationConfig.hxx"
00033
00034 namespace CLAM{
00035
00036 class HumRemover: public FrameTransformationTmpl<Spectrum>
00037 {
00038 InPort<Spectrum> mIn;
00039 OutPort<Spectrum> mOut;
00040
00041 InControl mBandwidthCtl;
00042 InControl mHarmonicsCtl;
00043
00044 InControl mAmount;
00045 public:
00046 const char* GetClassName() const
00047 {
00048 return "HumRemover";
00049 }
00050
00051 HumRemover()
00052 :
00053 mIn("In Spectrum", this),
00054 mOut("Out Spectrum", this),
00055 mBandwidthCtl("Bandwidth", this),
00056 mHarmonicsCtl("Harmonics",this),
00057 mAmount("Amount", this)
00058 {
00059 Configure( FrameTransformationConfig() );
00060 }
00061
00062 ~HumRemover() {}
00063
00064 virtual bool InitControls()
00065 {
00066 mBandwidthCtl.DoControl(20);
00067 mHarmonicsCtl.DoControl(5);
00068
00069 mAmount.DoControl(60);
00070
00071 return true;
00072 }
00073
00074 bool Do(const Frame& in, Frame& out)
00075 {
00076 return Do(in.GetSpectrum(),
00077 out.GetSpectrum());
00078 }
00079
00080 bool Do(const Spectrum& in, Spectrum& out);
00081
00082 bool Do()
00083 {
00084 bool result = Do(mIn.GetData(), mOut.GetData());
00085 mIn.Consume();
00086 mOut.Produce();
00087 return result;
00088 }
00089 };
00090 };
00091
00092 #endif // _HumRemover_