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 InControl mLowCutoffFreqCtl;
00043 InControl mHighCutoffFreqCtl;
00044 InControl mLowPitchCtl;
00045 InControl mMidPitchCtl;
00046 InControl mHighPitchCtl;
00047 InControl 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_