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