summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndré Nusser <andre.nusser@googlemail.com>2018-07-21 15:44:46 +0200
committerAndré Nusser <andre.nusser@googlemail.com>2018-07-21 15:44:46 +0200
commita7e14b2065b6f1ee07aac3c6b936d968abfbd42c (patch)
tree1d4e84c106878b75d082cb1d1ceb345a09adb725 /src
parent6ba96e9a60428676fdf5cf6060e5d981ba1f3976 (diff)
Fix visualization to be samplerate independent.
Diffstat (limited to 'src')
-rw-r--r--src/latencyfilter.cc9
-rw-r--r--src/settings.h8
2 files changed, 12 insertions, 5 deletions
diff --git a/src/latencyfilter.cc b/src/latencyfilter.cc
index 9410b50..0f3259b 100644
--- a/src/latencyfilter.cc
+++ b/src/latencyfilter.cc
@@ -44,6 +44,12 @@ static T1 getLatencySamples(T1 latency_ms, T2 samplerate)
return latency_ms * samplerate / 1000.;
}
+template<typename T1, typename T2>
+static T1 getLatencyMs(T1 latency_samples, T2 samplerate)
+{
+ return 1000. * latency_samples / samplerate;
+}
+
bool LatencyFilter::filter(event_t& event, std::size_t pos)
{
auto enabled = settings.enable_latency_modifier.load();
@@ -86,7 +92,8 @@ bool LatencyFilter::filter(event_t& event, std::size_t pos)
event.offset += latency_laid_back; // laid back offset (user controlled)
event.offset += latency_offset; // current drift
- settings.latency_current.store(latency_offset + latency_laid_back);
+ auto latency_current_ms = getLatencyMs(latency_offset + latency_laid_back, samplerate);
+ settings.latency_current.store(latency_current_ms);
return true;
}
diff --git a/src/settings.h b/src/settings.h
index f37a810..e698d20 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -126,8 +126,8 @@ struct Settings
static float constexpr latency_regain_default = 0.9f;
Atomic<float> latency_regain{latency_regain_default};
- // Current latency offset - for UI
- Atomic<int> latency_current{0};
+ // Current latency offset in ms - for UI
+ Atomic<float> latency_current{0};
};
//! Settings getter class.
@@ -177,7 +177,7 @@ struct SettingsGetter
SettingRef<float> latency_laid_back_ms;
SettingRef<float> latency_stddev;
SettingRef<float> latency_regain;
- SettingRef<int> latency_current;
+ SettingRef<float> latency_current;
SettingsGetter(Settings& settings)
: drumkit_file(settings.drumkit_file)
@@ -268,7 +268,7 @@ public:
Notifier<float> latency_laid_back_ms;
Notifier<float> latency_stddev;
Notifier<float> latency_regain;
- Notifier<int> latency_current;
+ Notifier<float> latency_current;
void evaluate()
{