3BandSpectralAM.hxx
Go to the documentation of this file.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 _ThreeBandAM_
00025 #define _ThreeBandAM_
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 #include "SimpleOscillator.hxx"
00034
00035 namespace CLAM{
00036
00037 class ThreeBandAM: public FrameTransformationTmpl<Spectrum>
00038 {
00039 InPort<Spectrum> mIn;
00040 OutPort<Spectrum> mOut;
00041
00042 FloatInControl mLowCutoffFreqCtl;
00043 FloatInControl mHighCutoffFreqCtl;
00044 FloatInControl mLowPitchCtl;
00045 FloatInControl mMidPitchCtl;
00046 FloatInControl mHighPitchCtl;
00047 FloatInControl mModAmplitudeCtl;
00048 public:
00049 const char* GetClassName() const
00050 {
00051 return "ThreeBandAM";
00052 }
00053
00054 ThreeBandAM()
00055 :
00056 mIn("In Spectrum", this),
00057 mOut("Out Spectrum", this) ,
00058 mLowCutoffFreqCtl("LowCutoff", this),
00059 mHighCutoffFreqCtl("HighCutoff", this),
00060 mLowPitchCtl("LowPitch", this),
00061 mMidPitchCtl("MidPitch", this),
00062 mHighPitchCtl("HighPitch", this),
00063 mModAmplitudeCtl("ModAmp", this)
00064 {
00065 Configure( FrameTransformationConfig() );
00066 }
00067
00068 ~ThreeBandAM() {}
00069
00070 virtual bool InitControls()
00071 {
00072 mLowCutoffFreqCtl.DoControl(1000);
00073 mHighCutoffFreqCtl.DoControl(5000);
00074 mLowPitchCtl.DoControl(1000);
00075 mMidPitchCtl.DoControl(1000);
00076 mHighPitchCtl.DoControl(1000);
00077 mModAmplitudeCtl.DoControl(1);
00078
00079 return true;
00080 }
00081
00082 bool Do(const Frame& in, Frame& out)
00083 {
00084 return Do(in.GetSpectrum(),
00085 out.GetSpectrum());
00086 }
00087
00088 bool Do(const Spectrum& in, Spectrum& out);
00089
00090 bool Do()
00091 {
00092 bool result = Do(mIn.GetData(), mOut.GetData());
00093 mIn.Consume();
00094 mOut.Produce();
00095 return result;
00096 }
00097 private:
00098 SimpleOscillator mLFOscillator;
00099 SimpleOscillator mMFOscillator;
00100 SimpleOscillator mHFOscillator;
00101 };
00102 };
00103
00104 #endif // _ThreeBandAM_