From 6fb3c5101e8ca644ed1f7657d374b86a9c4ab6b2 Mon Sep 17 00:00:00 2001 From: Dark Date: Tue, 16 Apr 2024 20:08:06 -0400 Subject: [PATCH] Vitalium: Notify host of changed parameters on patch load. --- .../vitalium/source/common/synth_base.cpp | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ports-juce6.0/vitalium/source/common/synth_base.cpp b/ports-juce6.0/vitalium/source/common/synth_base.cpp index b79c406cf..497372df4 100644 --- a/ports-juce6.0/vitalium/source/common/synth_base.cpp +++ b/ports-juce6.0/vitalium/source/common/synth_base.cpp @@ -339,17 +339,38 @@ void SynthBase::loadTuningFile(const File& file) { void SynthBase::loadInitPreset() { pauseProcessing(true); + auto old = std::map(); + for (auto i = controls_.begin(); i != controls_.end(); i++) { + old.insert(std::pair(i->first, i->second->value())); + } engine_->allSoundsOff(); initEngine(); LoadSave::initSaveInfo(save_info_); + + for (auto i = controls_.begin(); i != controls_.end(); i++) { + if (old.count(i->first) && old[i->first] != i->second->value() + && i->first != "bypass") { + setValueNotifyHost(i->first, i->second->value()); + } + } pauseProcessing(false); } bool SynthBase::loadFromJson(const json& data) { pauseProcessing(true); + auto old = std::map(); + for (auto i = controls_.begin(); i != controls_.end(); i++) { + old.insert(std::pair(i->first, i->second->value())); + } engine_->allSoundsOff(); try { bool result = LoadSave::jsonToState(this, save_info_, data); + for (auto i = controls_.begin(); i != controls_.end(); i++) { + if (old.count(i->first) && old[i->first] != i->second->value() + && i->first != "bypass") { + setValueNotifyHost(i->first, i->second->value()); + } + } pauseProcessing(false); return result; }