From 371cb51c2e746675e08b913987bc967cf17ea267 Mon Sep 17 00:00:00 2001 From: Blitblank Date: Fri, 26 Dec 2025 15:51:23 -0600 Subject: [PATCH] cleanup envelope parameter mappings --- src/ParameterStore.cpp | 9 +++++++++ src/ParameterStore.h | 11 ++++++----- src/ui/MainWindow.cpp | 5 +---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/ParameterStore.cpp b/src/ParameterStore.cpp index fde19a0..875d11f 100644 --- a/src/ParameterStore.cpp +++ b/src/ParameterStore.cpp @@ -9,6 +9,15 @@ void ParameterStore::set(ParamId id, float value) { values_[static_cast(id)].store(value, std::memory_order_relaxed); } +void ParameterStore::set(EnvelopeId id, float a, float d, float s, float r) { + + EnvelopeParam params = ENV_PARAMS[static_cast(id)]; + set(params.a, a); + set(params.d, d); + set(params.s, s); + set(params.r, r); +} + float ParameterStore::get(ParamId id) const { return values_[static_cast(id)].load(std::memory_order_relaxed); } diff --git a/src/ParameterStore.h b/src/ParameterStore.h index 9cafebf..ac90caa 100644 --- a/src/ParameterStore.h +++ b/src/ParameterStore.h @@ -42,11 +42,11 @@ struct EnvelopeParam { }; constexpr std::array(EnvelopeId::Count)> ENV_PARAMS {{ - { ParamId::Osc1VolumeEnvA, ParamId::Osc1VolumeEnvR, ParamId::Osc1VolumeEnvS, ParamId::Osc1VolumeEnvR }, // Osc1Volume - { ParamId::Osc1VolumeEnvA, ParamId::Osc1VolumeEnvR, ParamId::Osc1VolumeEnvS, ParamId::Osc1VolumeEnvR }, // Osc2Volume (not implemented) - { ParamId::Osc1VolumeEnvA, ParamId::Osc1VolumeEnvR, ParamId::Osc1VolumeEnvS, ParamId::Osc1VolumeEnvR }, // Osc3Volume (not implemented) - { ParamId::FilterCutoffEnvA, ParamId::FilterCutoffEnvR, ParamId::FilterCutoffEnvS, ParamId::FilterCutoffEnvR }, // FilterCutoff - { ParamId::FilterResonanceEnvA, ParamId::FilterResonanceEnvR, ParamId::FilterResonanceEnvS, ParamId::FilterResonanceEnvR }, // FilterResonance + { ParamId::Osc1VolumeEnvA, ParamId::Osc1VolumeEnvD, ParamId::Osc1VolumeEnvS, ParamId::Osc1VolumeEnvR }, // Osc1Volume + { ParamId::Osc1VolumeEnvA, ParamId::Osc1VolumeEnvD, ParamId::Osc1VolumeEnvS, ParamId::Osc1VolumeEnvR }, // Osc2Volume (not implemented) + { ParamId::Osc1VolumeEnvA, ParamId::Osc1VolumeEnvD, ParamId::Osc1VolumeEnvS, ParamId::Osc1VolumeEnvR }, // Osc3Volume (not implemented) + { ParamId::FilterCutoffEnvA, ParamId::FilterCutoffEnvR, ParamId::FilterCutoffEnvS, ParamId::FilterCutoffEnvR }, // FilterCutoff + { ParamId::FilterResonanceEnvA, ParamId::FilterResonanceEnvR, ParamId::FilterResonanceEnvS, ParamId::FilterResonanceEnvR }, // FilterResonance }}; @@ -85,6 +85,7 @@ public: ~ParameterStore() = default; void set(ParamId id, float value); + void set(EnvelopeId, float a, float d, float s, float r); float get(ParamId id) const; void resetToDefaults(); diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp index 72655e0..3b4d9dc 100644 --- a/src/ui/MainWindow.cpp +++ b/src/ui/MainWindow.cpp @@ -25,10 +25,7 @@ MainWindow::MainWindow(QWidget *parent) : ui_->envelopeOsc1Volume->init(EnvelopeId::Osc1Volume); connect(ui_->envelopeOsc1Volume, &EnvelopeGenerator::envelopeChanged, this, [this](float a, float d, float s, float r) { - audio_->parameters()->set(ParamId::Osc1VolumeEnvA, a); - audio_->parameters()->set(ParamId::Osc1VolumeEnvD, d); - audio_->parameters()->set(ParamId::Osc1VolumeEnvS, s); - audio_->parameters()->set(ParamId::Osc1VolumeEnvR, r); + audio_->parameters()->set(EnvelopeId::Osc1Volume, a, d, s, r); }); // this should be easy enough to put into a for each envelopeGenerator loop }