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 f0a1f267b2ae8ba96532c53246d1729a62949568
parent 68e56ba86261c0b34bd55e7fb467d52ca5d1fa5b
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Wed,  6 Nov 2024 04:48:06 +0100

fix outdated multi in arrangement dump

Diffstat:
Msource/virusJucePlugin/VirusController.cpp | 3+++
Msource/virusJucePlugin/VirusController.h | 3++-
Msource/virusJucePlugin/VirusEditor.cpp | 22+++++++++++++++-------
3 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/source/virusJucePlugin/VirusController.cpp b/source/virusJucePlugin/VirusController.cpp @@ -514,6 +514,9 @@ namespace virus } getProcessor().updateHostDisplay(juce::AudioProcessorListener::ChangeDetails().withProgramChanged(true)); + + if(onMultiReceived) + onMultiReceived(); } } diff --git a/source/virusJucePlugin/VirusController.h b/source/virusJucePlugin/VirusController.h @@ -133,7 +133,8 @@ namespace virus std::function<void(int)> onProgramChange = {}; std::function<void()> onMsgDone = {}; - std::function<void(virusLib::BankNumber _bank, uint32_t _program)> onRomPatchReceived = {}; + std::function<void(virusLib::BankNumber, uint32_t)> onRomPatchReceived = {}; + std::function<void()> onMultiReceived = {}; bool requestProgram(uint8_t _bank, uint8_t _program, bool _multi) const; bool requestSingle(uint8_t _bank, uint8_t _program) const; diff --git a/source/virusJucePlugin/VirusEditor.cpp b/source/virusJucePlugin/VirusEditor.cpp @@ -480,15 +480,23 @@ namespace genericVirusUI break; case SaveType::Arrangement: { - messages.push_back(getController().getMultiEditBuffer().data); - - for(uint8_t i=0; i<16; ++i) + getController().onMultiReceived = [this, _fileType, _pathName] { - const auto dump = getController().createSingleDump(i, toMidiByte(virusLib::BankNumber::EditBuffer), i); - messages.push_back(dump); - } + std::vector< std::vector<uint8_t> > messages; + messages.push_back(getController().getMultiEditBuffer().data); + + for(uint8_t i=0; i<16; ++i) + { + const auto dump = getController().createSingleDump(i, toMidiByte(virusLib::BankNumber::EditBuffer), i); + messages.push_back(dump); + Editor::savePresets(_fileType, _pathName, messages); + } + + getController().onMultiReceived = {}; + }; + getController().requestMulti(0, 0); } - break; + return true; default: return false; }