summaryrefslogtreecommitdiff
path: root/src/audio_core/time_stretch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio_core/time_stretch.cpp')
-rw-r--r--src/audio_core/time_stretch.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/audio_core/time_stretch.cpp b/src/audio_core/time_stretch.cpp
index ea38f40d0..f44807c84 100644
--- a/src/audio_core/time_stretch.cpp
+++ b/src/audio_core/time_stretch.cpp
@@ -26,8 +26,8 @@ static double ClampRatio(double ratio) {
26 return MathUtil::Clamp(ratio, MIN_RATIO, MAX_RATIO); 26 return MathUtil::Clamp(ratio, MIN_RATIO, MAX_RATIO);
27} 27}
28 28
29constexpr double MIN_DELAY_TIME = 0.05; // Units: seconds 29constexpr double MIN_DELAY_TIME = 0.05; // Units: seconds
30constexpr double MAX_DELAY_TIME = 0.25; // Units: seconds 30constexpr double MAX_DELAY_TIME = 0.25; // Units: seconds
31constexpr size_t DROP_FRAMES_SAMPLE_DELAY = 16000; // Units: samples 31constexpr size_t DROP_FRAMES_SAMPLE_DELAY = 16000; // Units: samples
32 32
33constexpr double SMOOTHING_FACTOR = 0.007; 33constexpr double SMOOTHING_FACTOR = 0.007;
@@ -48,7 +48,8 @@ std::vector<s16> TimeStretcher::Process(size_t samples_in_queue) {
48 48
49 double ratio = CalculateCurrentRatio(); 49 double ratio = CalculateCurrentRatio();
50 ratio = CorrectForUnderAndOverflow(ratio, samples_in_queue); 50 ratio = CorrectForUnderAndOverflow(ratio, samples_in_queue);
51 impl->smoothed_ratio = (1.0 - SMOOTHING_FACTOR) * impl->smoothed_ratio + SMOOTHING_FACTOR * ratio; 51 impl->smoothed_ratio =
52 (1.0 - SMOOTHING_FACTOR) * impl->smoothed_ratio + SMOOTHING_FACTOR * ratio;
52 impl->smoothed_ratio = ClampRatio(impl->smoothed_ratio); 53 impl->smoothed_ratio = ClampRatio(impl->smoothed_ratio);
53 54
54 // SoundTouch's tempo definition the inverse of our ratio definition. 55 // SoundTouch's tempo definition the inverse of our ratio definition.
@@ -100,7 +101,8 @@ double TimeStretcher::CalculateCurrentRatio() {
100 const steady_clock::time_point now = steady_clock::now(); 101 const steady_clock::time_point now = steady_clock::now();
101 const std::chrono::duration<double> duration = now - impl->frame_timer; 102 const std::chrono::duration<double> duration = now - impl->frame_timer;
102 103
103 const double expected_time = static_cast<double>(impl->samples_queued) / static_cast<double>(native_sample_rate); 104 const double expected_time =
105 static_cast<double>(impl->samples_queued) / static_cast<double>(native_sample_rate);
104 const double actual_time = duration.count(); 106 const double actual_time = duration.count();
105 107
106 double ratio; 108 double ratio;