add helper function for binding smart-sliders
This commit is contained in:
@@ -5,9 +5,9 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
|
||||||
#include "../ConfigInterface.h"
|
#include "ConfigInterface.h"
|
||||||
#include "Synth.h"
|
#include "Synth.h"
|
||||||
#include "../KeyboardController.h"
|
#include "KeyboardController.h"
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#define AUDIO_API RtAudio::WINDOWS_WASAPI
|
#define AUDIO_API RtAudio::WINDOWS_WASAPI
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "../ParameterStore.h"
|
#include "ParameterStore.h"
|
||||||
#include "../NoteQueue.h"
|
#include "NoteQueue.h"
|
||||||
#include "Envelope.h"
|
#include "Envelope.h"
|
||||||
#include "ScopeBuffer.h"
|
#include "ScopeBuffer.h"
|
||||||
#include "Filter.h"
|
#include "Filter.h"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#include "Oscillator.h"
|
#include "Oscillator.h"
|
||||||
#include "Envelope.h"
|
#include "Envelope.h"
|
||||||
#include "Filter.h"
|
#include "Filter.h"
|
||||||
#include "../ParameterStore.h"
|
#include "ParameterStore.h"
|
||||||
|
|
||||||
#ifndef M_PI // I hate my stupid chungus life
|
#ifndef M_PI // I hate my stupid chungus life
|
||||||
#define M_PI 3.14159265358979323846
|
#define M_PI 3.14159265358979323846
|
||||||
|
|||||||
@@ -2,8 +2,7 @@
|
|||||||
#include "MainWindow.h"
|
#include "MainWindow.h"
|
||||||
#include "ui_MainWindow.h"
|
#include "ui_MainWindow.h"
|
||||||
|
|
||||||
#include "SmartSlider/SmartSlider.h"
|
#include "ParameterStore.h"
|
||||||
#include "../ParameterStore.h"
|
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent) :
|
MainWindow::MainWindow(QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
@@ -60,65 +59,18 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
// rogue sliders, TODO: clean these up in a package
|
// rogue sliders, TODO: clean these up in a package
|
||||||
connect(ui_->sliderMasterOctave, &SmartSlider::valueChanged,
|
bindSlider(ui_->sliderMasterOctave, ParamId::MasterOctaveOffset, true);
|
||||||
this, [this](float value) {
|
bindSlider(ui_->sliderMasterSemitone, ParamId::MasterSemitoneOffset, true);
|
||||||
audio_->parameters()->set(ParamId::MasterOctaveOffset, value);
|
bindSlider(ui_->sliderMasterPitch, ParamId::MasterPitchOffset);
|
||||||
ui_->sliderMasterOctave->setResolution();
|
bindSlider(ui_->sliderOsc1Octave, ParamId::Osc1OctaveOffset, true);
|
||||||
});
|
bindSlider(ui_->sliderOsc1Semitone, ParamId::Osc1SemitoneOffset, true);
|
||||||
connect(ui_->sliderMasterSemitone, &SmartSlider::valueChanged,
|
bindSlider(ui_->sliderOsc1Pitch, ParamId::Osc1PitchOffset);
|
||||||
this, [this](float value) {
|
bindSlider(ui_->sliderOsc2Octave, ParamId::Osc2OctaveOffset, true);
|
||||||
audio_->parameters()->set(ParamId::MasterSemitoneOffset, value);
|
bindSlider(ui_->sliderOsc2Semitone, ParamId::Osc2SemitoneOffset, true);
|
||||||
ui_->sliderMasterSemitone->setResolution();
|
bindSlider(ui_->sliderOsc2Pitch, ParamId::Osc2PitchOffset);
|
||||||
});
|
bindSlider(ui_->sliderOsc3Octave, ParamId::Osc3OctaveOffset, true);
|
||||||
connect(ui_->sliderMasterPitch, &SmartSlider::valueChanged,
|
bindSlider(ui_->sliderOsc3Semitone, ParamId::Osc3SemitoneOffset, true);
|
||||||
this, [this](float value) {
|
bindSlider(ui_->sliderOsc3Pitch, ParamId::Osc3PitchOffset);
|
||||||
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);
|
|
||||||
});
|
|
||||||
|
|
||||||
// synth business
|
// synth business
|
||||||
audio_->start();
|
audio_->start();
|
||||||
@@ -209,3 +161,12 @@ void MainWindow::onResetClicked() {
|
|||||||
ui_->comboOsc1WaveSelector2->setCurrentIndex(configRoot["OscWaveSelector2"].as<int>());
|
ui_->comboOsc1WaveSelector2->setCurrentIndex(configRoot["OscWaveSelector2"].as<int>());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "ConfigInterface.h"
|
#include "ConfigInterface.h"
|
||||||
#include "synth/AudioEngine.h"
|
#include "synth/AudioEngine.h"
|
||||||
#include "MidiController.h"
|
#include "MidiController.h"
|
||||||
|
#include "SmartSlider/SmartSlider.h"
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui { class MainWindow; }
|
namespace Ui { class MainWindow; }
|
||||||
@@ -29,6 +30,8 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
void bindSlider(SmartSlider* slider, ParamId param, bool updateResolution = false);
|
||||||
|
|
||||||
Ui::MainWindow *ui_;
|
Ui::MainWindow *ui_;
|
||||||
|
|
||||||
ParameterStore params_;
|
ParameterStore params_;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
#include "../../ParameterStore.h"
|
#include "ParameterStore.h"
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui { class EnvelopeGenerator; }
|
namespace Ui { class EnvelopeGenerator; }
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "ui_Scope.h"
|
#include "ui_Scope.h"
|
||||||
|
|
||||||
// TODO: fix include directories because what is this
|
// TODO: fix include directories because what is this
|
||||||
#include "../../../synth/ScopeBuffer.h"
|
#include "synth/ScopeBuffer.h"
|
||||||
|
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|||||||
Reference in New Issue
Block a user