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