00001 #ifndef MARSYAS_UPDATINGBASSMODEL_H
00002 #define MARSYAS_UPDATINGBASSMODEL_H
00003
00004 #include "MarSystem.h"
00005 #include <cstdlib>
00006 #include <ctime>
00007
00008 namespace Marsyas
00009 {
00030 class UpdatingBassModel: public MarSystem
00031 {
00032 private:
00033 mrs_natural K_;
00034 mrs_natural I_;
00035 mrs_natural rootMin_;
00036 mrs_natural rootMax_;
00037 mrs_natural rootBin_;
00038 realvec d_;
00039 realvec k_;
00040 realvec seg_;
00041 realvec time_;
00042 realvec freq_;
00043 realvec logFreq_;
00044 realvec start_;
00045 realvec counts_;
00046 realvec templates_;
00047 mrs_real lowFreq_;
00048 mrs_real highFreq_;
00049 mrs_real rootFreq_;
00050
00051 MarControlPtr ctrl_nTemplates_;
00052 MarControlPtr ctrl_nDevision_;
00053 MarControlPtr ctrl_segmentation_;
00054 MarControlPtr ctrl_time_;
00055 MarControlPtr ctrl_freq_;
00056 MarControlPtr ctrl_templates_;
00057 MarControlPtr ctrl_counts_;
00058 MarControlPtr ctrl_lowFreq_;
00059 MarControlPtr ctrl_highFreq_;
00060 MarControlPtr ctrl_rootFreq_;
00061 MarControlPtr ctrl_intervals_;
00062 MarControlPtr ctrl_selections_;
00063
00064 void addControls();
00065 void myUpdate(MarControlPtr sender);
00066
00067 public:
00068 UpdatingBassModel(std::string name);
00069 UpdatingBassModel(const UpdatingBassModel& a);
00070 ~UpdatingBassModel();
00071
00072 MarSystem* clone() const;
00073
00074 void myProcess(realvec& in, realvec& out);
00075 };
00076 }
00077
00078 #endif
00079