00001 #ifndef MARSYAS_MATCHBASSMODEL_H
00002 #define MARSYAS_MATCHBASSMODEL_H
00003
00004 #include "MarSystem.h"
00005 #include <cstdlib>
00006 #include <ctime>
00007
00008 namespace Marsyas
00009 {
00036 class MatchBassModel: public MarSystem
00037 {
00038 private:
00039 mrs_natural K_;
00040 mrs_natural I_;
00041 mrs_natural rootMin_;
00042 mrs_natural rootMax_;
00043 mrs_natural rootBin_;
00044 realvec d_;
00045 realvec k_;
00046 realvec seg_;
00047 realvec time_;
00048 realvec freq_;
00049 realvec logFreq_;
00050 realvec start_;
00051 realvec templates_;
00052 realvec covMatrix_;
00053 realvec i_featVec_;
00054 realvec j_featVec_;
00055 realvec stackedFeatVecs_;
00056 realvec metricResult_;
00057 realvec invec_;
00058 realvec costVector_;
00059 realvec distance_;
00060 mrs_real lowFreq_;
00061 mrs_real highFreq_;
00062 mrs_real rootFreq_;
00063 mrs_real totaldis_;
00064
00065 MarControlPtr ctrl_nTemplates_;
00066 MarControlPtr ctrl_nDevision_;
00067 MarControlPtr ctrl_segmentation_;
00068 MarControlPtr ctrl_time_;
00069 MarControlPtr ctrl_freq_;
00070 MarControlPtr ctrl_totalDistance_;
00071 MarControlPtr ctrl_lowFreq_;
00072 MarControlPtr ctrl_highFreq_;
00073 MarControlPtr ctrl_rootFreq_;
00074 MarControlPtr ctrl_templates_;
00075 MarControlPtr ctrl_intervals_;
00076 MarControlPtr ctrl_selections_;
00077 MarControlPtr ctrl_mode_;
00078 MarControlPtr ctrl_calcCovMatrix_;
00079 MarControlPtr ctrl_covMatrix_;
00080 MarControlPtr ctrl_stdDev_;
00081 MarControlPtr ctrl_normalize_;
00082 MarControlPtr ctrl_distance_;
00083
00084 void addControls();
00085 void myUpdate(MarControlPtr sender);
00086
00087 public:
00088 enum covMatrixType {
00089 noCovMatrix = 0,
00090 fixedStdDev = 1,
00091 diagCovMatrix = 2,
00092 fullCovMatrix = 3
00093 };
00094
00095 MatchBassModel(std::string name);
00096 MatchBassModel(const MatchBassModel& a);
00097 ~MatchBassModel();
00098
00099 MarSystem* clone() const;
00100
00101 void myProcess(realvec& in, realvec& out);
00102 };
00103 }
00104
00105 #endif
00106
00107