diff options
author | André Nusser <andre.nusser@googlemail.com> | 2020-04-30 22:25:44 +0200 |
---|---|---|
committer | André Nusser <andre.nusser@googlemail.com> | 2020-04-30 22:25:44 +0200 |
commit | 43ab0002e3048684b5661a5c341fc5f0e0f49f13 (patch) | |
tree | c4e4746836eb7654928ab2e652408664660e5b88 | |
parent | 224c50a694b831a6fe8f901d988f5156385716dc (diff) |
Mark last input and output in powermap widget.
-rw-r--r-- | plugingui/powerwidget.cc | 14 | ||||
-rw-r--r-- | src/powermapfilter.cc | 2 | ||||
-rw-r--r-- | src/settings.h | 15 |
3 files changed, 31 insertions, 0 deletions
diff --git a/plugingui/powerwidget.cc b/plugingui/powerwidget.cc index 2d24fa0..7e8a904 100644 --- a/plugingui/powerwidget.cc +++ b/plugingui/powerwidget.cc @@ -105,6 +105,10 @@ PowerWidget::Canvas::Canvas(GUI::Widget* parent, this, &PowerWidget::Canvas::parameterChangedFloat); CONNECT(this, settings_notifier.powermap_shelf, this, &PowerWidget::Canvas::parameterChangedBool); + CONNECT(this, settings_notifier.powermap_input, + this, &PowerWidget::Canvas::parameterChangedFloat); + CONNECT(this, settings_notifier.powermap_output, + this, &PowerWidget::Canvas::parameterChangedFloat); parameterChangedFloat(0); } @@ -170,6 +174,16 @@ void PowerWidget::Canvas::repaintEvent(GUI::RepaintEvent *repaintEvent) p.drawLine(x0, y0 + height0, x0 + width0, y0); } + // draw the input/output of the last hit + if(settings.powermap_input.load() != -1 && settings.powermap_output.load() != -1) + { + p.setColour(GUI::Colour(.8f, 0.0f, .2f, .5f)); + p.drawLine(x0 + settings.powermap_input.load()*width0, y0 + height0, + x0 + settings.powermap_input.load()*width0, y0); + p.drawLine(x0, y0 + height0 - settings.powermap_output.load()*height0, + x0 + width0, y0 + height0 - settings.powermap_output.load()*height0); + } + // draw the fixed nodes of the spline float rad = radius * width(); p.setColour(GUI::Colour{0.0f, 1.0f, 0.0f, 0.7f}); diff --git a/src/powermapfilter.cc b/src/powermapfilter.cc index 702a837..45df51e 100644 --- a/src/powermapfilter.cc +++ b/src/powermapfilter.cc @@ -38,6 +38,7 @@ bool PowermapFilter::filter(event_t& event, size_t pos) // the position is irrelevant for this filter (void) pos; + settings.powermap_input.store(event.velocity); if (settings.enable_powermap.load()) { powermap.setFixed0({settings.powermap_fixed0_x.load(), settings.powermap_fixed0_y.load()}); @@ -47,6 +48,7 @@ bool PowermapFilter::filter(event_t& event, size_t pos) event.velocity = powermap.map(event.velocity); } + settings.powermap_output.store(event.velocity); return true; } diff --git a/src/settings.h b/src/settings.h index 471d730..a3d21d0 100644 --- a/src/settings.h +++ b/src/settings.h @@ -154,6 +154,10 @@ struct Settings Atomic<float> powermap_fixed2_y{1.}; Atomic<bool> powermap_shelf{true}; + // Powermap visualizer; -1 is "none" + Atomic<float> powermap_input{-1.}; + Atomic<float> powermap_output{-1.}; + Atomic<std::size_t> audition_counter{0}; Atomic<std::string> audition_instrument; Atomic<float> audition_velocity; @@ -228,6 +232,9 @@ struct SettingsGetter SettingRef<float> powermap_fixed2_y; SettingRef<bool> powermap_shelf; + SettingRef<float> powermap_input; + SettingRef<float> powermap_output; + SettingRef<std::size_t> audition_counter; SettingRef<std::string> audition_instrument; SettingRef<float> audition_velocity; @@ -284,6 +291,8 @@ struct SettingsGetter , powermap_fixed2_x{settings.powermap_fixed2_x} , powermap_fixed2_y{settings.powermap_fixed2_y} , powermap_shelf{settings.powermap_shelf} + , powermap_input{settings.powermap_input} + , powermap_output{settings.powermap_output} , audition_counter{settings.audition_counter} , audition_instrument{settings.audition_instrument} , audition_velocity{settings.audition_velocity} @@ -357,6 +366,9 @@ public: Notifier<float> powermap_fixed2_y; Notifier<bool> powermap_shelf; + Notifier<float> powermap_input; + Notifier<float> powermap_output; + Notifier<std::size_t> audition_counter; Notifier<std::string> audition_instrument; Notifier<int> audition_velocity; @@ -428,6 +440,9 @@ public: EVAL(powermap_fixed2_y); EVAL(powermap_shelf); + EVAL(powermap_input); + EVAL(powermap_output); + EVAL(audition_counter); EVAL(audition_instrument); EVAL(audition_velocity); |