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:
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;
}