00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MARSYAS_AUTOCORRELATION_H
00020 #define MARSYAS_AUTOCORRELATION_H
00021
00022 #include "MarSystem.h"
00023 #include "fft.h"
00024
00025 namespace Marsyas
00026 {
00050 class AutoCorrelation: public MarSystem
00051 {
00052 private:
00053 fft *myfft_;
00054 realvec scratch_;
00055
00056 realvec norm_;
00057 mrs_natural normalize_;
00058 mrs_real octaveCost_;
00059 mrs_real octaveMax_;
00060 mrs_real voicing_;
00061 mrs_natural fftSize_;
00062 mrs_real re_,im_,am_, k_;
00063 mrs_natural lowSamples_;
00064 mrs_natural numSamples_;
00065
00066 MarControlPtr ctrl_magcompress_;
00067 MarControlPtr ctrl_normalize_;
00068 MarControlPtr ctrl_octaveCost_;
00069 MarControlPtr ctrl_voicingThreshold_;
00070 MarControlPtr ctrl_aliasedOutput_;
00071 MarControlPtr ctrl_makePositive_;
00072 MarControlPtr ctrl_setr0to1_;
00073 MarControlPtr ctrl_setr0to0_;
00074 MarControlPtr ctrl_lowCutoff_;
00075 MarControlPtr ctrl_highCutoff_;
00076
00077
00078 virtual void addControls();
00079 void myUpdate(MarControlPtr sender);
00080
00081 public:
00082 AutoCorrelation(std::string name);
00083 ~AutoCorrelation();
00084 AutoCorrelation(const AutoCorrelation& a);
00085
00086 MarSystem* clone() const;
00087
00088 void myProcess(realvec& in, realvec& out);
00089 };
00090
00091 }
00092
00093 #endif
00094
00095