diff options
| author | 2018-10-29 19:09:30 -0400 | |
|---|---|---|
| committer | 2018-10-29 19:09:30 -0400 | |
| commit | f1cb425d9228a063eb464479a69400ff915b9fc1 (patch) | |
| tree | 2c0cf1ab1c5f145ab634ada958668521c3b81a3e /src/audio_core/time_stretch.cpp | |
| parent | Merge pull request #1613 from ReinUsesLisp/gl-utils (diff) | |
| parent | time_stretch: Switch to values of Citra (diff) | |
| download | yuzu-f1cb425d9228a063eb464479a69400ff915b9fc1.tar.gz yuzu-f1cb425d9228a063eb464479a69400ff915b9fc1.tar.xz yuzu-f1cb425d9228a063eb464479a69400ff915b9fc1.zip | |
Merge pull request #1617 from FearlessTobi/fix-stretch-delay
time_stretch: Switch to values of Citra
Diffstat (limited to 'src/audio_core/time_stretch.cpp')
| -rw-r--r-- | src/audio_core/time_stretch.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/audio_core/time_stretch.cpp b/src/audio_core/time_stretch.cpp index cee8b12dd..2fe0b3aef 100644 --- a/src/audio_core/time_stretch.cpp +++ b/src/audio_core/time_stretch.cpp | |||
| @@ -32,10 +32,10 @@ std::size_t TimeStretcher::Process(const s16* in, std::size_t num_in, s16* out, | |||
| 32 | // We were given actual_samples number of samples, and num_samples were requested from us. | 32 | // We were given actual_samples number of samples, and num_samples were requested from us. |
| 33 | double current_ratio = static_cast<double>(num_in) / static_cast<double>(num_out); | 33 | double current_ratio = static_cast<double>(num_in) / static_cast<double>(num_out); |
| 34 | 34 | ||
| 35 | const double max_latency = 1.0; // seconds | 35 | const double max_latency = 0.25; // seconds |
| 36 | const double max_backlog = m_sample_rate * max_latency; | 36 | const double max_backlog = m_sample_rate * max_latency; |
| 37 | const double backlog_fullness = m_sound_touch.numSamples() / max_backlog; | 37 | const double backlog_fullness = m_sound_touch.numSamples() / max_backlog; |
| 38 | if (backlog_fullness > 5.0) { | 38 | if (backlog_fullness > 4.0) { |
| 39 | // Too many samples in backlog: Don't push anymore on | 39 | // Too many samples in backlog: Don't push anymore on |
| 40 | num_in = 0; | 40 | num_in = 0; |
| 41 | } | 41 | } |
| @@ -49,7 +49,7 @@ std::size_t TimeStretcher::Process(const s16* in, std::size_t num_in, s16* out, | |||
| 49 | 49 | ||
| 50 | // This low-pass filter smoothes out variance in the calculated stretch ratio. | 50 | // This low-pass filter smoothes out variance in the calculated stretch ratio. |
| 51 | // The time-scale determines how responsive this filter is. | 51 | // The time-scale determines how responsive this filter is. |
| 52 | constexpr double lpf_time_scale = 2.0; // seconds | 52 | constexpr double lpf_time_scale = 0.712; // seconds |
| 53 | const double lpf_gain = 1.0 - std::exp(-time_delta / lpf_time_scale); | 53 | const double lpf_gain = 1.0 - std::exp(-time_delta / lpf_time_scale); |
| 54 | m_stretch_ratio += lpf_gain * (current_ratio - m_stretch_ratio); | 54 | m_stretch_ratio += lpf_gain * (current_ratio - m_stretch_ratio); |
| 55 | 55 | ||