adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
52 BTrack (
int hopSize,
int frameSize);
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
119 void initialise (
int hopSize);
adamstark@114:
adamstark@114:
124 void setHopSize (
int hopSize);
adamstark@114:
adamstark@114:
127 void resampleOnsetDetectionFunction();
adamstark@114:
adamstark@114:
132 void updateCumulativeScore (
double onsetDetectionFunctionSample);
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
138 void calculateTempo();
adamstark@114:
adamstark@114:
144 void adaptiveThreshold (std::vector<double>& x);
adamstark@114:
adamstark@114:
152 double calculateMeanOfVector (std::vector<double>& vector,
int startIndex,
int endIndex);
adamstark@114:
adamstark@114:
157 void normaliseVector (std::vector<double>& vector);
adamstark@114:
adamstark@114:
162 void calculateBalancedACF (std::vector<double>& onsetDetectionFunction);
adamstark@114:
adamstark@114:
165 void calculateOutputOfCombFilterBank();
adamstark@114:
adamstark@114:
168 void createLogGaussianTransitionWeighting (
double* weightingArray,
int numSamples,
double beatPeriod);
adamstark@114:
adamstark@114:
171 template <
typename T>
adamstark@114:
172 double calculateNewCumulativeScoreValue (T cumulativeScoreArray,
double* logGaussianTransitionWeighting,
int startIndex,
int endIndex,
double onsetDetectionFunctionSample,
double alphaWeightingFactor);
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
185 std::vector<double> resampledOnsetDF;
adamstark@114:
186 std::vector<double> acf;
adamstark@114:
187 std::vector<double> weightingVector;
adamstark@114:
188 std::vector<double> combFilterBankOutput;
adamstark@114:
189 std::vector<double> tempoObservationVector;
adamstark@114:
190 std::vector<double> delta;
adamstark@114:
191 std::vector<double> prevDelta;
adamstark@114:
192 std::vector<double> prevDeltaFixed;
adamstark@114:
193 double tempoTransitionMatrix[41][41];
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
201 double estimatedTempo;
adamstark@114:
202 int timeToNextPrediction;
adamstark@114:
adamstark@114:
adamstark@114:
205 int onsetDFBufferSize;
adamstark@114:
adamstark@114:
adamstark@114:
208 int FFTLengthForACFCalculation;
adamstark@114:
adamstark@114:
211 fftw_plan acfForwardFFT;
adamstark@114:
212 fftw_plan acfBackwardFFT;
adamstark@114:
213 fftw_complex* complexIn;
adamstark@114:
214 fftw_complex* complexOut;
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
218 kiss_fft_cfg cfgForwards;
adamstark@114:
219 kiss_fft_cfg cfgBackwards;
adamstark@114:
adamstark@114:
221 kiss_fft_cpx* fftOut;
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
adamstark@114:
A class for calculating onset detection functions.
adamstark@114:
adamstark@114:
double getCurrentTempoEstimate()
Definition BTrack.cpp:192
adamstark@114:
void doNotFixTempo()
Definition BTrack.cpp:340
adamstark@114:
BTrack()
Definition BTrack.cpp:30
adamstark@114:
~BTrack()
Definition BTrack.cpp:51
adamstark@114:
void fixTempo(double tempo)
Definition BTrack.cpp:314
adamstark@114:
void processOnsetDetectionFunctionSample(double sample)
Definition BTrack.cpp:220
adamstark@114:
double getLatestCumulativeScoreValue()
Definition BTrack.cpp:204
adamstark@114:
void setTempo(double tempo)
Definition BTrack.cpp:256
adamstark@114:
static double getBeatTimeInSeconds(long frameNumber, int hopSize, int fs)
Definition BTrack.cpp:70
adamstark@114:
void processAudioFrame(double *frame)
Definition BTrack.cpp:210
adamstark@114:
int getHopSize()
Definition BTrack.cpp:198
adamstark@114:
bool beatDueInCurrentFrame()
Definition BTrack.cpp:186
adamstark@114:
void updateHopAndFrameSize(int hopSize, int frameSize)
Definition BTrack.cpp:176
adamstark@114:
Definition CircularBuffer.h:34
adamstark@114:
Definition OnsetDetectionFunction.h:65
adamstark@60: