Mercurial > hg > multitrack-audio-matcher
diff src/TempoFollower.h @ 19:1a62561bd72d
Added in tempo follower class that models the tempo of played events
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Thu, 09 Feb 2012 18:09:34 +0000 |
parents | |
children | 4f6006cac9de |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/TempoFollower.h Thu Feb 09 18:09:34 2012 +0000 @@ -0,0 +1,55 @@ +/* + * TempoFollower.h + * MultipleAudioMathcher + * + * Created by Andrew on 09/02/2012. + * Copyright 2012 QMUL. All rights reserved. + * + */ + +#ifndef TEMPO_FOLLOWER_H +#define TEMPO_FOLLOWER_H + +#define NUMBER_OF_CHANNELS 3 + +#include "ofMain.h" +#include "DynamicVector.h" +#include "ofxWindowRegion.h" + +class TempoFollower{ + +public: + TempoFollower(); + + DynamicVector tempoPrior; + DynamicVector tempoPosterior; + DynamicVector tempoLikelihood; + int tempoArraySize; + int minimumTempoInterval, maximumTempoInterval; + + double playingTempo; + + void reset(); + + //TEMPO STUFF + + typedef std::vector<double> DoubleVector; + typedef std::vector<DoubleVector> DoubleMatrix; + typedef std::vector<DoubleMatrix> DoubleCube; + DoubleCube tempoIntervals;//channel, event index, vector of interval times + + + typedef std::vector<int> IntVector; + typedef std::vector<IntVector> IntMatrix; + IntMatrix eventTimes; + void setUpEventTimeMatrix(); + void printEventTimes(); + + void updateTempo(const int& channel, const int& timeIn); + bool testTempoInterval(const int& channel, const double& testTempoInterval, DoubleVector& d); + void updateTempoDistribution(const DoubleVector& d); + void calculatePosterior(); + void drawTempoArray(ofxWindowRegion& window); + +}; +#endif \ No newline at end of file