diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2017-10-21 18:27:18 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2018-02-18 11:43:42 +0100 |
commit | 260511a8a5f68e83c3bdfd7b28f5f235353da9cd (patch) | |
tree | 9d891fc5143da125f706d89715789f73266662b5 | |
parent | c3cb642947c42de48a64e79b15af77ff900d2491 (diff) |
Make latency controls more intuitive.
-rw-r--r-- | src/latencyfilter.cc | 13 | ||||
-rw-r--r-- | src/settings.h | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/latencyfilter.cc b/src/latencyfilter.cc index 2f4bfe5..e1e9776 100644 --- a/src/latencyfilter.cc +++ b/src/latencyfilter.cc @@ -55,6 +55,10 @@ bool LatencyFilter::filter(event_t& event, std::size_t pos) // Assert latency_regain is within range [0; 1]. assert(latency_regain >= 0.0f && latency_regain <= 1.0f); + // User inputs 0 as no regain and 1 as instant - pow() is the other way around + latency_regain *= -1.0f; + latency_regain += 1.0f; + float duration = (pos - latency_last_pos) / samplerate; latency_offset *= pow(latency_regain, duration); @@ -63,8 +67,8 @@ bool LatencyFilter::filter(event_t& event, std::size_t pos) float offset_min = latency * -1.0f; float offset_max = latency * 1.0f; - float mean = latency_laid_back; - float stddev = latency_stddev; + float mean = 0.0f;//latency_laid_back; + float stddev = latency_stddev / 2.0f; float offset = random.normalDistribution(mean, stddev); @@ -76,8 +80,9 @@ bool LatencyFilter::filter(event_t& event, std::size_t pos) DEBUG(offset, "latency: %d, offset: %f, drift: %f", (int)latency, offset, latency_offset); - event.offset += latency; - event.offset += latency_offset;//(int)std::round(offset); + event.offset += latency; // fixed latency offset + event.offset += latency_laid_back; // laid back offset (user controlled) + event.offset += latency_offset; // current drift return true; } diff --git a/src/settings.h b/src/settings.h index b2fe3bb..2f3569f 100644 --- a/src/settings.h +++ b/src/settings.h @@ -94,7 +94,7 @@ struct Settings Atomic<bool> enable_latency_modifier{true}; //! Maximum "early hits" introduces latency. In no. samples. - Atomic<std::size_t> latency_max{5000u}; + Atomic<std::size_t> latency_max{10000u}; //! 0 := on-beat //! positive := laid back |