summaryrefslogtreecommitdiffstats
path: root/src/track/beatfactory.h
blob: b2b71b2a7d05362663c889d78212e5807c28df9a (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
#pragma once

#include <QHash>

#include "audio/frame.h"
#include "audio/types.h"
#include "track/beats.h"
#include "track/bpm.h"

class Track;

class BeatFactory {
  public:
    static mixxx::BeatsPointer loadBeatsFromByteArray(
            mixxx::audio::SampleRate sampleRate,
            const QString& beatsVersion,
            const QString& beatsSubVersion,
            const QByteArray& beatsSerialized);
    static mixxx::BeatsPointer makeBeatGrid(
            mixxx::audio::SampleRate sampleRate,
            mixxx::Bpm bpm,
            mixxx::audio::FramePos firstBeatFramePos);

    static QString getPreferredVersion(bool fixedTempo);

    static QString getPreferredSubVersion(
            const QHash<QString, QString>& extraVersionInfo);

    static mixxx::BeatsPointer makePreferredBeats(
            const QVector<mixxx::audio::FramePos>& beats,
            const QHash<QString, QString>& extraVersionInfo,
            bool fixedTempo,
            mixxx::audio::SampleRate sampleRate);
};