1 #pragma once 2 3 #include <QVector> 4 5 #include "audio/types.h" 6 #include "util/math.h" 7 8 class BeatUtils { 9 public: 10 struct ConstRegion { 11 double firstBeat; 12 double beatLength; 13 }; 14 15 static double calculateBpm(const QVector<double>& beats, 16 mixxx::audio::SampleRate sampleRate); 17 18 static QVector<ConstRegion> retrieveConstRegions( 19 const QVector<double>& coarseBeats, 20 mixxx::audio::SampleRate sampleRate); 21 22 static double calculateAverageBpm(int numberOfBeats, 23 mixxx::audio::SampleRate sampleRate, 24 double lowerFrame, 25 double upperFrame); 26 27 static double makeConstBpm( 28 const QVector<ConstRegion>& constantRegions, 29 mixxx::audio::SampleRate sampleRate, 30 double* pFirstBeat); 31 32 static double adjustPhase( 33 double firstBeat, 34 double bpm, 35 mixxx::audio::SampleRate sampleRate, 36 const QVector<double>& beats); 37 38 static QVector<double> getBeats(const QVector<ConstRegion>& constantRegions); 39 40 static double roundBpmWithinRange(double minBpm, double centerBpm, double maxBpm); 41 }; 42