1 #pragma once
2 
3 #include <QHash>
4 
5 #include "audio/types.h"
6 #include "track/beats.h"
7 
8 class Track;
9 
10 class BeatFactory {
11   public:
12     static mixxx::BeatsPointer loadBeatsFromByteArray(
13             mixxx::audio::SampleRate sampleRate,
14             const QString& beatsVersion,
15             const QString& beatsSubVersion,
16             const QByteArray& beatsSerialized);
17     static mixxx::BeatsPointer makeBeatGrid(
18             mixxx::audio::SampleRate sampleRate,
19             double dBpm,
20             double dFirstBeatSample);
21 
22     static QString getPreferredVersion(bool fixedTempo);
23 
24     static QString getPreferredSubVersion(
25             const QHash<QString, QString>& extraVersionInfo);
26 
27     static mixxx::BeatsPointer makePreferredBeats(
28             const QVector<double>& beats,
29             const QHash<QString, QString>& extraVersionInfo,
30             bool fixedTempo,
31             mixxx::audio::SampleRate sampleRate);
32 };
33