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 478309ebfe13474caf5562ead4331e68fa3488c7
parent ae3b2282c011838df4b92df576741d41acbed8da
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Sun,  9 Jun 2024 00:36:29 +0200

slow down sysex transfers a bit to prevent that the internal midi buffer of the device is overflowed

Diffstat:
Msource/wLib/wMidi.cpp | 8++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/source/wLib/wMidi.cpp b/source/wLib/wMidi.cpp @@ -6,8 +6,9 @@ namespace wLib { - static constexpr float g_sysexSendDelaySeconds = 0.2f; - static constexpr uint32_t g_sysexSendDelaySamples = static_cast<uint32_t>(44100.0f * g_sysexSendDelaySeconds); + // pause 0.1 seconds for a sysex size of 500, delay is calculated for other sysex sizes accordingly + static constexpr float g_sysexSendDelaySeconds = 0.1f; + static constexpr uint32_t g_sysexSendDelaySize = 500; Midi::Midi(mc68k::Qsm& _qsm) : m_qsm(_qsm) { @@ -27,8 +28,7 @@ namespace wLib for (const auto b : msg) m_qsm.writeSciRX(b); - if(msg.size() > 0xf) - m_remainingSysexDelay = g_sysexSendDelaySamples; + m_remainingSysexDelay = static_cast<uint32_t>(static_cast<float>(msg.size()) * 44100.0f * g_sysexSendDelaySeconds / static_cast<float>(g_sysexSendDelaySize)); m_pendingSysexBuffers.pop_front(); }