annotate dsp/tempotracking/TempoTrackV2.h @ 52:4d1f32efcafd

* Add Matthew's newer beat tracking implementation
author cannam
date Tue, 20 Jan 2009 15:01:01 +0000
parents
children 796170a9c8e4
rev   line source
cannam@52 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@52 2
cannam@52 3 /*
cannam@52 4 QM DSP Library
cannam@52 5
cannam@52 6 Centre for Digital Music, Queen Mary, University of London.
cannam@52 7 This file copyright 2008-2009 Matthew Davies and QMUL.
cannam@52 8 All rights reserved.
cannam@52 9 */
cannam@52 10
cannam@52 11
cannam@52 12 #ifndef TEMPOTRACKV2_H
cannam@52 13 #define TEMPOTRACKV2_H
cannam@52 14
cannam@52 15 #include <vector>
cannam@52 16
cannam@52 17 using std::vector;
cannam@52 18
cannam@52 19 class TempoTrackV2
cannam@52 20 {
cannam@52 21 public:
cannam@52 22 TempoTrackV2();
cannam@52 23 ~TempoTrackV2();
cannam@52 24
cannam@52 25 void calculateBeatPeriod(const vector<double> &df,
cannam@52 26 vector<double> &beatPeriod);
cannam@52 27
cannam@52 28 void calculateBeats(const vector<double> &df,
cannam@52 29 const vector<double> &beatPeriod,
cannam@52 30 vector<double> &beats);
cannam@52 31
cannam@52 32 private:
cannam@52 33 typedef vector<int> i_vec_t;
cannam@52 34 typedef vector<vector<int> > i_mat_t;
cannam@52 35 typedef vector<double> d_vec_t;
cannam@52 36 typedef vector<vector<double> > d_mat_t;
cannam@52 37
cannam@52 38 void adapt_thresh(d_vec_t &df);
cannam@52 39 double mean_array(const d_vec_t &dfin, int start, int end);
cannam@52 40 void filter_df(d_vec_t &df);
cannam@52 41 void get_rcf(const d_vec_t &dfframe, const d_vec_t &wv, d_vec_t &rcf);
cannam@52 42 void viterbi_decode(const d_mat_t &rcfmat, const d_vec_t &wv, d_vec_t &bp);
cannam@52 43 double get_max_val(const d_vec_t &df);
cannam@52 44 int get_max_ind(const d_vec_t &df);
cannam@52 45 void normalise_vec(d_vec_t &df);
cannam@52 46 };
cannam@52 47
cannam@52 48 #endif