00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MARSYAS_PHASELOCK_H
00020 #define MARSYAS_PHASELOCK_H
00021
00022 #include "MarSystem.h"
00023 #include <string.h>
00024 using namespace std;
00025
00026 namespace Marsyas
00027 {
00059 class PhaseLock: public MarSystem
00060 {
00061 private:
00062
00063 void addControls();
00064 MarControlPtr ctrl_beatHypotheses_;
00065 MarControlPtr ctrl_inductionTime_;
00066 MarControlPtr ctrl_nrPeriodHyps_;
00067 MarControlPtr ctrl_nrPhasesPerPeriod_;
00068 MarControlPtr ctrl_scoreFunc_;
00069 MarControlPtr ctrl_tickCount_;
00070 MarControlPtr ctrl_mode_;
00071 MarControlPtr ctrl_hopSize_;
00072 MarControlPtr ctrl_srcFs_;
00073 MarControlPtr ctrl_gtBeatsFile_;
00074 MarControlPtr ctrl_backtrace_;
00075 MarControlPtr ctrl_innerMargin_;
00076 MarControlPtr ctrl_lftOutterMargin_;
00077 MarControlPtr ctrl_rgtOutterMargin_;
00078 MarControlPtr ctrl_corFactor_;
00079 MarControlPtr ctrl_maxPeriod_;
00080 MarControlPtr ctrl_minPeriod_;
00081 MarControlPtr ctrl_adjustment_;
00082 MarControlPtr ctrl_dumbInduction_;
00083 MarControlPtr ctrl_inductionOut_;
00084 MarControlPtr ctrl_triggerInduction_;
00085 MarControlPtr ctrl_curBestScore_;
00086 MarControlPtr ctrl_triggerBestScoreFactor_;
00087
00088 mrs_real lastGTIBI_;
00089 mrs_real triggerBestScoreFactor_;
00090 mrs_real lastGTBeatTime_;
00091 mrs_real curBestScore_;
00092 mrs_bool triggerInduction_;
00093 mrs_bool gtAfter2ndBeat_;
00094 mrs_string inductionOut_;
00095 mrs_bool dumbInduction_;
00096 mrs_real adjustment_;
00097 mrs_natural minPeriod_;
00098 mrs_natural maxPeriod_;
00099 mrs_natural innerMargin_;
00100 mrs_string gtBeatsFile_;
00101 mrs_bool inductionFinished_;
00102 mrs_natural hopSize_;
00103 mrs_real srcFs_;
00104 mrs_string mode_;
00105 mrs_string line_;
00106 ifstream inStream_;
00107 mrs_real gtScore_;
00108 mrs_natural gtInitPeriod_;
00109 mrs_natural gtLastPeriod_;
00110 mrs_string sourceFile_;
00111 mrs_natural gtInitPhase_;
00112 mrs_natural gtLastPhase_;
00113 mrs_string scoreFunc_;
00114 mrs_natural nrPhasesPerPeriod_;
00115 mrs_natural nrPeriodHyps_;
00116 mrs_natural inductionTime_;
00117 mrs_natural nInitHyp_;
00118 mrs_realvec beatHypotheses_;
00119 mrs_realvec hypSignals_;
00120 mrs_realvec firstBeatPoint_;
00121 mrs_realvec trackingScore_;
00122 mrs_natural timeElapsed_;
00123 mrs_realvec maxLocalTrackingScore_;
00124 mrs_realvec maxLocalTrackingScoreInd_;
00125 mrs_realvec metricalSalience_;
00126 mrs_realvec rawScore_;
00127 mrs_realvec rawScoreNorm_;
00128 mrs_realvec metricalRelScore_;
00129 mrs_realvec scoreNorm_;
00130 mrs_realvec initPhases_;
00131 mrs_realvec lastPhases_;
00132 mrs_realvec initPeriods_;
00133 mrs_realvec lastPeriods_;
00134 mrs_realvec beatCount_;
00135 mrs_bool backtrace_;
00136 mrs_natural outterWinLft_;
00137 mrs_natural outterWinRgt_;
00138 mrs_real lftOutterMargin_;
00139 mrs_real rgtOutterMargin_;
00140 mrs_real corFactor_;
00141
00142 void myUpdate(MarControlPtr sender);
00143 mrs_real calcRelationalScore(mrs_natural i, mrs_realvec rawScoreVec);
00144 mrs_natural metricalRelation(mrs_real period1, mrs_real period2);
00145 void regularFunc(realvec& in, realvec& out);
00146 mrs_realvec readGTFile(mrs_string gtFilePath);
00147 void handleGTHypotheses(realvec& in, realvec& out, mrs_string gtFilePath, mrs_realvec gtHypotheses);
00148 mrs_realvec GTInitialization(realvec& in, realvec& out, mrs_natural gtIniPhase,
00149 mrs_natural gtInitPeriod);
00150 void forceInitPeriods(mrs_string mode);
00151
00152 public:
00153 PhaseLock(std::string name);
00154 PhaseLock(const PhaseLock& a);
00155 ~PhaseLock();
00156 MarSystem* clone() const;
00157
00158 void myProcess(realvec& in, realvec& out);
00159 };
00160
00161 }
00162
00163 #endif