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 _ThreeBandGate_
00025 #define _ThreeBandGate_
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 ThreeBandGate: public FrameTransformationTmpl<Spectrum>
00037 {
00038 InPort<Spectrum> mIn;
00039 OutPort<Spectrum> mOut;
00040
00041 InControl mLowCutoffFreqCtl;
00042 InControl mHighCutoffFreqCtl;
00043 InControl mLowThresholdCtl;
00044 InControl mMidThresholdCtl;
00045 InControl mHighThresholdCtl;
00046 public:
00047 const char* GetClassName() const
00048 {
00049 return "ThreeBandGate";
00050 }
00051
00052 ThreeBandGate()
00053 :
00054 mIn("In Spectrum", this),
00055 mOut("Out Spectrum", this) ,
00056 mLowCutoffFreqCtl("LowCutoff", this),
00057 mHighCutoffFreqCtl("HighCutoff", this),
00058 mLowThresholdCtl("LowThreshold", this),
00059 mMidThresholdCtl("MidThreshold", this),
00060 mHighThresholdCtl("HighThreshold", this)
00061 {
00062 Configure( FrameTransformationConfig() );
00063 }
00064
00065 ~ThreeBandGate() {}
00066
00067 virtual bool InitControls()
00068 {
00069 mLowCutoffFreqCtl.DoControl(1000);
00070 mHighCutoffFreqCtl.DoControl(5000);
00071 mLowThresholdCtl.DoControl(-60);
00072 mMidThresholdCtl.DoControl(-60);
00073 mHighThresholdCtl.DoControl(-60);
00074
00075 return true;
00076 }
00077
00078 bool Do(const Frame& in, Frame& out)
00079 {
00080 return Do(in.GetSpectrum(),
00081 out.GetSpectrum());
00082 }
00083
00084 bool Do(const Spectrum& in, Spectrum& out);
00085
00086 bool Do()
00087 {
00088 bool result = Do(mIn.GetData(), mOut.GetData());
00089 mIn.Consume();
00090 mOut.Produce();
00091 return result;
00092 }
00093 };
00094 };
00095
00096 #endif // _ThreeBandGate_