diff --git a/src/synth/AudioEngine.h b/src/synth/AudioEngine.h index 152fd40..b72776b 100644 --- a/src/synth/AudioEngine.h +++ b/src/synth/AudioEngine.h @@ -5,9 +5,9 @@ #include #include -#include "../ConfigInterface.h" +#include "ConfigInterface.h" #include "Synth.h" -#include "../KeyboardController.h" +#include "KeyboardController.h" #if defined(_WIN32) #define AUDIO_API RtAudio::WINDOWS_WASAPI diff --git a/src/synth/Synth.h b/src/synth/Synth.h index cdb4259..911b721 100644 --- a/src/synth/Synth.h +++ b/src/synth/Synth.h @@ -1,8 +1,8 @@ #pragma once -#include "../ParameterStore.h" -#include "../NoteQueue.h" +#include "ParameterStore.h" +#include "NoteQueue.h" #include "Envelope.h" #include "ScopeBuffer.h" #include "Filter.h" diff --git a/src/synth/Voice.h b/src/synth/Voice.h index a440337..2140496 100644 --- a/src/synth/Voice.h +++ b/src/synth/Voice.h @@ -4,7 +4,7 @@ #include "Oscillator.h" #include "Envelope.h" #include "Filter.h" -#include "../ParameterStore.h" +#include "ParameterStore.h" #ifndef M_PI // I hate my stupid chungus life #define M_PI 3.14159265358979323846 diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp index 53171b3..c23fb3f 100644 --- a/src/ui/MainWindow.cpp +++ b/src/ui/MainWindow.cpp @@ -2,8 +2,7 @@ #include "MainWindow.h" #include "ui_MainWindow.h" -#include "SmartSlider/SmartSlider.h" -#include "../ParameterStore.h" +#include "ParameterStore.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -60,65 +59,18 @@ MainWindow::MainWindow(QWidget *parent) : } // rogue sliders, TODO: clean these up in a package - connect(ui_->sliderMasterOctave, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::MasterOctaveOffset, value); - ui_->sliderMasterOctave->setResolution(); - }); - connect(ui_->sliderMasterSemitone, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::MasterSemitoneOffset, value); - ui_->sliderMasterSemitone->setResolution(); - }); - connect(ui_->sliderMasterPitch, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::MasterPitchOffset, value); - }); - - connect(ui_->sliderOsc1Octave, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::Osc1OctaveOffset, value); - ui_->sliderOsc1Octave->setResolution(); - }); - connect(ui_->sliderOsc1Semitone, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::Osc1SemitoneOffset, value); - ui_->sliderOsc1Semitone->setResolution(); - }); - connect(ui_->sliderOsc1Pitch, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::Osc1PitchOffset, value); - }); - - connect(ui_->sliderOsc2Octave, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::Osc2OctaveOffset, value); - ui_->sliderOsc2Octave->setResolution(); - }); - connect(ui_->sliderOsc2Semitone, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::Osc2SemitoneOffset, value); - ui_->sliderOsc2Semitone->setResolution(); - }); - connect(ui_->sliderOsc2Pitch, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::Osc2PitchOffset, value); - }); - - connect(ui_->sliderOsc3Octave, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::Osc3OctaveOffset, value); - ui_->sliderOsc3Octave->setResolution(); - }); - connect(ui_->sliderOsc3Semitone, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::Osc3SemitoneOffset, value); - ui_->sliderOsc3Semitone->setResolution(); - }); - connect(ui_->sliderOsc3Pitch, &SmartSlider::valueChanged, - this, [this](float value) { - audio_->parameters()->set(ParamId::Osc3PitchOffset, value); - }); + bindSlider(ui_->sliderMasterOctave, ParamId::MasterOctaveOffset, true); + bindSlider(ui_->sliderMasterSemitone, ParamId::MasterSemitoneOffset, true); + bindSlider(ui_->sliderMasterPitch, ParamId::MasterPitchOffset); + bindSlider(ui_->sliderOsc1Octave, ParamId::Osc1OctaveOffset, true); + bindSlider(ui_->sliderOsc1Semitone, ParamId::Osc1SemitoneOffset, true); + bindSlider(ui_->sliderOsc1Pitch, ParamId::Osc1PitchOffset); + bindSlider(ui_->sliderOsc2Octave, ParamId::Osc2OctaveOffset, true); + bindSlider(ui_->sliderOsc2Semitone, ParamId::Osc2SemitoneOffset, true); + bindSlider(ui_->sliderOsc2Pitch, ParamId::Osc2PitchOffset); + bindSlider(ui_->sliderOsc3Octave, ParamId::Osc3OctaveOffset, true); + bindSlider(ui_->sliderOsc3Semitone, ParamId::Osc3SemitoneOffset, true); + bindSlider(ui_->sliderOsc3Pitch, ParamId::Osc3PitchOffset); // synth business audio_->start(); @@ -209,3 +161,12 @@ void MainWindow::onResetClicked() { ui_->comboOsc1WaveSelector2->setCurrentIndex(configRoot["OscWaveSelector2"].as()); } + +void MainWindow::bindSlider(SmartSlider* slider, ParamId param, bool updateResolution) +{ + connect(slider, &SmartSlider::valueChanged, this, + [this](float value, ParamId param, SmartSlider* slider, bool updateResolution) { + audio_->parameters()->set(param, value); + if (updateResolution) slider->setResolution(); + }); +} diff --git a/src/ui/MainWindow.h b/src/ui/MainWindow.h index 6ebc053..0975787 100644 --- a/src/ui/MainWindow.h +++ b/src/ui/MainWindow.h @@ -7,6 +7,7 @@ #include "ConfigInterface.h" #include "synth/AudioEngine.h" #include "MidiController.h" +#include "SmartSlider/SmartSlider.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } @@ -29,6 +30,8 @@ private slots: private: + void bindSlider(SmartSlider* slider, ParamId param, bool updateResolution = false); + Ui::MainWindow *ui_; ParameterStore params_; diff --git a/src/ui/widgets/EnvelopeGenerator/EnvelopeGenerator.h b/src/ui/widgets/EnvelopeGenerator/EnvelopeGenerator.h index 230eea5..2845b09 100644 --- a/src/ui/widgets/EnvelopeGenerator/EnvelopeGenerator.h +++ b/src/ui/widgets/EnvelopeGenerator/EnvelopeGenerator.h @@ -3,7 +3,7 @@ #include -#include "../../ParameterStore.h" +#include "ParameterStore.h" QT_BEGIN_NAMESPACE namespace Ui { class EnvelopeGenerator; } diff --git a/src/ui/widgets/Scope/Scope.cpp b/src/ui/widgets/Scope/Scope.cpp index 1769903..dd4b6df 100644 --- a/src/ui/widgets/Scope/Scope.cpp +++ b/src/ui/widgets/Scope/Scope.cpp @@ -3,7 +3,7 @@ #include "ui_Scope.h" // TODO: fix include directories because what is this -#include "../../../synth/ScopeBuffer.h" +#include "synth/ScopeBuffer.h" #include #include