annotate dsp/onsets/PeakPicking.h @ 6:a9bf0cfe9383

* Make tempo tracker return locked tempo as well as beats
author cannam
date Fri, 08 Dec 2006 18:05:36 +0000
parents d7116e3183f8
children da277e8b5244
rev   line source
cannam@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@0 2
cannam@0 3 /*
cannam@0 4 QM DSP Library
cannam@0 5
cannam@0 6 Centre for Digital Music, Queen Mary, University of London.
cannam@0 7 This file copyright 2005-2006 Christian Landone.
cannam@0 8 All rights reserved.
cannam@0 9 */
cannam@0 10
cannam@0 11 // PeakPicking.h: interface for the PeakPicking class.
cannam@0 12 //
cannam@0 13 //////////////////////////////////////////////////////////////////////
cannam@0 14
cannam@0 15 #ifndef PEAKPICKING_H
cannam@0 16 #define PEAKPICKING_H
cannam@0 17
cannam@0 18 #include "dsp/maths/MathUtilities.h"
cannam@0 19 #include "dsp/maths/MathAliases.h"
cannam@0 20 #include "dsp/signalconditioning/DFProcess.h"
cannam@0 21
cannam@0 22
cannam@0 23 struct WinThresh
cannam@0 24 {
cannam@0 25 unsigned int pre;
cannam@0 26 unsigned int post;
cannam@0 27 };
cannam@0 28
cannam@0 29 struct QFitThresh
cannam@0 30 {
cannam@0 31 double a;
cannam@0 32 double b;
cannam@0 33 double c;
cannam@0 34 };
cannam@0 35
cannam@0 36 struct PPickParams
cannam@0 37 {
cannam@0 38 unsigned int length; //Detection FunctionLength
cannam@0 39 double tau; // time resolution of the detection function:
cannam@0 40 unsigned int alpha; //alpha-norm parameter
cannam@0 41 double cutoff;//low-pass Filter cutoff freq
cannam@0 42 unsigned int LPOrd; // low-pass Filter order
cannam@0 43 double* LPACoeffs; //low pass Filter den coefficients
cannam@0 44 double* LPBCoeffs; //low pass Filter num coefficients
cannam@0 45 WinThresh WinT;//window size in frames for adaptive thresholding [pre post]:
cannam@0 46 QFitThresh QuadThresh;
cannam@0 47 };
cannam@0 48
cannam@0 49 class PeakPicking
cannam@0 50 {
cannam@0 51 public:
cannam@0 52 PeakPicking( PPickParams Config );
cannam@0 53 virtual ~PeakPicking();
cannam@0 54
cannam@0 55 void process( double* src, unsigned int len, vector<int> &onsets );
cannam@0 56
cannam@0 57
cannam@0 58 private:
cannam@0 59 void initialise( PPickParams Config );
cannam@0 60 void deInitialise();
cannam@0 61 int quadEval( vector<double> &src, vector<int> &idx );
cannam@0 62
cannam@0 63 DFProcConfig m_DFProcessingParams;
cannam@0 64
cannam@0 65 unsigned int m_DFLength ;
cannam@0 66 double m_alphaNormParam ;
cannam@0 67 double Qfilta ;
cannam@0 68 double Qfiltb;
cannam@0 69 double Qfiltc;
cannam@0 70
cannam@0 71
cannam@0 72 double* m_workBuffer;
cannam@0 73
cannam@0 74 DFProcess* m_DFSmoothing;
cannam@0 75 };
cannam@0 76
cannam@0 77 #endif