summaryrefslogtreecommitdiffstats
path: root/src/track/beatfactory.h
blob: 84012ef4a857152bc712004903bd226f3f50cbf2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#pragma once

#include <QHash>

#include "track/beats.h"

class Track;

class BeatFactory {
  public:
    static mixxx::BeatsPointer loadBeatsFromByteArray(const Track& track,
            const QString& beatsVersion,
            const QString& beatsSubVersion,
            const QByteArray& beatsSerialized);
    static mixxx::BeatsPointer makeBeatGrid(const Track& track,
            double dBpm,
            double dFirstBeatSample);

    static QString getPreferredVersion(const bool bEnableFixedTempoCorrection);

    static QString getPreferredSubVersion(
            const bool bEnableFixedTempoCorrection,
            const bool bEnableOffsetCorrection,
            const int iMinBpm,
            const int iMaxBpm,
            const QHash<QString, QString>& extraVersionInfo);

    static mixxx::BeatsPointer makePreferredBeats(const Track& track,
            const QVector<double>& beats,
            const QHash<QString, QString>& extraVersionInfo,
            const bool bEnableFixedTempoCorrection,
            const bool bEnableOffsetCorrection,
            const int iSampleRate,
            const int iTotalSamples,
            const int iMinBpm,
            const int iMaxBpm);

  private:
    static void deleteBeats(mixxx::Beats* pBeats);
};