summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/analyzer/analyzerbeats.cpp3
-rw-r--r--src/library/banshee/bansheeplaylistmodel.cpp5
-rw-r--r--src/library/dao/trackdao.cpp2
-rw-r--r--src/library/dlgtrackinfo.cpp6
-rw-r--r--src/library/rekordbox/rekordboxfeature.cpp2
-rw-r--r--src/test/beatgridtest.cpp10
-rw-r--r--src/test/beatmaptest.cpp16
-rw-r--r--src/test/beatstranslatetest.cpp6
-rw-r--r--src/test/bpmcontrol_test.cpp2
-rw-r--r--src/test/enginesynctest.cpp166
-rw-r--r--src/track/beatfactory.cpp17
-rw-r--r--src/track/beatfactory.h8
-rw-r--r--src/track/beatgrid.cpp23
-rw-r--r--src/track/beatgrid.h22
-rw-r--r--src/track/beatmap.cpp18
-rw-r--r--src/track/beatmap.h17
-rw-r--r--src/track/track.cpp3
17 files changed, 146 insertions, 180 deletions
diff --git a/src/analyzer/analyzerbeats.cpp b/src/analyzer/analyzerbeats.cpp
index 2754eaa5d0..1a1ada5b16 100644
--- a/src/analyzer/analyzerbeats.cpp
+++ b/src/analyzer/analyzerbeats.cpp
@@ -237,7 +237,6 @@ void AnalyzerBeats::storeResults(TrackPointer tio) {
QHash<QString, QString> extraVersionInfo = getExtraVersionInfo(
m_pluginId, m_bPreferencesFastAnalysis);
pBeats = BeatFactory::makePreferredBeats(
- *tio,
beats,
extraVersionInfo,
m_bPreferencesFixedTempo,
@@ -251,7 +250,7 @@ void AnalyzerBeats::storeResults(TrackPointer tio) {
} else {
float bpm = m_pPlugin->getBpm();
qDebug() << "AnalyzerBeats plugin detected constant BPM: " << bpm;
- pBeats = BeatFactory::makeBeatGrid(*tio, bpm, 0.0f);
+ pBeats = BeatFactory::makeBeatGrid(m_iSampleRate, bpm, 0.0f);
}
mixxx::BeatsPointer pCurrentBeats = tio->getBeats();
diff --git a/src/library/banshee/bansheeplaylistmodel.cpp b/src/library/banshee/bansheeplaylistmodel.cpp
index 70aacfce9c..6590377225 100644
--- a/src/library/banshee/bansheeplaylistmodel.cpp
+++ b/src/library/banshee/bansheeplaylistmodel.cpp
@@ -291,11 +291,6 @@ TrackPointer BansheePlaylistModel::getTrack(const QModelIndex& index) const {
pTrack->setBitrate(getFieldString(index, CLM_BITRATE).toInt());
pTrack->setComment(getFieldString(index, CLM_COMMENT));
pTrack->setComposer(getFieldString(index, CLM_COMPOSER));
- // If the track has a BPM, then give it a static beatgrid.
- if (bpm > 0) {
- mixxx::BeatsPointer pBeats = BeatFactory::makeBeatGrid(*pTrack, bpm, 0.0);
- pTrack->setBeats(pBeats);
- }
}
return pTrack;
}
diff --git a/src/library/dao/trackdao.cpp b/src/library/dao/trackdao.cpp
index 9b66cb4341..ca26e8e45d 100644
--- a/src/library/dao/trackdao.cpp
+++ b/src/library/dao/trackdao.cpp
@@ -1088,7 +1088,7 @@ bool setTrackBeats(const QSqlRecord& record, const int column,
QByteArray beatsBlob = record.value(column + 3).toByteArray();
bool bpmLocked = record.value(column + 4).toBool();
mixxx::BeatsPointer pBeats = BeatFactory::loadBeatsFromByteArray(
- *pTrack, beatsVersion, beatsSubVersion, beatsBlob);
+ pTrack->getSampleRate(), beatsVersion, beatsSubVersion, beatsBlob);
if (pBeats) {
pTrack->setBeats(pBeats);
} else {
diff --git a/src/library/dlgtrackinfo.cpp b/src/library/dlgtrackinfo.cpp
index 24f41cd203..1763ff85de 100644
--- a/src/library/dlgtrackinfo.cpp
+++ b/src/library/dlgtrackinfo.cpp
@@ -524,11 +524,11 @@ void DlgTrackInfo::slotBpmConstChanged(int state) {
// it is hard to predict a fitting beat. We know that we
// cannot use the first beat, since it is out of sync in
// almost all cases.
- // The cue point should be set on a beat, so this seams
+ // The cue point should be set on a beat, so this seems
// to be a good alternative
CuePosition cue = m_pLoadedTrack->getCuePoint();
m_pBeatsClone = BeatFactory::makeBeatGrid(
- *m_pLoadedTrack, spinBpm->value(), cue.getPosition());
+ m_pLoadedTrack->getSampleRate(), spinBpm->value(), cue.getPosition());
} else {
m_pBeatsClone.clear();
}
@@ -562,7 +562,7 @@ void DlgTrackInfo::slotSpinBpmValueChanged(double value) {
if (!m_pBeatsClone) {
CuePosition cue = m_pLoadedTrack->getCuePoint();
m_pBeatsClone = BeatFactory::makeBeatGrid(
- *m_pLoadedTrack, value, cue.getPosition());
+ m_pLoadedTrack->getSampleRate(), value, cue.getPosition());
}
double oldValue = m_pBeatsClone->getBpm();
diff --git a/src/library/rekordbox/rekordboxfeature.cpp b/src/library/rekordbox/rekordboxfeature.cpp
index a1914785c2..c15258fc47 100644
--- a/src/library/rekordbox/rekordboxfeature.cpp
+++ b/src/library/rekordbox/rekordboxfeature.cpp
@@ -866,7 +866,7 @@ void readAnalyze(TrackPointer track,
beats << (sampleRateKhz * static_cast<double>(time));
}
- auto pBeats = mixxx::BeatMap::makeBeatMap(*track,
+ auto pBeats = mixxx::BeatMap::makeBeatMap(
static_cast<SINT>(sampleRate),
mixxx::rekordboxconstants::beatsSubversion,
beats);
diff --git a/src/test/beatgridtest.cpp b/src/test/beatgridtest.cpp
index afe01a9d33..16276e5b76 100644
--- a/src/test/beatgridtest.cpp
+++ b/src/test/beatgridtest.cpp
@@ -29,7 +29,7 @@ TEST(BeatGridTest, Scale) {
double bpm = 60.0;
pTrack->setBpm(bpm);
- auto pGrid = BeatGrid::makeBeatGrid(*pTrack, 0, QString(), bpm, 0);
+ auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0);
EXPECT_DOUBLE_EQ(bpm, pGrid->getBpm());
pGrid = pGrid->scale(Beats::DOUBLE);
@@ -60,7 +60,7 @@ TEST(BeatGridTest, TestNthBeatWhenOnBeat) {
pTrack->setBpm(bpm);
double beatLength = (60.0 * sampleRate / bpm) * kFrameSize;
- auto pGrid = BeatGrid::makeBeatGrid(*pTrack, 0, QString(), bpm, 0);
+ auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0);
// Pretend we're on the 20th beat;
double position = beatLength * 20;
@@ -94,7 +94,7 @@ TEST(BeatGridTest, TestNthBeatWhenOnBeat_BeforeEpsilon) {
pTrack->setBpm(bpm);
double beatLength = (60.0 * sampleRate / bpm) * kFrameSize;
- auto pGrid = BeatGrid::makeBeatGrid(*pTrack, 0, QString(), bpm, 0);
+ auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0);
// Pretend we're just before the 20th beat.
const double kClosestBeat = 20 * beatLength;
@@ -130,7 +130,7 @@ TEST(BeatGridTest, TestNthBeatWhenOnBeat_AfterEpsilon) {
pTrack->setBpm(bpm);
double beatLength = (60.0 * sampleRate / bpm) * kFrameSize;
- auto pGrid = BeatGrid::makeBeatGrid(*pTrack, 0, QString(), bpm, 0);
+ auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0);
// Pretend we're just before the 20th beat.
const double kClosestBeat = 20 * beatLength;
@@ -166,7 +166,7 @@ TEST(BeatGridTest, TestNthBeatWhenNotOnBeat) {
pTrack->setBpm(bpm);
double beatLength = (60.0 * sampleRate / bpm) * kFrameSize;
- auto pGrid = BeatGrid::makeBeatGrid(*pTrack, 0, QString(), bpm, 0);
+ auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0);
// Pretend we're half way between the 20th and 21st beat
double previousBeat = beatLength * 20.0;
diff --git a/src/test/beatmaptest.cpp b/src/test/beatmaptest.cpp
index 70f61ed8f2..66abad5ae4 100644
--- a/src/test/beatmaptest.cpp
+++ b/src/test/beatmaptest.cpp
@@ -55,7 +55,7 @@ TEST_F(BeatMapTest, Scale) {
const int numBeats = 100;
// Note beats must be in frames, not samples.
QVector<double> beats = createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
- auto pMap = BeatMap::makeBeatMap(*m_pTrack, 0, QString(), beats);
+ auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
EXPECT_DOUBLE_EQ(bpm, pMap->getBpm());
pMap = pMap->scale(Beats::DOUBLE);
@@ -87,7 +87,7 @@ TEST_F(BeatMapTest, TestNthBeat) {
const int numBeats = 100;
// Note beats must be in frames, not samples.
QVector<double> beats = createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
- auto pMap = BeatMap::makeBeatMap(*m_pTrack, 0, QString(), beats);
+ auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
// Check edge cases
double firstBeat = startOffsetSamples + beatLengthSamples * 0;
@@ -119,7 +119,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenOnBeat) {
const int numBeats = 100;
// Note beats must be in frames, not samples.
QVector<double> beats = createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
- auto pMap = BeatMap::makeBeatMap(*m_pTrack, 0, QString(), beats);
+ auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
// Pretend we're on the 20th beat;
const int curBeat = 20;
@@ -156,7 +156,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenOnBeat_BeforeEpsilon) {
const int numBeats = 100;
// Note beats must be in frames, not samples.
QVector<double> beats = createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
- auto pMap = BeatMap::makeBeatMap(*m_pTrack, 0, QString(), beats);
+ auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
// Pretend we're just before the 20th beat;
const int curBeat = 20;
@@ -195,7 +195,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenOnBeat_AfterEpsilon) {
const int numBeats = 100;
// Note beats must be in frames, not samples.
QVector<double> beats = createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
- auto pMap = BeatMap::makeBeatMap(*m_pTrack, 0, QString(), beats);
+ auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
// Pretend we're just after the 20th beat;
const int curBeat = 20;
@@ -235,7 +235,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenNotOnBeat) {
const int numBeats = 100;
// Note beats must be in frames, not samples.
QVector<double> beats = createBeatVector(startOffsetFrames, numBeats, beatLengthFrames);
- auto pMap = BeatMap::makeBeatMap(*m_pTrack, 0, QString(), beats);
+ auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
// Pretend we're half way between the 20th and 21st beat
double previousBeat = startOffsetSamples + beatLengthSamples * 20.0;
@@ -275,7 +275,7 @@ TEST_F(BeatMapTest, TestBpmAround) {
beat_pos += beat_length;
}
- auto pMap = BeatMap::makeBeatMap(*m_pTrack, 0, QString(), beats);
+ auto pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
// The average of the first 8 beats should be different than the average
// of the last 8 beats.
@@ -291,7 +291,7 @@ TEST_F(BeatMapTest, TestBpmAround) {
// Try a really, really short track
beats = createBeatVector(10, 3, getBeatLengthFrames(filebpm));
- pMap = BeatMap::makeBeatMap(*m_pTrack, 0, QString(), beats);
+ pMap = BeatMap::makeBeatMap(m_pTrack->getSampleRate(), QString(), beats);
EXPECT_DOUBLE_EQ(filebpm, pMap->getBpmAroundPosition(1 * approx_beat_length, 4));
}
diff --git a/src/test/beatstranslatetest.cpp b/src/test/beatstranslatetest.cpp
index 9854b02fba..acdc5ec1d7 100644
--- a/src/test/beatstranslatetest.cpp
+++ b/src/test/beatstranslatetest.cpp
@@ -9,11 +9,13 @@ TEST_F(BeatsTranslateTest, SimpleTranslateMatch) {
// Set up BeatGrids for decks 1 and 2.
const double bpm = 60.0;
const double firstBeat = 0.0;
- auto grid1 = mixxx::BeatGrid::makeBeatGrid(*m_pTrack1, 0, QString(), bpm, firstBeat);
+ auto grid1 = mixxx::BeatGrid::makeBeatGrid(
+ m_pTrack1->getSampleRate(), QString(), bpm, firstBeat);
m_pTrack1->setBeats(mixxx::BeatsPointer(grid1));
ASSERT_DOUBLE_EQ(firstBeat, grid1->findClosestBeat(0));
- auto grid2 = mixxx::BeatGrid::makeBeatGrid(*m_pTrack2, 0, QString(), bpm, firstBeat);
+ auto grid2 = mixxx::BeatGrid::makeBeatGrid(
+ m_pTrack2->getSampleRate(), QString(), bpm, firstBeat);
m_pTrack2->setBeats(mixxx::BeatsPointer(grid2));
ASSERT_DOUBLE_EQ(firstBeat, grid2->findClosestBeat(0));
diff --git a/src/test/bpmcontrol_test.cpp b/src/test/bpmcontrol_test.cpp
index d61181122e..fef84c99d7 100644
--- a/src/test/bpmcontrol_test.cpp
+++ b/src/test/bpmcontrol_test.cpp
@@ -37,7 +37,7 @@ TEST_F(BpmControlTest, BeatContext_BeatGrid) {
const int kFrameSize = 2;
const double expectedBeatLength = (60.0 * sampleRate / bpm) * kFrameSize;
- mixxx::BeatsPointer pBeats = BeatFactory::makeBeatGrid(*pTrack, bpm, 0);
+ mixxx::BeatsPointer pBeats = BeatFactory::makeBeatGrid(pTrack->getSampleRate(), bpm, 0);
// On a beat.
double prevBeat, nextBeat, beatLength, beatPercentage;
diff --git a/src/test/enginesynctest.cpp b/src/test/enginesynctest.cpp
index ff2ffbfff3..377f39e62c 100644
--- a/src/test/enginesynctest.cpp
+++ b/src/test/enginesynctest.cpp
@@ -193,9 +193,9 @@ TEST_F(EngineSyncTest, SetMasterSuccess) {
TEST_F(EngineSyncTest, ExplicitMasterPersists) {
// If we set an explicit master, enabling sync or pressing play on other decks
// doesn't cause the master to move around.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 120, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 120, 0.0);
m_pTrack1->setBeats(pBeats1);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 124, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 124, 0.0);
m_pTrack2->setBeats(pBeats2);
auto pButtonMasterSync1 =
@@ -225,11 +225,11 @@ TEST_F(EngineSyncTest, ExplicitMasterPersists) {
TEST_F(EngineSyncTest, SetMasterWhilePlaying) {
// Make sure we don't get two master lights if we change masters while playing.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 120, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 120, 0.0);
m_pTrack1->setBeats(pBeats1);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 124, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 124, 0.0);
m_pTrack2->setBeats(pBeats2);
- mixxx::BeatsPointer pBeats3 = BeatFactory::makeBeatGrid(*m_pTrack3, 128, 0.0);
+ mixxx::BeatsPointer pBeats3 = BeatFactory::makeBeatGrid(m_pTrack3->getSampleRate(), 128, 0.0);
m_pTrack3->setBeats(pBeats3);
auto pButtonMasterSync1 =
@@ -259,7 +259,7 @@ TEST_F(EngineSyncTest, SetMasterWhilePlaying) {
TEST_F(EngineSyncTest, SetEnabledBecomesMaster) {
// If we set the first channel with a valid tempo to follower, it should be master.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 80, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 80, 0.0);
m_pTrack1->setBeats(pBeats1);
auto pButtonMasterSync1 =
std::make_unique<ControlProxy>(m_sGroup1, "sync_mode");
@@ -286,10 +286,10 @@ TEST_F(EngineSyncTest, DisableInternalMasterWhilePlaying) {
ASSERT_TRUE(isSoftMaster(m_sInternalClockGroup));
// Make sure both decks are playing.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 80, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 80, 0.0);
m_pTrack1->setBeats(pBeats1);
ControlObject::getControl(ConfigKey(m_sGroup1, "play"))->set(1.0);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 80, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 80, 0.0);
m_pTrack2->setBeats(pBeats2);
ControlObject::getControl(ConfigKey(m_sGroup2, "play"))->set(1.0);
ProcessBuffer();
@@ -305,13 +305,13 @@ TEST_F(EngineSyncTest, DisableInternalMasterWhilePlaying) {
TEST_F(EngineSyncTest, DisableSyncOnMaster) {
// Channel 1 follower, channel 2 master.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 130, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 130, 0.0);
m_pTrack1->setBeats(pBeats1);
auto pButtonSyncMode1 =
std::make_unique<ControlProxy>(m_sGroup1, "sync_mode");
pButtonSyncMode1->slotSet(SYNC_FOLLOWER);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 130, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 130, 0.0);
m_pTrack2->setBeats(pBeats2);
auto pButtonSyncMaster2 =
std::make_unique<ControlProxy>(m_sGroup2, "sync_master");
@@ -343,7 +343,7 @@ TEST_F(EngineSyncTest, InternalMasterSetFollowerSliderMoves) {
pMasterSyncSlider->set(100.0);
// Set the file bpm of channel 1 to 80 bpm.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 80, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 80, 0.0);
m_pTrack1->setBeats(pBeats1);
auto pButtonMasterSync1 =
@@ -361,7 +361,7 @@ TEST_F(EngineSyncTest, AnySyncDeckSliderStays) {
// If there exists a sync deck, even if it's not playing, don't change the
// master BPM if a new deck enables sync.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 80, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 80, 0.0);
m_pTrack1->setBeats(pBeats1);
auto pButtonSyncEnabled1 =
std::make_unique<ControlProxy>(m_sGroup1, "sync_enabled");
@@ -372,7 +372,7 @@ TEST_F(EngineSyncTest, AnySyncDeckSliderStays) {
ControlObject::getControl(ConfigKey(m_sInternalClockGroup, "bpm"))
->get());
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 100, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 100, 0.0);
m_pTrack2->setBeats(pBeats2);
auto pButtonSyncEnabled2 =
std::make_unique<ControlProxy>(m_sGroup2, "sync_enabled");
@@ -396,11 +396,11 @@ TEST_F(EngineSyncTest, InternalClockFollowsFirstPlayingDeck) {
std::make_unique<ControlProxy>(m_sGroup2, "sync_enabled");
// Set up decks so they can be playing, and start deck 1.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 100, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 100, 0.0);
m_pTrack1->setBeats(pBeats1);
ControlObject::set(ConfigKey(m_sGroup1, "rate"), getRateSliderValue(1.0));
ControlObject::set(ConfigKey(m_sGroup1, "play"), 1.0);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 130, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 130, 0.0);
m_pTrack2->setBeats(pBeats2);
ControlObject::set(ConfigKey(m_sGroup2, "rate"), getRateSliderValue(1.0));
ControlObject::set(ConfigKey(m_sGroup2, "play"), 0.0);
@@ -466,10 +466,10 @@ TEST_F(EngineSyncTest, SetExplicitMasterByLights) {
std::make_unique<ControlProxy>(m_sGroup2, "sync_master");
// Set the file bpm of channel 1 to 160bpm.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 160, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0);
m_pTrack1->setBeats(pBeats1);
// Set the file bpm of channel 2 to 150bpm.
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack1, 150, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 150, 0.0);
m_pTrack2->setBeats(pBeats2);
// Set channel 1 to be explicit master.
@@ -552,7 +552,7 @@ TEST_F(EngineSyncTest, RateChangeTest) {
ProcessBuffer();
// Set the file bpm of channel 1 to 160bpm.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 160, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0);
m_pTrack1->setBeats(pBeats1);
EXPECT_DOUBLE_EQ(
160.0, ControlObject::get(ConfigKey(m_sGroup1, "file_bpm")));
@@ -571,7 +571,7 @@ TEST_F(EngineSyncTest, RateChangeTest) {
192.0, ControlObject::get(ConfigKey(m_sInternalClockGroup, "bpm")));
// Set the file bpm of channel 2 to 120bpm.
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 120, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 120, 0.0);
m_pTrack2->setBeats(pBeats2);
EXPECT_DOUBLE_EQ(
120.0, ControlObject::get(ConfigKey(m_sGroup2, "file_bpm")));
@@ -593,13 +593,13 @@ TEST_F(EngineSyncTest, RateChangeTestWeirdOrder) {
ProcessBuffer();
// Set the file bpm of channel 1 to 160bpm.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 160, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0);
m_pTrack1->setBeats(pBeats1);
EXPECT_DOUBLE_EQ(
160.0, ControlObject::get(ConfigKey(m_sInternalClockGroup, "bpm")));
// Set the file bpm of channel 2 to 120bpm.
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 120, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 120, 0.0);
m_pTrack2->setBeats(pBeats2);
// Set the rate slider of channel 1 to 1.2.
@@ -617,13 +617,13 @@ TEST_F(EngineSyncTest, RateChangeTestWeirdOrder) {
TEST_F(EngineSyncTest, RateChangeTestOrder3) {
// Set the file bpm of channel 1 to 160bpm.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 160, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0);
m_pTrack1->setBeats(pBeats1);
EXPECT_DOUBLE_EQ(
160.0, ControlObject::get(ConfigKey(m_sGroup1, "file_bpm")));
// Set the file bpm of channel 2 to 120bpm.
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 120, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 120, 0.0);
m_pTrack2->setBeats(pBeats2);
EXPECT_DOUBLE_EQ(
120.0, ControlObject::get(ConfigKey(m_sGroup2, "file_bpm")));
@@ -661,11 +661,11 @@ TEST_F(EngineSyncTest, FollowerRateChange) {
ProcessBuffer();
// Set the file bpm of channel 1 to 160bpm.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 160, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0);
m_pTrack1->setBeats(pBeats1);
// Set the file bpm of channel 2 to 120bpm.
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 120, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 120, 0.0);
m_pTrack2->setBeats(pBeats2);
// Set the rate slider of channel 1 to 1.2.
@@ -707,13 +707,13 @@ TEST_F(EngineSyncTest, InternalRateChangeTest) {
ASSERT_TRUE(isFollower(m_sGroup2));
// Set the file bpm of channel 1 to 160bpm.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 160, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0);
m_pTrack1->setBeats(pBeats1);
EXPECT_DOUBLE_EQ(160.0,
ControlObject::getControl(ConfigKey(m_sGroup1, "file_bpm"))->get());
// Set the file bpm of channel 2 to 120bpm.
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 120, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 120, 0.0);
m_pTrack2->setBeats(pBeats2);
EXPECT_DOUBLE_EQ(120.0,
ControlObject::getControl(ConfigKey(m_sGroup2, "file_bpm"))->get());
@@ -761,9 +761,9 @@ TEST_F(EngineSyncTest, InternalRateChangeTest) {
TEST_F(EngineSyncTest, MasterStopSliderCheck) {
// If the master is playing, and stop is pushed, the sliders should stay the same.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 120, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 120, 0.0);
m_pTrack1->setBeats(pBeats1);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 128, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 128, 0.0);
m_pTrack2->setBeats(pBeats2);
auto pButtonMasterSync1 =
@@ -805,7 +805,7 @@ TEST_F(EngineSyncTest, EnableOneDeckInitsMaster) {
ProcessBuffer();
// Set up the deck to play.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 130, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 130, 0.0);
m_pTrack1->setBeats(pBeats1);
ControlObject::getControl(ConfigKey(m_sGroup1, "rate"))
->set(getRateSliderValue(1.0));
@@ -832,7 +832,7 @@ TEST_F(EngineSyncTest, EnableOneDeckInitsMaster) {
ConfigKey(m_sInternalClockGroup, "beat_distance")));
// Enable second deck, bpm and beat distance should still match original setting.
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 140, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 140, 0.0);
m_pTrack2->setBeats(pBeats2);
ControlObject::getControl(ConfigKey(m_sGroup2, "rate"))
->set(getRateSliderValue(1.0));
@@ -859,7 +859,7 @@ TEST_F(EngineSyncTest, EnableOneDeckInitsMaster) {
TEST_F(EngineSyncTest, EnableOneDeckInitializesMaster) {
// Enabling sync on a deck causes it to be master, and sets bpm and clock.
// Set the deck to play.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 130, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 130, 0.0);
m_pTrack1->setBeats(pBeats1);
ControlObject::getControl(ConfigKey(m_sGroup1, "rate"))
->set(getRateSliderValue(1.0));
@@ -1048,7 +1048,7 @@ TEST_F(EngineSyncTest, EnableOneDeckSliderUpdates) {
auto pButtonSyncEnabled1 =
std::make_unique<ControlProxy>(m_sGroup1, "sync_enabled");
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 130, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 130, 0.0);
m_pTrack1->setBeats(pBeats1);
ControlObject::getControl(ConfigKey(m_sGroup1, "rate"))
->set(getRateSliderValue(1.0));
@@ -1075,11 +1075,11 @@ TEST_F(EngineSyncTest, SyncToNonSyncDeck) {
auto pButtonSyncEnabled2 =
std::make_unique<ControlProxy>(m_sGroup2, "sync_enabled");
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 130, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 130, 0.0);
m_pTrack1->setBeats(pBeats1);
ProcessBuffer();
ControlObject::set(ConfigKey(m_sGroup1, "rate"), getRateSliderValue(1.0));
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 100, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 100, 0.0);
m_pTrack2->setBeats(pBeats2);
ControlObject::getControl(ConfigKey(m_sGroup2, "rate"))
->set(getRateSliderValue(1.0));
@@ -1158,11 +1158,11 @@ TEST_F(EngineSyncTest, MomentarySyncDependsOnPlayingStates) {
std::make_unique<ControlProxy>(m_sGroup2, "sync_enabled");
// Set up decks so they can be playing, and start deck 1.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 100, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 100, 0.0);
m_pTrack1->setBeats(pBeats1);
ControlObject::set(ConfigKey(m_sGroup1, "rate"), getRateSliderValue(1.0));
ControlObject::set(ConfigKey(m_sGroup1, "play"), 1.0);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 130, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 130, 0.0);
m_pTrack2->setBeats(pBeats2);
ControlObject::set(ConfigKey(m_sGroup2, "rate"), getRateSliderValue(1.0));
ControlObject::set(ConfigKey(m_sGroup2, "play"), 1.0);
@@ -1231,7 +1231,7 @@ TEST_F(EngineSyncTest, EjectTrackSyncRemains) {
std::make_unique<ControlProxy>(m_sGroup2, "sync_enabled");
auto pButtonEject1 = std::make_unique<ControlProxy>(m_sGroup1, "eject");
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 120, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 120, 0.0);
m_pTrack1->setBeats(pBeats1);
pButtonSyncEnabled1->set(1.0);
ProcessBuffer();
@@ -1256,7 +1256,7 @@ TEST_F(EngineSyncTest, EjectTrackSyncRemains) {
m_pMixerDeck1->loadFakeTrack(false, 128.0);
EXPECT_DOUBLE_EQ(128.0,
ControlObject::getControl(ConfigKey(m_sGroup1, "bpm"))->get());
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 135, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 135, 0.0);
m_pTrack2->setBeats(pBeats2);
pButtonSyncEnabled2->set(1.0);
ProcessBuffer();
@@ -1276,21 +1276,21 @@ TEST_F(EngineSyncTest, EjectTrackSyncRemains) {
TEST_F(EngineSyncTest, FileBpmChangesDontAffectMaster) {
// If filebpm changes, don't treat it like a rate change.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 100, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 100, 0.0);
m_pTrack1->setBeats(pBeats1);
auto pButtonSyncEnabled1 =
std::make_unique<ControlProxy>(m_sGroup1, "sync_enabled");
pButtonSyncEnabled1->set(1.0);
ProcessBuffer();
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 120, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 120, 0.0);
m_pTrack2->setBeats(pBeats2);
auto pButtonSyncEnabled2 =
std::make_unique<ControlProxy>(m_sGroup2, "sync_enabled");
pButtonSyncEnabled2->set(1.0);
ProcessBuffer();
- pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 160, 0.0);
+ pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0);
m_pTrack1->setBeats(pBeats1);
EXPECT_DOUBLE_EQ(
100.0, ControlObject::get(ConfigKey(m_sInternalClockGroup, "bpm")));
@@ -1302,7 +1302,7 @@ TEST_F(EngineSyncTest, ExplicitMasterPostProcessed) {
auto pButtonMasterSync1 =
std::make_unique<ControlProxy>(m_sGroup1, "sync_mode");
pButtonMasterSync1->slotSet(SYNC_MASTER_EXPLICIT);
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 160, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0);
m_pTrack1->setBeats(pBeats1);
ProcessBuffer();
ControlObject::getControl(ConfigKey(m_sGroup1, "play"))->set(1.0);
@@ -1316,7 +1316,7 @@ TEST_F(EngineSyncTest, ExplicitMasterPostProcessed) {
TEST_F(EngineSyncTest, ZeroBPMRateAdjustIgnored) {
// If a track isn't loaded (0 bpm), but the deck has sync enabled,
// don't pay attention to rate changes.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 0, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 0, 0.0);
m_pTrack1->setBeats(pBeats1);
auto pButtonSyncEnabled1 =
std::make_unique<ControlProxy>(m_sGroup1, "sync_enabled");
@@ -1325,7 +1325,7 @@ TEST_F(EngineSyncTest, ZeroBPMRateAdjustIgnored) {
->set(getRateSliderValue(1.0));
ProcessBuffer();
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 120, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 120, 0.0);
m_pTrack2->setBeats(pBeats2);
auto pButtonSyncEnabled2 =
std::make_unique<ControlProxy>(m_sGroup2, "sync_enabled");
@@ -1361,9 +1361,9 @@ TEST_F(EngineSyncTest, ZeroBPMRateAdjustIgnored) {
TEST_F(EngineSyncTest, ZeroLatencyRateChangeNoQuant) {
// Confirm that a rate change in an explicit master is instantly communicated
// to followers.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 128, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 128, 0.0);
m_pTrack1->setBeats(pBeats1);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 160, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 160, 0.0);
m_pTrack2->setBeats(pBeats2);
// Make Channel2 master to weed out any channel ordering issues.
@@ -1409,9 +1409,9 @@ TEST_F(EngineSyncTest, ZeroLatencyRateChangeNoQuant) {
TEST_F(EngineSyncTest, ZeroLatencyRateChangeQuant) {
// Confirm that a rate change in an explicit master is instantly communicated
// to followers.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 128, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 128, 0.0);
m_pTrack1->setBeats(pBeats1);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 160, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 160, 0.0);
m_pTrack2->setBeats(pBeats2);
ControlObject::getControl(ConfigKey(m_sGroup1, "quantize"))->set(1.0);
@@ -1460,9 +1460,9 @@ TEST_F(EngineSyncTest, ZeroLatencyRateChangeQuant) {
TEST_F(EngineSyncTest, ZeroLatencyRateDiffQuant) {
// Confirm that a rate change in an explicit master is instantly communicated
// to followers.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 128, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 128, 0.0);
m_pTrack1->setBeats(pBeats1);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 160, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 160, 0.0);
m_pTrack2->setBeats(pBeats2);
ControlObject::getControl(ConfigKey(m_sGroup2, "quantize"))->set(1.0);
@@ -1512,9 +1512,9 @@ TEST_F(EngineSyncTest, ZeroLatencyRateDiffQuant) {
// need to check. The Sync feature is unfortunately brittle.
// This test exercises https://bugs.launchpad.net/mixxx/+bug/1884324
TEST_F(EngineSyncTest, ActivatingSyncDoesNotCauseDrifting) {
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 150, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 150, 0.0);
m_pTrack1->setBeats(pBeats1);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 150, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 150, 0.0);
m_pTrack2->setBeats(pBeats2);
ControlObject::getControl(ConfigKey(m_sGroup1, "quantize"))->set(0.0);
@@ -1556,9 +1556,9 @@ TEST_F(EngineSyncTest, ActivatingSyncDoesNotCauseDrifting) {
}
TEST_F(EngineSyncTest, HalfDoubleBpmTest) {
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 70, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 70, 0.0);
m_pTrack1->setBeats(pBeats1);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 140, 0.0);
+ mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 140, 0.0);
m_pTrack2->setBeats(pBeats2);
ControlObject::getControl(ConfigKey(m_sGroup1, "quantize"))->set(1.0);
@@ -1649,9 +1649,9 @@ TEST_F(EngineSyncTest, HalfDoubleBpmTest) {
TEST_F(EngineSyncTest, HalfDoubleThenPlay) {
// If a deck plays that had its multiplier set, we need to reset the
// internal clock.
- mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(*m_pTrack1, 80, 0.0);
+ mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 80, 0.0);
m_pTrack1->setBeats(pBeats1);
- mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(*m_pTrack2, 175, 0.0);
<