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 _SpectralRingModulation_
00025 #define _SpectralRingModulation_
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 SpectralRingModulation: public FrameTransformationTmpl<Spectrum>
00038 {
00039 InPort<Spectrum> mIn;
00040 OutPort<Spectrum> mOut;
00041
00042 InControl mFreqCtl;
00043 InControl mWidthCtl;
00044 public:
00045 const char* GetClassName() const
00046 {
00047 return "SpectralRingMod";
00048 }
00049
00050 SpectralRingModulation()
00051 :
00052 mIn("In Spectrum", this),
00053 mOut("Out Spectrum", this),
00054 mFreqCtl("Freq", this),
00055 mWidthCtl("Width", this)
00056 {
00057 Configure( FrameTransformationConfig() );
00058 SimpleOscillatorConfig cfg;
00059 cfg.SetFrequency(200);
00060 cfg.SetAmplitude(1);
00061 mOscillator.Configure(cfg);
00062 }
00063
00064 ~SpectralRingModulation() {}
00065 virtual bool InitControls()
00066 {
00067 mFreqCtl.DoControl(1000.);
00068 mWidthCtl.DoControl(1.);
00069 return true;
00070 }
00071
00072 bool Do(const Frame& in, Frame& out)
00073 {
00074 return Do(in.GetSpectrum(),
00075 out.GetSpectrum());
00076 }
00077
00078 bool Do(const Spectrum& in, Spectrum& out);
00079
00080 bool Do()
00081 {
00082 bool result = Do(mIn.GetData(), mOut.GetData());
00083 mIn.Consume();
00084 mOut.Produce();
00085 return result;
00086 }
00087 private:
00088 SimpleOscillator mOscillator;
00089 };
00090 };
00091
00092 #endif // _SpectralRingModulation_