diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2021-03-08 08:25:16 +0100 |
---|---|---|
committer | Daniel Schürmann <daschuer@mixxx.org> | 2021-03-08 08:25:16 +0100 |
commit | ad9598c5c4c97343d0426cecc60629692dad481d (patch) | |
tree | 1428e86bfe02ab5ab621797b7b1c75fe53ecfe87 /src | |
parent | 4c9412c884a5e7252bd98d3824abd024cad66930 (diff) |
check bpm lock when setting beat grid of bpm
Diffstat (limited to 'src')
-rw-r--r-- | src/analyzer/analyzerbeats.cpp | 18 | ||||
-rw-r--r-- | src/engine/controls/bpmcontrol.cpp | 14 | ||||
-rw-r--r-- | src/library/banshee/bansheeplaylistmodel.cpp | 2 | ||||
-rw-r--r-- | src/library/baseexternalplaylistmodel.cpp | 2 | ||||
-rw-r--r-- | src/library/baseexternaltrackmodel.cpp | 2 | ||||
-rw-r--r-- | src/library/basesqltablemodel.cpp | 2 | ||||
-rw-r--r-- | src/library/browse/browsetablemodel.cpp | 2 | ||||
-rw-r--r-- | src/library/dao/trackdao.cpp | 5 | ||||
-rw-r--r-- | src/library/dlgtrackinfo.cpp | 6 | ||||
-rw-r--r-- | src/library/rekordbox/rekordboxfeature.cpp | 2 | ||||
-rw-r--r-- | src/mixer/basetrackplayer.cpp | 2 | ||||
-rw-r--r-- | src/test/beatgridtest.cpp | 14 | ||||
-rw-r--r-- | src/test/beatmaptest.cpp | 14 | ||||
-rw-r--r-- | src/test/beatstranslatetest.cpp | 4 | ||||
-rw-r--r-- | src/test/cuecontrol_test.cpp | 8 | ||||
-rw-r--r-- | src/test/enginesynctest.cpp | 172 | ||||
-rw-r--r-- | src/test/looping_control_test.cpp | 48 | ||||
-rw-r--r-- | src/test/searchqueryparsertest.cpp | 38 | ||||
-rw-r--r-- | src/track/track.cpp | 101 | ||||
-rw-r--r-- | src/track/track.h | 25 | ||||
-rw-r--r-- | src/widget/wtrackmenu.cpp | 7 |
21 files changed, 250 insertions, 238 deletions
diff --git a/src/analyzer/analyzerbeats.cpp b/src/analyzer/analyzerbeats.cpp index b3d81f3aee..6f01c2dbf6 100644 --- a/src/analyzer/analyzerbeats.cpp +++ b/src/analyzer/analyzerbeats.cpp @@ -256,23 +256,7 @@ void AnalyzerBeats::storeResults(TrackPointer pTrack) { pBeats = BeatFactory::makeBeatGrid(m_iSampleRate, bpm, 0.0f); } - mixxx::BeatsPointer pCurrentBeats = pTrack->getBeats(); - - // If the track has no beats object then set our newly generated one - // regardless of beat lock. - if (!pCurrentBeats) { - pTrack->setBeats(pBeats); - return; - } - - // If the track received the beat lock while we were analyzing it then we - // abort setting it. - if (pTrack->isBpmLocked()) { - qDebug() << "Track was BPM-locked as we were analyzing it. Aborting analysis."; - return; - } - - pTrack->setBeats(pBeats); + pTrack->trySetBeats(pBeats, false); } // static diff --git a/src/engine/controls/bpmcontrol.cpp b/src/engine/controls/bpmcontrol.cpp index 7e932797e9..67612b5778 100644 --- a/src/engine/controls/bpmcontrol.cpp +++ b/src/engine/controls/bpmcontrol.cpp @@ -172,7 +172,7 @@ void BpmControl::slotAdjustBeatsFaster(double v) { if (pBeats && (pBeats->getCapabilities() & mixxx::Beats::BEATSCAP_SETBPM)) { double bpm = pBeats->getBpm(); double adjustedBpm = bpm + kBpmAdjustStep; - pTrack->setBeats(pBeats->setBpm(adjustedBpm)); + pTrack->trySetBeats(pBeats->setBpm(adjustedBpm), false); } } @@ -188,7 +188,7 @@ void BpmControl::slotAdjustBeatsSlower(double v) { if (pBeats && (pBeats->getCapabilities() & mixxx::Beats::BEATSCAP_SETBPM)) { double bpm = pBeats->getBpm(); double adjustedBpm = math_max(kBpmAdjustMin, bpm - kBpmAdjustStep); - pTrack->setBeats(pBeats->setBpm(adjustedBpm)); + pTrack->trySetBeats(pBeats->setBpm(adjustedBpm), false); } } @@ -204,7 +204,7 @@ void BpmControl::slotTranslateBeatsEarlier(double v) { if (pBeats && (pBeats->getCapabilities() & mixxx::Beats::BEATSCAP_TRANSLATE)) { const double translate_dist = getSampleOfTrack().rate * -.01; - pTrack->setBeats(pBeats->translate(translate_dist)); + pTrack->trySetBeats(pBeats->translate(translate_dist), false); } } @@ -221,7 +221,7 @@ void BpmControl::slotTranslateBeatsLater(double v) { (pBeats->getCapabilities() & mixxx::Beats::BEATSCAP_TRANSLATE)) { // TODO(rryan): Track::getSampleRate is possibly inaccurate! const double translate_dist = getSampleOfTrack().rate * .01; - pTrack->setBeats(pBeats->translate(translate_dist)); + pTrack->trySetBeats(pBeats->translate(translate_dist), false); } } @@ -255,7 +255,7 @@ void BpmControl::slotTapFilter(double averageLength, int numSamples) { // (60 seconds per minute) * (1000 milliseconds per second) / (X millis per // beat) = Y beats/minute double averageBpm = 60.0 * 1000.0 / averageLength / rateRatio; - pTrack->setBeats(pBeats->setBpm(averageBpm)); + pTrack->trySetBeats(pBeats->setBpm(averageBpm), false); } void BpmControl::slotControlBeatSyncPhase(double value) { @@ -1020,7 +1020,7 @@ void BpmControl::slotBeatsTranslate(double v) { if (delta % 2 != 0) { delta--; } - pTrack->setBeats(pBeats->translate(delta)); + pTrack->trySetBeats(pBeats->translate(delta), false); } } @@ -1039,7 +1039,7 @@ void BpmControl::slotBeatsTranslateMatchAlignment(double v) { m_dUserOffset.setValue(0.0); double offset = getPhaseOffset(getSampleOfTrack().current); - pTrack->setBeats(pBeats->translate(-offset)); + pTrack->trySetBeats(pBeats->translate(-offset), false); } } diff --git a/src/library/banshee/bansheeplaylistmodel.cpp b/src/library/banshee/bansheeplaylistmodel.cpp index 6590377225..a7f59eeeb9 100644 --- a/src/library/banshee/bansheeplaylistmodel.cpp +++ b/src/library/banshee/bansheeplaylistmodel.cpp @@ -287,7 +287,7 @@ TrackPointer BansheePlaylistModel::getTrack(const QModelIndex& index) const { pTrack->setRating(getFieldString(index, CLM_RATING).toInt()); pTrack->setTrackNumber(getFieldString(index, CLM_TRACKNUMBER)); double bpm = getFieldString(index, CLM_BPM).toDouble(); - bpm = pTrack->setBpm(bpm); + pTrack->trySetBpm(bpm, false); pTrack->setBitrate(getFieldString(index, CLM_BITRATE).toInt()); pTrack->setComment(getFieldString(index, CLM_COMMENT)); pTrack->setComposer(getFieldString(index, CLM_COMPOSER)); diff --git a/src/library/baseexternalplaylistmodel.cpp b/src/library/baseexternalplaylistmodel.cpp index c419cdba6b..366339f75a 100644 --- a/src/library/baseexternalplaylistmodel.cpp +++ b/src/library/baseexternalplaylistmodel.cpp @@ -65,7 +65,7 @@ TrackPointer BaseExternalPlaylistModel::getTrack(const QModelIndex& index) const float bpm = index.sibling( index.row(), fieldIndex("bpm")).data().toString().toFloat(); - pTrack->setBpm(bpm); + pTrack->trySetBpm(bpm, false); } return pTrack; } diff --git a/src/library/baseexternaltrackmodel.cpp b/src/library/baseexternaltrackmodel.cpp index ca48510a08..6cdcd15aeb 100644 --- a/src/library/baseexternaltrackmodel.cpp +++ b/src/library/baseexternaltrackmodel.cpp @@ -74,7 +74,7 @@ TrackPointer BaseExternalTrackModel::getTrack(const QModelIndex& index) const { pTrack->setAlbum(album); pTrack->setYear(year); pTrack->setGenre(genre); - pTrack->setBpm(bpm); + pTrack->trySetBpm(bpm, false); } } else { qWarning() << "Failed to load external track" << location; diff --git a/src/library/basesqltablemodel.cpp b/src/library/basesqltablemodel.cpp index 7a5421c4ab..2648bbf367 100644 --- a/src/library/basesqltablemodel.cpp +++ b/src/library/basesqltablemodel.cpp @@ -702,7 +702,7 @@ bool BaseSqlTableModel::setTrackValueForColumn( } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMMENT) == column) { pTrack->setComment(value.toString()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM) == column) { - pTrack->setBpm(static_cast<double>(value.toDouble())); + pTrack->trySetBpm(static_cast<double>(value.toDouble()), false); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PLAYED) == column) { // Update both the played flag and the number of times played pTrack->updatePlayCounter(value.toBool()); diff --git a/src/library/browse/browsetablemodel.cpp b/src/library/browse/browsetablemodel.cpp index ec1a422ba8..216550b6f7 100644 --- a/src/library/browse/browsetablemodel.cpp +++ b/src/library/browse/browsetablemodel.cpp @@ -397,7 +397,7 @@ bool BrowseTableModel::setData( pTrack->setAlbum(value.toString()); break; case COLUMN_BPM: - pTrack->setBpm(value.toDouble()); + pTrack->trySetBpm(value.toDouble(), false); break; case COLUMN_KEY: pTrack->setKeyText(value.toString()); diff --git a/src/library/dao/trackdao.cpp b/src/library/dao/trackdao.cpp index c678e66fac..46b89082e2 100644 --- a/src/library/dao/trackdao.cpp +++ b/src/library/dao/trackdao.cpp @@ -1090,11 +1090,10 @@ bool setTrackBeats(const QSqlRecord& record, const int column, const mixxx::BeatsPointer pBeats = BeatFactory::loadBeatsFromByteArray( pTrack->getSampleRate(), beatsVersion, beatsSubVersion, beatsBlob); if (pBeats) { - pTrack->setBeats(pBeats); + pTrack->trySetBeats(pBeats, bpmLocked); } else { - pTrack->setBpm(bpm); + pTrack->trySetBpm(bpm, bpmLocked); } - pTrack->setBpmLocked(bpmLocked); return false; } diff --git a/src/library/dlgtrackinfo.cpp b/src/library/dlgtrackinfo.cpp index 1ff7dbdc64..2e953e4381 100644 --- a/src/library/dlgtrackinfo.cpp +++ b/src/library/dlgtrackinfo.cpp @@ -396,10 +396,8 @@ void DlgTrackInfo::saveTrack() { m_pLoadedTrack->setTrackNumber(txtTrackNumber->text()); m_pLoadedTrack->setComment(txtComment->toPlainText()); - if (!m_pLoadedTrack->isBpmLocked()) { - m_pLoadedTrack->setBeats(m_pBeatsClone); - reloadTrackBeats(*m_pLoadedTrack); - } + m_pLoadedTrack->trySetBeats(m_pBeatsClone, false); + reloadTrackBeats(*m_pLoadedTrack); // If the user is editing the key and hits enter to close DlgTrackInfo, the // editingFinished signal will not fire in time. Run the key text changed diff --git a/src/library/rekordbox/rekordboxfeature.cpp b/src/library/rekordbox/rekordboxfeature.cpp index 901050aa86..80a52bb99b 100644 --- a/src/library/rekordbox/rekordboxfeature.cpp +++ b/src/library/rekordbox/rekordboxfeature.cpp @@ -870,7 +870,7 @@ void readAnalyze(TrackPointer track, static_cast<SINT>(sampleRate), mixxx::rekordboxconstants::beatsSubversion, beats); - track->setBeats(pBeats); + track->trySetBeats(pBeats, false); } break; case rekordbox_anlz_t::SECTION_TAGS_CUES: { if (ignoreCues) { diff --git a/src/mixer/basetrackplayer.cpp b/src/mixer/basetrackplayer.cpp index c0503d8b4c..d6ad555479 100644 --- a/src/mixer/basetrackplayer.cpp +++ b/src/mixer/basetrackplayer.cpp @@ -209,7 +209,7 @@ TrackPointer BaseTrackPlayerImpl::loadFakeTrack(bool bPlay, double filebpm) { mixxx::audio::Bitrate(), mixxx::Duration::fromSeconds(10)); if (filebpm > 0) { - pTrack->setBpm(filebpm); + pTrack->trySetBpm(filebpm, false); } TrackPointer pOldTrack = m_pLoadedTrack; diff --git a/src/test/beatgridtest.cpp b/src/test/beatgridtest.cpp index 311b459578..4f63317191 100644 --- a/src/test/beatgridtest.cpp +++ b/src/test/beatgridtest.cpp @@ -27,7 +27,7 @@ TEST(BeatGridTest, Scale) { TrackPointer pTrack = newTrack(sampleRate); double bpm = 60.0; - pTrack->setBpm(bpm); + pTrack->trySetBpm(bpm, false); auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0); @@ -57,7 +57,7 @@ TEST(BeatGridTest, TestNthBeatWhenOnBeat) { double bpm = 60.1; const int kFrameSize = 2; - pTrack->setBpm(bpm); + pTrack->trySetBpm(bpm, false); double beatLength = (60.0 * sampleRate / bpm) * kFrameSize; auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0); @@ -91,7 +91,7 @@ TEST(BeatGridTest, TestNthBeatWhenOnBeat_BeforeEpsilon) { double bpm = 60.1; const int kFrameSize = 2; - pTrack->setBpm(bpm); + pTrack->trySetBpm(bpm, false); double beatLength = (60.0 * sampleRate / bpm) * kFrameSize; auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0); @@ -127,7 +127,7 @@ TEST(BeatGridTest, TestNthBeatWhenOnBeat_AfterEpsilon) { double bpm = 60.1; const int kFrameSize = 2; - pTrack->setBpm(bpm); + pTrack->trySetBpm(bpm, false); double beatLength = (60.0 * sampleRate / bpm) * kFrameSize; auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0); @@ -163,7 +163,7 @@ TEST(BeatGridTest, TestNthBeatWhenNotOnBeat) { double bpm = 60.1; const int kFrameSize = 2; - pTrack->setBpm(bpm); + pTrack->trySetBpm(bpm, false); double beatLength = (60.0 * sampleRate / bpm) * kFrameSize; auto pGrid = BeatGrid::makeBeatGrid(pTrack->getSampleRate(), QString(), bpm, 0); @@ -195,13 +195,13 @@ TEST(BeatGridTest, FromMetadata) { TrackPointer pTrack = newTrack(sampleRate); double bpm = 60.1; - double echoBpm = pTrack->setBpm(bpm); + double echoBpm = pTrack->trySetBpm(bpm, false); EXPECT_DOUBLE_EQ(echoBpm, bpm); auto pBeats = pTrack->getBeats(); EXPECT_DOUBLE_EQ(pBeats->getBpm(), bpm); - echoBpm = pTrack->setBpm(-60.1); + echoBpm = pTrack->trySetBpm(-60.1, false); EXPECT_DOUBLE_EQ(echoBpm, mixxx::Bpm::kValueUndefined); pBeats = pTrack->getBeats(); diff --git a/src/test/beatmaptest.cpp b/src/test/beatmaptest.cpp index 66abad5ae4..880b994714 100644 --- a/src/test/beatmaptest.cpp +++ b/src/test/beatmaptest.cpp @@ -49,7 +49,7 @@ class BeatMapTest : public testing::Test { TEST_F(BeatMapTest, Scale) { const double bpm = 60.0; - m_pTrack->setBpm(bpm); + m_pTrack->trySetBpm(bpm, false); double beatLengthFrames = getBeatLengthFrames(bpm); double startOffsetFrames = 7; const int numBeats = 100; @@ -79,7 +79,7 @@ TEST_F(BeatMapTest, Scale) { TEST_F(BeatMapTest, TestNthBeat) { const double bpm = 60.0; - m_pTrack->setBpm(bpm); + m_pTrack->trySetBpm(bpm, false); double beatLengthFrames = getBeatLengthFrames(bpm); double startOffsetFrames = 7; double beatLengthSamples = getBeatLengthSamples(bpm); @@ -111,7 +111,7 @@ TEST_F(BeatMapTest, TestNthBeat) { TEST_F(BeatMapTest, TestNthBeatWhenOnBeat) { const double bpm = 60.0; - m_pTrack->setBpm(bpm); + m_pTrack->trySetBpm(bpm, false); double beatLengthFrames = getBeatLengthFrames(bpm); double startOffsetFrames = 7; double beatLengthSamples = getBeatLengthSamples(bpm); @@ -148,7 +148,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenOnBeat) { TEST_F(BeatMapTest, TestNthBeatWhenOnBeat_BeforeEpsilon) { const double bpm = 60.0; - m_pTrack->setBpm(bpm); + m_pTrack->trySetBpm(bpm, false); double beatLengthFrames = getBeatLengthFrames(bpm); double startOffsetFrames = 7; double beatLengthSamples = getBeatLengthSamples(bpm); @@ -187,7 +187,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenOnBeat_BeforeEpsilon) { TEST_F(BeatMapTest, TestNthBeatWhenOnBeat_AfterEpsilon) { const double bpm = 60.0; - m_pTrack->setBpm(bpm); + m_pTrack->trySetBpm(bpm, false); double beatLengthFrames = getBeatLengthFrames(bpm); double startOffsetFrames = 7; double beatLengthSamples = getBeatLengthSamples(bpm); @@ -227,7 +227,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenOnBeat_AfterEpsilon) { TEST_F(BeatMapTest, TestNthBeatWhenNotOnBeat) { const double bpm = 60.0; - m_pTrack->setBpm(bpm); + m_pTrack->trySetBpm(bpm, false); double beatLengthFrames = getBeatLengthFrames(bpm); double startOffsetFrames = 7; double beatLengthSamples = getBeatLengthSamples(bpm); @@ -264,7 +264,7 @@ TEST_F(BeatMapTest, TestNthBeatWhenNotOnBeat) { TEST_F(BeatMapTest, TestBpmAround) { const double filebpm = 60.0; double approx_beat_length = getBeatLengthSamples(filebpm); - m_pTrack->setBpm(filebpm); + m_pTrack->trySetBpm(filebpm, false); const int numBeats = 64; QVector<double> beats; diff --git a/src/test/beatstranslatetest.cpp b/src/test/beatstranslatetest.cpp index acdc5ec1d7..a5f13e0517 100644 --- a/src/test/beatstranslatetest.cpp +++ b/src/test/beatstranslatetest.cpp @@ -11,12 +11,12 @@ TEST_F(BeatsTranslateTest, SimpleTranslateMatch) { const double firstBeat = 0.0; auto grid1 = mixxx::BeatGrid::makeBeatGrid( m_pTrack1->getSampleRate(), QString(), bpm, firstBeat); - m_pTrack1->setBeats(mixxx::BeatsPointer(grid1)); + m_pTrack1->trySetBeats(grid1, false); ASSERT_DOUBLE_EQ(firstBeat, grid1->findClosestBeat(0)); auto grid2 = mixxx::BeatGrid::makeBeatGrid( m_pTrack2->getSampleRate(), QString(), bpm, firstBeat); - m_pTrack2->setBeats(mixxx::BeatsPointer(grid2)); + m_pTrack2->trySetBeats(grid2, false); ASSERT_DOUBLE_EQ(firstBeat, grid2->findClosestBeat(0)); // Seek deck 1 forward a bit. diff --git a/src/test/cuecontrol_test.cpp b/src/test/cuecontrol_test.cpp index d24e86d676..336742d42b 100644 --- a/src/test/cuecontrol_test.cpp +++ b/src/test/cuecontrol_test.cpp @@ -169,7 +169,7 @@ TEST_F(CueControlTest, LoadAutodetectedCues_QuantizeEnabled) { m_pQuantizeEnabled->set(1); TrackPointer pTrack = createTestTrack(); - pTrack->setBpm(120.0); + pTrack->trySetBpm(120.0, false); const int frameSize = 2; const int sampleRate = pTrack->getSampleRate(); @@ -201,7 +201,7 @@ TEST_F(CueControlTest, LoadAutodetectedCues_QuantizeEnabledNoBeats) { m_pQuantizeEnabled->set(1); TrackPointer pTrack = createTestTrack(); - pTrack->setBpm(0.0); + pTrack->trySetBpm(0.0, false); pTrack->setCuePoint(CuePosition(100.0)); @@ -228,7 +228,7 @@ TEST_F(CueControlTest, LoadAutodetectedCues_QuantizeDisabled) { m_pQuantizeEnabled->set(0); TrackPointer pTrack = createTestTrack(); - pTrack->setBpm(120.0); + pTrack->trySetBpm(120.0, false); pTrack->setCuePoint(CuePosition(240.0)); @@ -333,7 +333,7 @@ TEST_F(CueControlTest, FollowCueOnQuantize) { config()->set(ConfigKey("[Controls]", "CueRecall"), ConfigValue(static_cast<int>(SeekOnLoadMode::MainCue))); TrackPointer pTrack = createTestTrack(); - pTrack->setBpm(120.0); + pTrack->trySetBpm(120.0, false); const int frameSize = 2; const int sampleRate = pTrack->getSampleRate(); diff --git a/src/test/enginesynctest.cpp b/src/test/enginesynctest.cpp index 377f39e62c..4216af58b3 100644 --- a/src/test/enginesynctest.cpp +++ b/src/test/enginesynctest.cpp @@ -194,9 +194,9 @@ 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->getSampleRate(), 120, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 124, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); auto pButtonMasterSync1 = std::make_unique<ControlProxy>(m_sGroup1, "sync_mode"); @@ -226,11 +226,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->getSampleRate(), 120, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 124, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); mixxx::BeatsPointer pBeats3 = BeatFactory::makeBeatGrid(m_pTrack3->getSampleRate(), 128, 0.0); - m_pTrack3->setBeats(pBeats3); + m_pTrack3->trySetBeats(pBeats3, false); auto pButtonMasterSync1 = std::make_unique<ControlProxy>(m_sGroup1, "sync_mode"); @@ -260,7 +260,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->getSampleRate(), 80, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); auto pButtonMasterSync1 = std::make_unique<ControlProxy>(m_sGroup1, "sync_mode"); pButtonMasterSync1->slotSet(SYNC_FOLLOWER); @@ -287,10 +287,10 @@ TEST_F(EngineSyncTest, DisableInternalMasterWhilePlaying) { // Make sure both decks are playing. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 80, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); ControlObject::getControl(ConfigKey(m_sGroup1, "play"))->set(1.0); mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 80, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); ControlObject::getControl(ConfigKey(m_sGroup2, "play"))->set(1.0); ProcessBuffer(); @@ -306,13 +306,13 @@ TEST_F(EngineSyncTest, DisableInternalMasterWhilePlaying) { TEST_F(EngineSyncTest, DisableSyncOnMaster) { // Channel 1 follower, channel 2 master. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 130, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); auto pButtonSyncMode1 = std::make_unique<ControlProxy>(m_sGroup1, "sync_mode"); pButtonSyncMode1->slotSet(SYNC_FOLLOWER); mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 130, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); auto pButtonSyncMaster2 = std::make_unique<ControlProxy>(m_sGroup2, "sync_master"); pButtonSyncMaster2->slotSet(1.0); @@ -344,7 +344,7 @@ TEST_F(EngineSyncTest, InternalMasterSetFollowerSliderMoves) { // Set the file bpm of channel 1 to 80 bpm. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 80, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); auto pButtonMasterSync1 = std::make_unique<ControlProxy>(m_sGroup1, "sync_mode"); @@ -362,7 +362,7 @@ TEST_F(EngineSyncTest, AnySyncDeckSliderStays) { // master BPM if a new deck enables sync. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 80, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); auto pButtonSyncEnabled1 = std::make_unique<ControlProxy>(m_sGroup1, "sync_enabled"); pButtonSyncEnabled1->set(1.0); @@ -373,7 +373,7 @@ TEST_F(EngineSyncTest, AnySyncDeckSliderStays) { ->get()); mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 100, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); auto pButtonSyncEnabled2 = std::make_unique<ControlProxy>(m_sGroup2, "sync_enabled"); pButtonSyncEnabled2->set(1.0); @@ -397,11 +397,11 @@ TEST_F(EngineSyncTest, InternalClockFollowsFirstPlayingDeck) { // Set up decks so they can be playing, and start deck 1. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 100, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); ControlObject::set(ConfigKey(m_sGroup1, "rate"), getRateSliderValue(1.0)); ControlObject::set(ConfigKey(m_sGroup1, "play"), 1.0); mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 130, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); ControlObject::set(ConfigKey(m_sGroup2, "rate"), getRateSliderValue(1.0)); ControlObject::set(ConfigKey(m_sGroup2, "play"), 0.0); ProcessBuffer(); @@ -467,10 +467,10 @@ TEST_F(EngineSyncTest, SetExplicitMasterByLights) { // Set the file bpm of channel 1 to 160bpm. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); // Set the file bpm of channel 2 to 150bpm. mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 150, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); // Set channel 1 to be explicit master. pButtonSyncMaster1->slotSet(1.0); @@ -553,7 +553,7 @@ TEST_F(EngineSyncTest, RateChangeTest) { // Set the file bpm of channel 1 to 160bpm. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); EXPECT_DOUBLE_EQ( 160.0, ControlObject::get(ConfigKey(m_sGroup1, "file_bpm"))); ProcessBuffer(); @@ -572,7 +572,7 @@ TEST_F(EngineSyncTest, RateChangeTest) { // Set the file bpm of channel 2 to 120bpm. mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 120, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); EXPECT_DOUBLE_EQ( 120.0, ControlObject::get(ConfigKey(m_sGroup2, "file_bpm"))); @@ -594,13 +594,13 @@ TEST_F(EngineSyncTest, RateChangeTestWeirdOrder) { // Set the file bpm of channel 1 to 160bpm. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); 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->getSampleRate(), 120, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); // Set the rate slider of channel 1 to 1.2. ControlObject::set(ConfigKey(m_sGroup1, "rate"), getRateSliderValue(1.2)); @@ -618,13 +618,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->getSampleRate(), 160, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); 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->getSampleRate(), 120, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); EXPECT_DOUBLE_EQ( 120.0, ControlObject::get(ConfigKey(m_sGroup2, "file_bpm"))); @@ -662,11 +662,11 @@ TEST_F(EngineSyncTest, FollowerRateChange) { // Set the file bpm of channel 1 to 160bpm. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); // Set the file bpm of channel 2 to 120bpm. mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 120, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); // Set the rate slider of channel 1 to 1.2. ControlObject::set(ConfigKey(m_sGroup1, "rate"), getRateSliderValue(1.2)); @@ -708,13 +708,13 @@ TEST_F(EngineSyncTest, InternalRateChangeTest) { // Set the file bpm of channel 1 to 160bpm. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 160, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); 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->getSampleRate(), 120, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); EXPECT_DOUBLE_EQ(120.0, ControlObject::getControl(ConfigKey(m_sGroup2, "file_bpm"))->get()); @@ -762,9 +762,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->getSampleRate(), 120, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 128, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); auto pButtonMasterSync1 = std::make_unique<ControlProxy>(m_sGroup1, "sync_mode"); @@ -806,7 +806,7 @@ TEST_F(EngineSyncTest, EnableOneDeckInitsMaster) { // Set up the deck to play. mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 130, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); ControlObject::getControl(ConfigKey(m_sGroup1, "rate")) ->set(getRateSliderValue(1.0)); ControlObject::getControl(ConfigKey(m_sGroup1, "beat_distance"))->set(0.2); @@ -833,7 +833,7 @@ TEST_F(EngineSyncTest, EnableOneDeckInitsMaster) { // Enable second deck, bpm and beat distance should still match original setting. mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 140, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); ControlObject::getControl(ConfigKey(m_sGroup2, "rate")) ->set(getRateSliderValue(1.0)); ControlObject::getControl(ConfigKey(m_sGroup2, "beat_distance"))->set(0.2); @@ -860,7 +860,7 @@ 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->getSampleRate(), 130, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); ControlObject::getControl(ConfigKey(m_sGroup1, "rate")) ->set(getRateSliderValue(1.0)); ControlObject::getControl(ConfigKey(m_sGroup1, "beat_distance"))->set(0.2); @@ -1049,7 +1049,7 @@ TEST_F(EngineSyncTest, EnableOneDeckSliderUpdates) { std::make_unique<ControlProxy>(m_sGroup1, "sync_enabled"); mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 130, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); ControlObject::getControl(ConfigKey(m_sGroup1, "rate")) ->set(getRateSliderValue(1.0)); @@ -1076,11 +1076,11 @@ TEST_F(EngineSyncTest, SyncToNonSyncDeck) { std::make_unique<ControlProxy>(m_sGroup2, "sync_enabled"); mixxx::BeatsPointer pBeats1 = BeatFactory::makeBeatGrid(m_pTrack1->getSampleRate(), 130, 0.0); - m_pTrack1->setBeats(pBeats1); + m_pTrack1->trySetBeats(pBeats1, false); ProcessBuffer(); ControlObject::set(ConfigKey(m_sGroup1, "rate"), getRateSliderValue(1.0)); mixxx::BeatsPointer pBeats2 = BeatFactory::makeBeatGrid(m_pTrack2->getSampleRate(), 100, 0.0); - m_pTrack2->setBeats(pBeats2); + m_pTrack2->trySetBeats(pBeats2, false); ControlObject::getControl(ConfigKey(m_sGroup2, "rate")) ->set(getRateSliderValue(1.0)); @@ -1159,11 +1159,11 @@ TEST_F(EngineSyncTest, MomentarySyncDependsOnPlayingStates) { // Set up decks so they can be playing, and start dec |