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

#include <QHash>

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

class BeatFactory {
  public:
    static BeatsPointer loadBeatsFromByteArray(const Track& track,
                                               QString beatsVersion,
                                               QString beatsSubVersion,
                                               const QByteArray& beatsSerialized);
    static 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 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(Beats* pBeats);
};

#endif /* BEATFACTORY_H */