diff --git a/src/engine/channels/enginedeck.cpp b/src/engine/channels/enginedeck.cpp index 25e02a674c7c..9ea88d5f48d4 100644 --- a/src/engine/channels/enginedeck.cpp +++ b/src/engine/channels/enginedeck.cpp @@ -10,6 +10,7 @@ #include "engine/enginevumeter.h" #include "moc_enginedeck.cpp" #include "track/track.h" +#include "util/assert.h" #include "util/sample.h" #ifdef __STEM__ @@ -206,6 +207,18 @@ void EngineDeck::cloneStemState(const EngineDeck* deckToClone) { VERIFY_OR_DEBUG_ASSERT(deckToClone) { return; } + // Sampler and preview decks don't have stem controls + if ((m_stemGain.empty() && m_stemMute.empty()) || + (deckToClone->m_stemGain.empty() && + deckToClone->m_stemMute.empty())) { + return; + } + VERIFY_OR_DEBUG_ASSERT(m_stemGain.size() == kMaxSupportedStems && + m_stemMute.size() == kMaxSupportedStems && + deckToClone->m_stemGain.size() == kMaxSupportedStems && + deckToClone->m_stemMute.size() == kMaxSupportedStems) { + return; + } for (int stemIdx = 0; stemIdx < kMaxSupportedStems; stemIdx++) { m_stemGain[stemIdx]->set(deckToClone->m_stemGain[stemIdx]->get()); m_stemMute[stemIdx]->set(deckToClone->m_stemMute[stemIdx]->get());