24 lines
607 B
C++
24 lines
607 B
C++
|
#include "tools/beatutils.h"
|
||
|
#include <numeric>
|
||
|
#include <iostream>
|
||
|
|
||
|
auto beat_utils::calculateBeatRateInfo(const std::vector<microsec>& approximate_deltas) -> BeatInfo
|
||
|
{
|
||
|
if (approximate_deltas.empty())
|
||
|
return {};
|
||
|
|
||
|
const microsec sum = std::accumulate(approximate_deltas.begin(), approximate_deltas.end(), 0);
|
||
|
const std::size_t amount = approximate_deltas.size();
|
||
|
|
||
|
long double average = static_cast<long double>(sum)
|
||
|
/ static_cast<long double>(amount);
|
||
|
|
||
|
|
||
|
|
||
|
return BeatInfo
|
||
|
{
|
||
|
60000000. / average,
|
||
|
static_cast<microsec>(average)
|
||
|
};
|
||
|
}
|