From a7e14b2065b6f1ee07aac3c6b936d968abfbd42c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Nusser?= Date: Sat, 21 Jul 2018 15:44:46 +0200 Subject: Fix visualization to be samplerate independent. --- plugingui/humaniservisualiser.cc | 13 ++++++------- plugingui/humaniservisualiser.h | 6 +++--- 2 files changed, 9 insertions(+), 10 deletions(-) (limited to 'plugingui') diff --git a/plugingui/humaniservisualiser.cc b/plugingui/humaniservisualiser.cc index f0c016a..92da164 100644 --- a/plugingui/humaniservisualiser.cc +++ b/plugingui/humaniservisualiser.cc @@ -66,8 +66,7 @@ HumaniserVisualiser::Canvas::Canvas(GUI::Widget* parent, SettingsNotifier& settings_notifier) : GUI::Widget(parent) , settings_notifier(settings_notifier) - , latency_max_samples(settings.latency_max_ms.load() * - settings.samplerate.load() / 1000) + , latency_max_ms(settings.latency_max_ms.load()) , settings(settings) { CONNECT(this, settings_notifier.enable_latency_modifier, @@ -99,16 +98,16 @@ void HumaniserVisualiser::Canvas::repaintEvent(GUI::RepaintEvent *repaintEvent) p.clear(); - const int spx = latency_max_samples * 2 / width(); // samples pr. pixel + const float mspx = latency_max_ms * 2 / width(); // ms pr. pixel - int x = latency_offset / spx + width() / 2; + int x = latency_offset / mspx + width() / 2; float v = (-1.0f * velocity_offset + 1.0f) * 0.8; int y = height() * 0.2 + v * height(); y = std::max(0, y); - int w = 50.f * latency_stddev / spx * 3 * 2; // stddev is ~ +/- 3 span + int w = (3. * 2.) * latency_stddev / mspx; // stddev is ~ +/- 3 span int h = velocity_stddev * height() / 4; - DEBUG(vis, "max: %d, spx: %d, x: %d, w: %d", latency_max_samples, spx, x, w); + DEBUG(vis, "max: %f, mspx: %f, x: %d, w: %d", latency_max_ms, mspx, x, w); // Stddev squares if(latency_enabled) @@ -168,7 +167,7 @@ void HumaniserVisualiser::Canvas::velocityEnabledChanged(bool enabled) redraw(); } -void HumaniserVisualiser::Canvas::latencyOffsetChanged(int offset) +void HumaniserVisualiser::Canvas::latencyOffsetChanged(float offset) { latency_offset = offset; redraw(); diff --git a/plugingui/humaniservisualiser.h b/plugingui/humaniservisualiser.h index 576ae6f..55e37d2 100644 --- a/plugingui/humaniservisualiser.h +++ b/plugingui/humaniservisualiser.h @@ -63,7 +63,7 @@ private: void latencyEnabledChanged(bool enabled); void velocityEnabledChanged(bool enabled); - void latencyOffsetChanged(int offset); + void latencyOffsetChanged(float offset); void velocityOffsetChanged(float offset); void latencyStddevChanged(float stddev); void latencyLaidbackChanged(float laidback); @@ -77,13 +77,13 @@ private: bool latency_enabled{false}; bool velocity_enabled{false}; - int latency_offset; + float latency_offset; float velocity_offset; float latency_stddev; int laidback; float velocity_stddev; SettingsNotifier& settings_notifier; - const int latency_max_samples; + const float latency_max_ms; Settings& settings; }; -- cgit v1.2.3