summaryrefslogtreecommitdiff
path: root/plugingui
diff options
context:
space:
mode:
Diffstat (limited to 'plugingui')
-rw-r--r--plugingui/humanizerframecontent.cc19
-rw-r--r--plugingui/humanizerframecontent.h3
-rw-r--r--plugingui/knob.cc12
-rw-r--r--plugingui/knob.h2
-rw-r--r--plugingui/timingframecontent.cc59
-rw-r--r--plugingui/timingframecontent.h9
6 files changed, 85 insertions, 19 deletions
diff --git a/plugingui/humanizerframecontent.cc b/plugingui/humanizerframecontent.cc
index dbb6007..51725d6 100644
--- a/plugingui/humanizerframecontent.cc
+++ b/plugingui/humanizerframecontent.cc
@@ -45,18 +45,21 @@ HumanizerframeContent::HumanizerframeContent(Widget* parent,
attack.resize(80, 80);
attack_knob.resize(30, 30);
attack_knob.showValue(false);
+ attack_knob.setDefaultValue(Settings::velocity_modifier_weight_default);
attack.setControl(&attack_knob);
layout.addItem(&attack);
falloff.resize(80, 80);
falloff_knob.resize(30, 30);
falloff_knob.showValue(false);
+ falloff_knob.setDefaultValue(Settings::velocity_modifier_falloff_default);
falloff.setControl(&falloff_knob);
layout.addItem(&falloff);
stddev.resize(80, 80);
stddev_knob.resize(30, 30);
stddev_knob.showValue(false);
+ stddev_knob.setDefaultValue(stddevSettingsToKnob(Settings::velocity_stddev_default));
stddev.setControl(&stddev_knob);
layout.addItem(&stddev);
@@ -79,6 +82,16 @@ HumanizerframeContent::HumanizerframeContent(Widget* parent,
this, &HumanizerframeContent::stddevKnobValueChanged);
}
+float HumanizerframeContent::stddevSettingsToKnob(float value)
+{
+ return (value - 0.5f) / 3.0f;
+}
+
+float HumanizerframeContent::stddevKnobToSettings(float value)
+{
+ return value * 3.0f + 0.5f;
+}
+
void HumanizerframeContent::attackValueChanged(float value)
{
settings.velocity_modifier_weight.store(value);
@@ -91,12 +104,14 @@ void HumanizerframeContent::falloffValueChanged(float value)
void HumanizerframeContent::stddevKnobValueChanged(float value)
{
- settings.velocity_stddev.store(value * 3.0f + 0.5f );
+ auto settings_value = stddevKnobToSettings(value);
+ settings.velocity_stddev.store(settings_value);
}
void HumanizerframeContent::stddevSettingsValueChanged(float value)
{
- stddev_knob.setValue((value - 0.5f) / 3.0f);
+ auto knob_value = stddevSettingsToKnob(value);
+ stddev_knob.setValue(knob_value);
}
} // GUI::
diff --git a/plugingui/humanizerframecontent.h b/plugingui/humanizerframecontent.h
index 8286116..1fdc83c 100644
--- a/plugingui/humanizerframecontent.h
+++ b/plugingui/humanizerframecontent.h
@@ -46,6 +46,9 @@ public:
SettingsNotifier& settings_notifier);
private:
+ float stddevSettingsToKnob(float value);
+ float stddevKnobToSettings(float value);
+
void attackValueChanged(float value);
void falloffValueChanged(float value);
void stddevKnobValueChanged(float value);
diff --git a/plugingui/knob.cc b/plugingui/knob.cc
index 4082aa3..8e60056 100644
--- a/plugingui/knob.cc
+++ b/plugingui/knob.cc
@@ -61,6 +61,11 @@ void Knob::setValue(float value)
internalSetValue(value);
}
+void Knob::setDefaultValue(float value)
+{
+ default_value = value;
+}
+
void Knob::setRange(float minimum, float maximum)
{
this->minimum = minimum;
@@ -145,10 +150,16 @@ void Knob::buttonEvent(ButtonEvent* buttonEvent)
return;
}
+ if (buttonEvent->doubleClick) {
+ internalSetValue(default_value);
+ return;
+ }
+
if(buttonEvent->direction == Direction::down)
{
state = down;
mouse_offset_x = buttonEvent->x + (-1 * buttonEvent->y);
+ return;
}
if(buttonEvent->direction == Direction::up)
@@ -156,6 +167,7 @@ void Knob::buttonEvent(ButtonEvent* buttonEvent)
state = up;
mouse_offset_x = buttonEvent->x + (-1 * buttonEvent->y);
clicked();
+ return;
}
}
diff --git a/plugingui/knob.h b/plugingui/knob.h
index d8771d8..fc71511 100644
--- a/plugingui/knob.h
+++ b/plugingui/knob.h
@@ -44,6 +44,7 @@ public:
bool isFocusable() override { return true; }
void setValue(float value);
+ void setDefaultValue(float value);
void setRange(float minimum, float maximum);
float value();
void showValue(bool show_value);
@@ -72,6 +73,7 @@ private:
state_t state;
float current_value;
+ float default_value = 0.0;
float maximum;
float minimum;
diff --git a/plugingui/timingframecontent.cc b/plugingui/timingframecontent.cc
index fef4d33..3a29c6b 100644
--- a/plugingui/timingframecontent.cc
+++ b/plugingui/timingframecontent.cc
@@ -28,8 +28,6 @@
#include <cmath>
-#include <settings.h>
-
#include "painter.h"
namespace GUI
@@ -47,18 +45,21 @@ TimingframeContent::TimingframeContent(Widget* parent,
tightness.resize(80, 80);
tightness_knob.resize(30, 30);
tightness_knob.showValue(false);
+ tightness_knob.setDefaultValue(tightnessSettingsToKnob(Settings::latency_stddev_default));
tightness.setControl(&tightness_knob);
layout.addItem(&tightness);
regain.resize(80, 80);
regain_knob.resize(30, 30);
regain_knob.showValue(false);
+ regain_knob.setDefaultValue(Settings::latency_regain_default);
regain.setControl(&regain_knob);
layout.addItem(&regain);
laidback.resize(80, 80);
laidback_knob.resize(30, 30);
laidback_knob.showValue(false);
+ laidback_knob.setDefaultValue(laidbackSettingsToKnob(Settings::latency_laid_back_default));
laidback.setControl(&laidback_knob);
layout.addItem(&laidback);
// set range to [-1, 1]
@@ -85,20 +86,53 @@ TimingframeContent::TimingframeContent(Widget* parent,
}
-void TimingframeContent::tightnessKnobValueChanged(float value)
+float TimingframeContent::thightnessKnobToSettings(float value)
{
value -= 1.0f;
value *= -1.0f;
value *= 500.0f;
- settings.latency_stddev.store(value);
+
+ return value;
}
-void TimingframeContent::tightnessSettingsValueChanged(float value)
+float TimingframeContent::tightnessSettingsToKnob(float value)
{
value /= 500.0f;
value *= -1.0f;
value += 1.0f;
- tightness_knob.setValue(value);
+
+ return value;
+}
+
+float TimingframeContent::laidbackKnobToSettings(float value)
+{
+ value -= 0.5f;
+ value *= 2.0f;
+ value *= settings.latency_max.load();
+
+ return std::lround(value);
+}
+
+float TimingframeContent::laidbackSettingsToKnob(int int_value)
+{
+ float value = int_value;
+ value /= (float)settings.latency_max.load();
+ value *= 0.5;
+ value += 0.5;
+
+ return value;
+}
+
+void TimingframeContent::tightnessKnobValueChanged(float value)
+{
+ auto settings_value = thightnessKnobToSettings(value);
+ settings.latency_stddev.store(settings_value);
+}
+
+void TimingframeContent::tightnessSettingsValueChanged(float value)
+{
+ auto knob_value = tightnessSettingsToKnob(value);
+ tightness_knob.setValue(knob_value);
}
void TimingframeContent::regainKnobValueChanged(float value)
@@ -113,19 +147,14 @@ void TimingframeContent::regainSettingsValueChanged(float value)
void TimingframeContent::laidbackKnobValueChanged(float value)
{
- value -= 0.5f;
- value *= 2.0f;
- value *= settings.latency_max.load();
- settings.latency_laid_back.store(std::lround(value));
+ auto settings_value = laidbackKnobToSettings(value);
+ settings.latency_laid_back.store(settings_value);
}
void TimingframeContent::laidbackSettingsValueChanged(int int_value)
{
- float value = int_value;
- value /= (float)settings.latency_max.load();
- value *= 0.5;
- value += 0.5;
- laidback_knob.setValue(value);
+ auto knob_value = laidbackSettingsToKnob(int_value);
+ laidback_knob.setValue(knob_value);
}
} // GUI::
diff --git a/plugingui/timingframecontent.h b/plugingui/timingframecontent.h
index 6feeabe..dc2ad8b 100644
--- a/plugingui/timingframecontent.h
+++ b/plugingui/timingframecontent.h
@@ -28,15 +28,15 @@
#include "knob.h"
#include "label.h"
+#include "labeledcontrol.h"
#include "layout.h"
#include "widget.h"
-#include "labeledcontrol.h"
+#include <settings.h>
#include <iomanip>
#include <sstream>
-struct Settings;
class SettingsNotifier;
namespace GUI
@@ -51,6 +51,11 @@ public:
SettingsNotifier& settings_notifier);
private:
+ float thightnessKnobToSettings(float value);
+ float tightnessSettingsToKnob(float value);
+ float laidbackKnobToSettings(float value);
+ float laidbackSettingsToKnob(int int_value);
+
void tightnessKnobValueChanged(float value);
void tightnessSettingsValueChanged(float value);
void regainKnobValueChanged(float value);