gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

commit 4f64a3c27cb99c891f4723eb7d9d3be4a1eb7ecf
parent 3599930aedbecae7d202e8976f41c30884af0a0b
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Wed, 23 Mar 2022 23:07:17 +0100

fix demo might get the stuck because HDI08 not being ready

Diffstat:
Msource/virusLib/demoplayback.cpp | 12+++++++++---
Msource/virusLib/demoplayback.h | 2+-
2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/source/virusLib/demoplayback.cpp b/source/virusLib/demoplayback.cpp @@ -194,13 +194,15 @@ namespace virusLib m_remainingDelay -= _samples; while(m_remainingDelay <= 0 && m_currentEvent < m_events.size()) { - const auto& e = m_events[m_currentEvent++]; - processEvent(e); + const auto& e = m_events[m_currentEvent]; + if(!processEvent(e)) + return; + ++m_currentEvent; m_remainingDelay = e.delay * m_timeScale; } } - void DemoPlayback::processEvent(const Event& _event) const + bool DemoPlayback::processEvent(const Event& _event) const { switch (_event.type) { @@ -226,6 +228,9 @@ namespace virusLib break; case EventType::RawSerial: { + if(m_mc.needsToWaitForHostBits(0,1)) + return false; + std::vector<dsp56k::TWord> dspWords; for(size_t i=0; i<_event.data.size(); i += 3) @@ -243,5 +248,6 @@ namespace virusLib } break; } + return true; } } diff --git a/source/virusLib/demoplayback.h b/source/virusLib/demoplayback.h @@ -37,7 +37,7 @@ namespace virusLib bool parseData(const std::vector<uint8_t>& _data); - void processEvent(const Event& _event) const; + bool processEvent(const Event& _event) const; Microcontroller& m_mc;