diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2021-04-02 18:56:57 +0200 |
---|---|---|
committer | Daniel Schürmann <daschuer@mixxx.org> | 2021-04-02 18:58:42 +0200 |
commit | c8b7224c2c7cd93413dbde412d234e26c5a50b96 (patch) | |
tree | 9b36cbcb35f2f80a6054f804f1c7bf8c9f8f76a4 | |
parent | 8ff946c223281932ef9a017e6c6590a9ad161ada (diff) |
Don't change the internal baseBpm away from the value adopted from a deck
-rw-r--r-- | src/engine/sync/internalclock.cpp | 3 | ||||
-rw-r--r-- | src/engine/sync/internalclock.h | 4 |
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. |