summaryrefslogtreecommitdiffstats
path: root/src/track/beatfactory.h
blob: cb25021f19d2035d5e5dfe8462a99d5a87395be8 (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
41
#ifndef BEATFACTORY_H
#define BEATFACTORY_H

#include <QHash>

#include "track/beats.h"
#include "track/track.h"

class BeatFactory {
  public:
    static mixxx::BeatsPointer loadBeatsFromByteArray(const Track& track,
            QString beatsVersion,
            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,
            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);
};

#endif /* BEATFACTORY_H */