Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Beats: Hide beatmap/beatgrid implementation from calling code #4268

Merged
merged 3 commits into from
Sep 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions src/analyzer/analyzerbeats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@
#include "analyzer/plugins/analyzersoundtouchbeats.h"
#include "library/rekordbox/rekordboxconstants.h"
#include "track/beatfactory.h"
#include "track/beatgrid.h"
#include "track/beatmap.h"
#include "track/beatutils.h"
#include "track/track.h"

Expand Down Expand Up @@ -235,7 +233,7 @@ void AnalyzerBeats::storeResults(TrackPointer pTrack) {
} else {
mixxx::Bpm bpm = m_pPlugin->getBpm();
qDebug() << "AnalyzerBeats plugin detected constant BPM: " << bpm;
pBeats = mixxx::BeatGrid::makeBeatGrid(m_sampleRate, bpm, mixxx::audio::kStartFramePos);
pBeats = mixxx::Beats::fromConstTempo(m_sampleRate, mixxx::audio::kStartFramePos, bpm);
}

pTrack->trySetBeats(pBeats);
Expand Down
5 changes: 2 additions & 3 deletions src/library/dao/trackdao.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
#include "library/trackset/crate/cratestorage.h"
#include "moc_trackdao.cpp"
#include "sources/soundsourceproxy.h"
#include "track/beatgrid.h"
#include "track/beats.h"
#include "track/globaltrackcache.h"
#include "track/keyfactory.h"
Expand Down Expand Up @@ -1245,8 +1244,8 @@ bool setTrackBeats(const QSqlRecord& record, const int column, Track* pTrack) {
}
} else if (bpm.isValid()) {
// Load a temporary beat grid without offset that will be replaced by the analyzer.
const auto pBeats = mixxx::BeatGrid::makeBeatGrid(
pTrack->getSampleRate(), bpm, mixxx::audio::kStartFramePos);
const auto pBeats = mixxx::Beats::fromConstTempo(
pTrack->getSampleRate(), mixxx::audio::kStartFramePos, bpm);
pTrack->trySetBeats(pBeats);
} else {
pTrack->trySetBeats(nullptr);
Expand Down
13 changes: 6 additions & 7 deletions src/library/dlgtrackinfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
#include "moc_dlgtrackinfo.cpp"
#include "preferences/colorpalettesettings.h"
#include "sources/soundsourceproxy.h"
#include "track/beatgrid.h"
#include "track/beatutils.h"
#include "track/keyfactory.h"
#include "track/keyutils.h"
Expand Down Expand Up @@ -573,10 +572,10 @@ void DlgTrackInfo::slotBpmConstChanged(int state) {
// The cue point should be set on a beat, so this seems
// to be a good alternative
const mixxx::audio::FramePos cuePosition = m_pLoadedTrack->getMainCuePosition();
m_pBeatsClone = mixxx::BeatGrid::makeBeatGrid(
m_pBeatsClone = mixxx::Beats::fromConstTempo(
m_pLoadedTrack->getSampleRate(),
bpm,
cuePosition);
cuePosition,
bpm);
} else {
m_pBeatsClone.reset();
}
Expand Down Expand Up @@ -612,10 +611,10 @@ void DlgTrackInfo::slotSpinBpmValueChanged(double value) {

if (!m_pBeatsClone) {
const mixxx::audio::FramePos cuePosition = m_pLoadedTrack->getMainCuePosition();
m_pBeatsClone = mixxx::BeatGrid::makeBeatGrid(
m_pBeatsClone = mixxx::Beats::fromConstTempo(
m_pLoadedTrack->getSampleRate(),
bpm,
cuePosition);
cuePosition,
bpm);
}

const mixxx::Bpm oldValue = m_pBeatsClone->getBpm();
Expand Down
8 changes: 4 additions & 4 deletions src/library/rekordbox/rekordboxfeature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include "library/trackcollectionmanager.h"
#include "library/treeitem.h"
#include "moc_rekordboxfeature.cpp"
#include "track/beatmap.h"
#include "track/beats.h"
#include "track/cue.h"
#include "track/keyfactory.h"
#include "track/track.h"
Expand Down Expand Up @@ -938,10 +938,10 @@ void readAnalyze(TrackPointer track,
beats << mixxx::audio::FramePos(sampleRateKhz * static_cast<double>(time));
}

const auto pBeats = mixxx::BeatMap::makeBeatMap(
const auto pBeats = mixxx::Beats::fromBeatPositions(
sampleRate,
mixxx::rekordboxconstants::beatsSubversion,
beats);
beats,
mixxx::rekordboxconstants::beatsSubversion);
track->trySetBeats(pBeats);
} break;
case rekordbox_anlz_t::SECTION_TAGS_CUES: {
Expand Down
20 changes: 10 additions & 10 deletions src/test/beatgridtest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <QtDebug>

#include "track/beatgrid.h"
#include "track/beats.h"
#include "track/track.h"
#include "util/memory.h"

Expand All @@ -29,9 +29,9 @@ TEST(BeatGridTest, Scale) {
constexpr mixxx::Bpm bpm(60.0);
pTrack->trySetBpm(bpm.value());

auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(),
mixxx::Bpm(bpm),
mixxx::audio::kStartFramePos);
auto pGrid = Beats::fromConstTempo(pTrack->getSampleRate(),
mixxx::audio::kStartFramePos,
mixxx::Bpm(bpm));

EXPECT_DOUBLE_EQ(bpm.value(), pGrid->getBpm().value());
pGrid = pGrid->scale(Beats::BpmScale::Double);
Expand Down Expand Up @@ -61,9 +61,9 @@ TEST(BeatGridTest, TestNthBeatWhenOnBeat) {
pTrack->trySetBpm(bpm);
constexpr mixxx::audio::FrameDiff_t beatLengthFrames = 60.0 * sampleRate / bpm;

auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(),
mixxx::Bpm(bpm),
mixxx::audio::kStartFramePos);
auto pGrid = Beats::fromConstTempo(pTrack->getSampleRate(),
mixxx::audio::kStartFramePos,
mixxx::Bpm(bpm));
// Pretend we're on the 20th beat;
constexpr mixxx::audio::FramePos position(beatLengthFrames * 20);

Expand Down Expand Up @@ -105,9 +105,9 @@ TEST(BeatGridTest, TestNthBeatWhenNotOnBeat) {
pTrack->trySetBpm(bpm.value());
const mixxx::audio::FrameDiff_t beatLengthFrames = 60.0 * sampleRate / bpm.value();

auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(),
bpm,
mixxx::audio::kStartFramePos);
auto pGrid = Beats::fromConstTempo(pTrack->getSampleRate(),
mixxx::audio::kStartFramePos,
bpm);

// Pretend we're half way between the 20th and 21st beat
const mixxx::audio::FramePos previousBeat(beatLengthFrames * 20.0);
Expand Down
18 changes: 9 additions & 9 deletions src/test/beatmaptest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

#include <QtDebug>

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

using namespace mixxx;
Expand Down Expand Up @@ -60,7 +60,7 @@ TEST_F(BeatMapTest, Scale) {
// Note beats must be in frames, not samples.
QVector<mixxx::audio::FramePos> beats =
createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
auto pMap = Beats::fromBeatPositions(m_pTrack->getSampleRate(), beats);

EXPECT_DOUBLE_EQ(bpm.value(), pMap->getBpm().value());
pMap = pMap->scale(Beats::BpmScale::Double);
Expand Down Expand Up @@ -91,7 +91,7 @@ TEST_F(BeatMapTest, TestNthBeat) {
// Note beats must be in frames, not samples.
QVector<mixxx::audio::FramePos> beats =
createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
auto pMap = Beats::fromBeatPositions(m_pTrack->getSampleRate(), beats);

// Check edge cases
const mixxx::audio::FramePos firstBeat = startOffsetFrames + beatLengthFrames * 0;
Expand Down Expand Up @@ -137,7 +137,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenOnBeat) {
// Note beats must be in frames, not samples.
QVector<mixxx::audio::FramePos> beats =
createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
auto pMap = Beats::fromBeatPositions(m_pTrack->getSampleRate(), beats);

// Pretend we're on the 20th beat;
const int curBeat = 20;
Expand Down Expand Up @@ -180,7 +180,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenNotOnBeat) {
// Note beats must be in frames, not samples.
QVector<mixxx::audio::FramePos> beats =
createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
auto pMap = Beats::fromBeatPositions(m_pTrack->getSampleRate(), beats);

// Pretend we're half way between the 20th and 21st beat
const mixxx::audio::FramePos previousBeat = startOffsetFrames + beatLengthFrames * 20.0;
Expand Down Expand Up @@ -225,7 +225,7 @@ TEST_F(BeatMapTest, TestBpmAround) {
beat_pos += beat_length;
}

auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
auto pMap = Beats::fromBeatPositions(m_pTrack->getSampleRate(), beats);

// The average of the first 8 beats should be different than the average
// of the last 8 beats.
Expand All @@ -251,7 +251,7 @@ TEST_F(BeatMapTest, TestBpmAround) {
// Try a really, really short track
constexpr auto startFramePos = mixxx::audio::FramePos(10);
beats = createBeatVector(startFramePos, 3, approx_beat_length);
pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
pMap = Beats::fromBeatPositions(m_pTrack->getSampleRate(), beats);
EXPECT_DOUBLE_EQ(filebpm.value(),
pMap->getBpmAroundPosition(
mixxx::audio::kStartFramePos + 1 * approx_beat_length,
Expand All @@ -271,7 +271,7 @@ TEST_F(BeatMapTest, FindBeatsWithFractionalPos) {
for (; beatPos <= lastBeatPos; beatPos += beatLengthFrames) {
beats.append(beatPos);
}
const auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
const auto pMap = Beats::fromBeatPositions(m_pTrack->getSampleRate(), beats);

// All beats are in range
auto it = pMap->findBeats(mixxx::audio::kStartFramePos, lastBeatPos);
Expand Down Expand Up @@ -318,7 +318,7 @@ TEST_F(BeatMapTest, HasBeatInRangeWithFractionalPos) {
for (; beatPos <= lastBeatPos; beatPos += beatLengthFrames) {
beats.append(beatPos);
}
const auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
const auto pMap = Beats::fromBeatPositions(m_pTrack->getSampleRate(), beats);

const mixxx::audio::FrameDiff_t halfBeatLengthFrames = beatLengthFrames / 2;
EXPECT_TRUE(pMap->hasBeatInRange(mixxx::audio::kStartFramePos,
Expand Down
10 changes: 5 additions & 5 deletions src/test/beatstranslatetest.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "test/mockedenginebackendtest.h"
#include "track/beatgrid.h"
#include "track/beats.h"
#include "util/memory.h"

class BeatsTranslateTest : public MockedEngineBackendTest {
Expand All @@ -9,14 +9,14 @@ TEST_F(BeatsTranslateTest, SimpleTranslateMatch) {
// Set up BeatGrids for decks 1 and 2.
const auto bpm = mixxx::Bpm(60.0);
constexpr auto firstBeat = mixxx::audio::kStartFramePos;
auto grid1 = mixxx::BeatGrid::makeBeatGrid(
m_pTrack1->getSampleRate(), bpm, firstBeat);
auto grid1 = mixxx::Beats::fromConstTempo(
m_pTrack1->getSampleRate(), firstBeat, bpm);
m_pTrack1->trySetBeats(grid1);
ASSERT_DOUBLE_EQ(firstBeat.value(),
grid1->findClosestBeat(mixxx::audio::kStartFramePos).value());

auto grid2 = mixxx::BeatGrid::makeBeatGrid(
m_pTrack2->getSampleRate(), bpm, firstBeat);
auto grid2 = mixxx::Beats::fromConstTempo(
m_pTrack2->getSampleRate(), firstBeat, bpm);
m_pTrack2->trySetBeats(grid2);
ASSERT_DOUBLE_EQ(firstBeat.value(),
grid2->findClosestBeat(mixxx::audio::kStartFramePos).value());
Expand Down
14 changes: 7 additions & 7 deletions src/test/bpmcontrol_test.cpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#include "engine/controls/bpmcontrol.h"

#include <gtest/gtest.h>

#include <QtDebug>
#include <QScopedPointer>
#include <QtDebug>

#include "mixxxtest.h"
#include "control/controlobject.h"
#include "control/controlpushbutton.h"
#include "engine/controls/bpmcontrol.h"
#include "track/beatgrid.h"
#include "track/beatmap.h"
#include "mixxxtest.h"
#include "track/beats.h"
#include "track/track.h"

class BpmControlTest : public MixxxTest {
Expand All @@ -35,8 +35,8 @@ TEST_F(BpmControlTest, BeatContext_BeatGrid) {
const auto bpm = mixxx::Bpm(60.0);
const mixxx::audio::FrameDiff_t expectedBeatLengthFrames = (60.0 * sampleRate / bpm.value());

const mixxx::BeatsPointer pBeats = mixxx::BeatGrid::makeBeatGrid(
pTrack->getSampleRate(), bpm, mixxx::audio::kStartFramePos);
const mixxx::BeatsPointer pBeats = mixxx::Beats::fromConstTempo(
pTrack->getSampleRate(), mixxx::audio::kStartFramePos, bpm);

// On a beat.
mixxx::audio::FramePos prevBeatPosition;
Expand Down
Loading