cleanup envelope parameter mappings

This commit is contained in:
2025-12-26 15:51:23 -06:00
parent d0bf55faf7
commit 371cb51c2e
3 changed files with 16 additions and 9 deletions

View File

@@ -9,6 +9,15 @@ void ParameterStore::set(ParamId id, float value) {
values_[static_cast<size_t>(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<size_t>(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<size_t>(id)].load(std::memory_order_relaxed);
}

View File

@@ -42,11 +42,11 @@ struct EnvelopeParam {
};
constexpr std::array<EnvelopeParam, static_cast<size_t>(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();

View File

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