summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2021-04-02 18:56:57 +0200
committerDaniel Schürmann <daschuer@mixxx.org>2021-04-02 18:58:42 +0200
commitc8b7224c2c7cd93413dbde412d234e26c5a50b96 (patch)
tree9b36cbcb35f2f80a6054f804f1c7bf8c9f8f76a4
parent8ff946c223281932ef9a017e6c6590a9ad161ada (diff)
Don't change the internal baseBpm away from the value adopted from a deck
-rw-r--r--src/engine/sync/internalclock.cpp3
-rw-r--r--src/engine/sync/internalclock.h4
2 files changed, 5 insertions, 2 deletions
diff --git a/src/engine/sync/internalclock.cpp b/src/engine/sync/internalclock.cpp
index d12eebfdf4..f36d2136a3 100644
--- a/src/engine/sync/internalclock.cpp
+++ b/src/engine/sync/internalclock.cpp
@@ -138,7 +138,7 @@ void InternalClock::setMasterParams(double beatDistance, double baseBpm, double
if (kLogger.traceEnabled()) {
kLogger.trace() << "InternalClock::setMasterParams" << beatDistance << baseBpm << bpm;
}
- if (bpm == 0) {
+ if (bpm <= 0.0 || baseBpm <= 0.0) {
return;
}
m_dBaseBpm = baseBpm;
@@ -147,7 +147,6 @@ void InternalClock::setMasterParams(double beatDistance, double baseBpm, double
}
void InternalClock::slotBpmChanged(double bpm) {
- m_dBaseBpm = bpm;
updateBeatLength(m_iOldSampleRate, bpm);
if (!isSynchronized()) {
return;
diff --git a/src/engine/sync/internalclock.h b/src/engine/sync/internalclock.h
index ab05889579..735bdd8536 100644
--- a/src/engine/sync/internalclock.h
+++ b/src/engine/sync/internalclock.h
@@ -73,6 +73,10 @@ class InternalClock : public QObject, public Clock, public Syncable {
int m_iOldSampleRate;
double m_dOldBpm;
+
+ // This is the BPM value at unity adopted when sync is enabled.
+ // It is used to relate the followers and must not change when
+ // the bpm is adjusted to avoid sudden double/half rate changes.
double m_dBaseBpm;
// The internal clock rate is stored in terms of samples per beat.