cleanup envelopeGenerator initialization
This commit is contained in:
@@ -21,28 +21,16 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
// synth business
|
||||
audio_->start();
|
||||
|
||||
// connect envelopeGenerator
|
||||
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);
|
||||
// TODO: parameters()->setEnv(ENV_ID, a, d, s ,r)
|
||||
});
|
||||
|
||||
// initialize to defaults
|
||||
ui_->envelopeOsc1Volume->setRanges(
|
||||
PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvA)].min, PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvA)].max,
|
||||
PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvD)].min, PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvD)].max,
|
||||
PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvS)].min, PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvS)].max,
|
||||
PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvR)].min, PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvR)].max
|
||||
);
|
||||
ui_->envelopeOsc1Volume->setAttack(PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvA)].def);
|
||||
ui_->envelopeOsc1Volume->setDecay(PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvD)].def);
|
||||
ui_->envelopeOsc1Volume->setSustain(PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvS)].def);
|
||||
ui_->envelopeOsc1Volume->setRelease(PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvR)].def);
|
||||
|
||||
// TODO: assign envelope widget a ParamID so that intialization and parameter bindings can be done from the envelope controller
|
||||
// this should be easy enough to put into a for each envelopeGenerator loop
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() {
|
||||
@@ -60,14 +48,5 @@ void MainWindow::keyReleaseEvent(QKeyEvent* event) {
|
||||
void MainWindow::onResetClicked() {
|
||||
|
||||
// initialize to defaults
|
||||
ui_->envelopeOsc1Volume->setRanges(
|
||||
PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvA)].min, PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvA)].max,
|
||||
PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvD)].min, PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvD)].max,
|
||||
PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvS)].min, PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvS)].max,
|
||||
PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvR)].min, PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvR)].max
|
||||
);
|
||||
ui_->envelopeOsc1Volume->setAttack(PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvA)].def);
|
||||
ui_->envelopeOsc1Volume->setDecay(PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvD)].def);
|
||||
ui_->envelopeOsc1Volume->setSustain(PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvS)].def);
|
||||
ui_->envelopeOsc1Volume->setRelease(PARAM_DEFS[static_cast<size_t>(ParamId::Osc1VolumeEnvR)].def);
|
||||
ui_->envelopeOsc1Volume->init(EnvelopeId::Osc1Volume);
|
||||
}
|
||||
|
||||
@@ -56,13 +56,6 @@ void EnvelopeGenerator::setRelease(float v) {
|
||||
ui_->sliderRelease->setValue(v);
|
||||
}
|
||||
|
||||
void EnvelopeGenerator::setRanges(float minA, float maxA, float minD, float maxD, float minS, float maxS, float minR, float maxR) {
|
||||
ui_->sliderAttack->setRange(minA, maxA);
|
||||
ui_->sliderDecay->setRange(minD, maxD);
|
||||
ui_->sliderSustain->setRange(minS, maxS);
|
||||
ui_->sliderRelease->setRange(minR, maxR);
|
||||
}
|
||||
|
||||
void EnvelopeGenerator::emitEnvelope() {
|
||||
emit envelopeChanged(
|
||||
attack(),
|
||||
@@ -70,4 +63,34 @@ void EnvelopeGenerator::emitEnvelope() {
|
||||
sustain(),
|
||||
release()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void EnvelopeGenerator::init(EnvelopeId id) {
|
||||
|
||||
// could probably make this simpler with a map
|
||||
ParamId aId, dId, sId, rId;
|
||||
switch (id) {
|
||||
case EnvelopeId::Osc1Volume:
|
||||
aId = ParamId::Osc1VolumeEnvA; dId = ParamId::Osc1VolumeEnvD; sId = ParamId::Osc1VolumeEnvS; rId = ParamId::Osc1VolumeEnvR;
|
||||
break;
|
||||
case EnvelopeId::FilterCutoff:
|
||||
aId = ParamId::FilterCutoffEnvA; dId = ParamId::FilterCutoffEnvD; sId = ParamId::FilterCutoffEnvS; rId = ParamId::FilterCutoffEnvR;
|
||||
break;
|
||||
case EnvelopeId::FilterResonance:
|
||||
aId = ParamId::FilterResonanceEnvA; dId = ParamId::FilterResonanceEnvD; sId = ParamId::FilterResonanceEnvS; rId = ParamId::FilterResonanceEnvR;
|
||||
break;
|
||||
default: // not found
|
||||
break;
|
||||
}
|
||||
|
||||
ui_->sliderAttack->setRange(PARAM_DEFS[static_cast<size_t>(aId)].min, PARAM_DEFS[static_cast<size_t>(aId)].max);
|
||||
ui_->sliderDecay->setRange(PARAM_DEFS[static_cast<size_t>(dId)].min, PARAM_DEFS[static_cast<size_t>(dId)].max);
|
||||
ui_->sliderSustain->setRange(PARAM_DEFS[static_cast<size_t>(sId)].min, PARAM_DEFS[static_cast<size_t>(sId)].max);
|
||||
ui_->sliderRelease->setRange(PARAM_DEFS[static_cast<size_t>(rId)].min, PARAM_DEFS[static_cast<size_t>(rId)].max);
|
||||
|
||||
setAttack(PARAM_DEFS[static_cast<size_t>(aId)].def);
|
||||
setDecay(PARAM_DEFS[static_cast<size_t>(sId)].def);
|
||||
setSustain(PARAM_DEFS[static_cast<size_t>(sId)].def);
|
||||
setRelease(PARAM_DEFS[static_cast<size_t>(rId)].def);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include "../../ParameterStore.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
namespace Ui { class EnvelopeGenerator; }
|
||||
QT_END_NAMESPACE
|
||||
@@ -14,13 +16,15 @@ public:
|
||||
explicit EnvelopeGenerator(QWidget* parent = nullptr);
|
||||
~EnvelopeGenerator();
|
||||
|
||||
void init(EnvelopeId id);
|
||||
|
||||
// setters
|
||||
void setAttack(float v);
|
||||
void setDecay(float v);
|
||||
void setSustain(float v);
|
||||
void setRelease(float v);
|
||||
|
||||
void setRanges(float minA, float maxA, float minD, float maxD, float minS, float maxS, float minR, float maxR);
|
||||
|
||||
// getters
|
||||
float attack() const;
|
||||
float decay() const;
|
||||
float sustain() const;
|
||||
|
||||
Reference in New Issue
Block a user