project-kyoku/include/tools/bpmcalculator.h

24 lines
468 B
C++

#pragma once
#include "tools/music.h"
#include <memory>
#include <vector>
class BPMCalculator
{
public:
explicit BPMCalculator(const std::shared_ptr<Music>& music);
void setMusic(const std::shared_ptr<Music>& music);
std::shared_ptr<Music> music() const;
void start();
void click();
int getCurrentApproximation() const;
private:
std::shared_ptr<Music> _music;
std::vector<microsec> _deltas;
microsec _previous_click_offset;
};