qm-dsp 1.8
TempoTrack.h
Go to the documentation of this file.
1/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2
3/*
4 QM DSP Library
5
6 Centre for Digital Music, Queen Mary, University of London.
7 This file 2005-2006 Christian Landone.
8
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License as
11 published by the Free Software Foundation; either version 2 of the
12 License, or (at your option) any later version. See the file
13 COPYING included with this distribution for more information.
14*/
15
16#ifndef TEMPOTRACK_H
17#define TEMPOTRACK_H
18
19
20#include <stdio.h>
21#include <vector>
22
24#include "maths/Correlation.h"
26
27
28
29using std::vector;
30
32{
33 unsigned int pre;
34 unsigned int post;
35};
36
38{
39 unsigned int winLength; //Analysis window length
40 unsigned int lagLength; //Lag & Stride size
41 unsigned int alpha; //alpha-norm parameter
42 unsigned int LPOrd; // low-pass Filter order
43 double* LPACoeffs; //low pass Filter den coefficients
44 double* LPBCoeffs; //low pass Filter num coefficients
45 WinThresh WinT;//window size in frames for adaptive thresholding [pre post]:
46};
47
48
50{
51public:
52 TempoTrack( TTParams Params );
53 virtual ~TempoTrack();
54
55 vector<int> process( vector <double> DF, vector <double> *tempoReturn = 0);
56
57
58private:
59 void initialise( TTParams Params );
60 void deInitialise();
61
62 int beatPredict( unsigned int FSP, double alignment, double period, unsigned int step);
63 int phaseMM( double* DF, double* weighting, unsigned int winLength, double period );
64 void createPhaseExtractor( double* Filter, unsigned int winLength, double period, unsigned int fsp, unsigned int lastBeat );
65 int findMeter( double* ACF, unsigned int len, double period );
66 void constDetect( double* periodP, int currentIdx, int* flag );
67 void stepDetect( double* periodP, double* periodG, int currentIdx, int* flag );
68 void createCombFilter( double* Filter, unsigned int winLength, unsigned int TSig, double beatLag );
69 double tempoMM( double* ACF, double* weight, int sig );
70
71 unsigned int m_dataLength;
72 unsigned int m_winLength;
73 unsigned int m_lagLength;
74
75 double m_rayparam;
76 double m_sigma;
78
79 vector<int> m_beats; // Vector of detected beats
80
82
84 double* m_smoothRCF; // Smoothed Output of Comb Filterbank (m_tempoScratch)
85
86 // Processing Buffers
87 double* m_rawDFFrame; // Original Detection Function Analysis Frame
88 double* m_smoothDFFrame; // Smoothed Detection Function Analysis Frame
89 double* m_frameACF; // AutoCorrelation of Smoothed Detection Function
90
91 //Low Pass Coefficients for DF Smoothing
92 double* m_ACoeffs;
93 double* m_BCoeffs;
94
95 // Objetcs/operators declaration
99 // Config structure for DFProcess
101
102 // also want to smooth m_tempoScratch
104 // Config structure for RCFProcess
106
107
108
109};
110
111#endif
Digital filter specified through FilterConfig structure.
Definition Filter.h:39
double * m_rawDFFrame
Definition TempoTrack.h:87
double * m_smoothRCF
Definition TempoTrack.h:84
void initialise(TTParams Params)
virtual ~TempoTrack()
int findMeter(double *ACF, unsigned int len, double period)
double m_lockedTempo
Definition TempoTrack.h:81
void createPhaseExtractor(double *Filter, unsigned int winLength, double period, unsigned int fsp, unsigned int lastBeat)
double tempoMM(double *ACF, double *weight, int sig)
unsigned int m_lagLength
Definition TempoTrack.h:73
vector< int > m_beats
Definition TempoTrack.h:79
double m_DFWVNnorm
Definition TempoTrack.h:77
int phaseMM(double *DF, double *weighting, unsigned int winLength, double period)
double m_sigma
Definition TempoTrack.h:76
double * m_frameACF
Definition TempoTrack.h:89
int beatPredict(unsigned int FSP, double alignment, double period, unsigned int step)
DFProcess * m_RCFConditioning
Definition TempoTrack.h:103
double * m_tempoScratch
Definition TempoTrack.h:83
Correlation m_correlator
Definition TempoTrack.h:98
void createCombFilter(double *Filter, unsigned int winLength, unsigned int TSig, double beatLag)
double * m_smoothDFFrame
Definition TempoTrack.h:88
void stepDetect(double *periodP, double *periodG, int currentIdx, int *flag)
DFProcess * m_DFConditioning
Definition TempoTrack.h:97
double m_rayparam
Definition TempoTrack.h:75
DFProcConfig m_RCFPParams
Definition TempoTrack.h:105
vector< int > process(vector< double > DF, vector< double > *tempoReturn=0)
unsigned int m_dataLength
Definition TempoTrack.h:71
void constDetect(double *periodP, int currentIdx, int *flag)
Framer m_DFFramer
Definition TempoTrack.h:96
DFProcConfig m_DFPParams
Definition TempoTrack.h:100
unsigned int m_winLength
Definition TempoTrack.h:72
void deInitialise()
double * m_ACoeffs
Definition TempoTrack.h:92
double * m_BCoeffs
Definition TempoTrack.h:93
unsigned int LPOrd
Definition TempoTrack.h:42
double * LPACoeffs
Definition TempoTrack.h:43
unsigned int winLength
Definition TempoTrack.h:39
double * LPBCoeffs
Definition TempoTrack.h:44
unsigned int lagLength
Definition TempoTrack.h:40
WinThresh WinT
Definition TempoTrack.h:45
unsigned int alpha
Definition TempoTrack.h:41
unsigned int post
Definition TempoTrack.h:34
unsigned int pre
Definition TempoTrack.h:33