diff options
| author | 2023-03-02 05:48:53 +0000 | |
|---|---|---|
| committer | 2023-03-02 06:00:55 +0000 | |
| commit | 104cb6aa0a814cc9fb01647f1f1b6dfa3a3fc6f5 (patch) | |
| tree | dad70d78aa9e737f1fc90cb5e1e77d1c45b6b571 | |
| parent | Merge pull request #9832 from liamwhite/hle-mp (diff) | |
| download | yuzu-104cb6aa0a814cc9fb01647f1f1b6dfa3a3fc6f5.tar.gz yuzu-104cb6aa0a814cc9fb01647f1f1b6dfa3a3fc6f5.tar.xz yuzu-104cb6aa0a814cc9fb01647f1f1b6dfa3a3fc6f5.zip | |
Fix a bug with the Reverb command in reading from the pre_delay line.
Diffstat (limited to '')
| -rw-r--r-- | src/audio_core/renderer/command/effect/reverb.cpp | 3 | ||||
| -rw-r--r-- | src/audio_core/renderer/effect/i3dl2.h | 3 | ||||
| -rw-r--r-- | src/audio_core/renderer/effect/reverb.h | 8 |
3 files changed, 8 insertions, 6 deletions
diff --git a/src/audio_core/renderer/command/effect/reverb.cpp b/src/audio_core/renderer/command/effect/reverb.cpp index 6fe844ff0..8b9b65214 100644 --- a/src/audio_core/renderer/command/effect/reverb.cpp +++ b/src/audio_core/renderer/command/effect/reverb.cpp | |||
| @@ -308,7 +308,8 @@ static void ApplyReverbEffect(const ReverbInfo::ParameterVersion2& params, Rever | |||
| 308 | } | 308 | } |
| 309 | 309 | ||
| 310 | Common::FixedPoint<50, 14> pre_delay_sample{ | 310 | Common::FixedPoint<50, 14> pre_delay_sample{ |
| 311 | state.pre_delay_line.Read() * Common::FixedPoint<50, 14>::from_base(params.late_gain)}; | 311 | state.pre_delay_line.TapOut(state.pre_delay_time) * |
| 312 | Common::FixedPoint<50, 14>::from_base(params.late_gain)}; | ||
| 312 | 313 | ||
| 313 | std::array<Common::FixedPoint<50, 14>, ReverbInfo::MaxDelayLines> mix_matrix{ | 314 | std::array<Common::FixedPoint<50, 14>, ReverbInfo::MaxDelayLines> mix_matrix{ |
| 314 | state.prev_feedback_output[2] + state.prev_feedback_output[1] + pre_delay_sample, | 315 | state.prev_feedback_output[2] + state.prev_feedback_output[1] + pre_delay_sample, |
diff --git a/src/audio_core/renderer/effect/i3dl2.h b/src/audio_core/renderer/effect/i3dl2.h index 1ebbc5c4c..6e3ffd1d4 100644 --- a/src/audio_core/renderer/effect/i3dl2.h +++ b/src/audio_core/renderer/effect/i3dl2.h | |||
| @@ -104,7 +104,8 @@ public: | |||
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | void Write(const Common::FixedPoint<50, 14> sample) { | 106 | void Write(const Common::FixedPoint<50, 14> sample) { |
| 107 | *(input++) = sample; | 107 | *input = sample; |
| 108 | input++; | ||
| 108 | if (input >= buffer_end) { | 109 | if (input >= buffer_end) { |
| 109 | input = buffer.data(); | 110 | input = buffer.data(); |
| 110 | } | 111 | } |
diff --git a/src/audio_core/renderer/effect/reverb.h b/src/audio_core/renderer/effect/reverb.h index a72475c3c..6cc345ef6 100644 --- a/src/audio_core/renderer/effect/reverb.h +++ b/src/audio_core/renderer/effect/reverb.h | |||
| @@ -79,12 +79,10 @@ public: | |||
| 79 | return; | 79 | return; |
| 80 | } | 80 | } |
| 81 | sample_count = delay_time; | 81 | sample_count = delay_time; |
| 82 | input = &buffer[(output - buffer.data() + sample_count) % (sample_count_max + 1)]; | 82 | input = &buffer[0]; |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | Common::FixedPoint<50, 14> Tick(const Common::FixedPoint<50, 14> sample) { | 85 | Common::FixedPoint<50, 14> Tick(const Common::FixedPoint<50, 14> sample) { |
| 86 | Write(sample); | ||
| 87 | |||
| 88 | auto out_sample{Read()}; | 86 | auto out_sample{Read()}; |
| 89 | 87 | ||
| 90 | output++; | 88 | output++; |
| @@ -92,6 +90,7 @@ public: | |||
| 92 | output = buffer.data(); | 90 | output = buffer.data(); |
| 93 | } | 91 | } |
| 94 | 92 | ||
| 93 | Write(sample); | ||
| 95 | return out_sample; | 94 | return out_sample; |
| 96 | } | 95 | } |
| 97 | 96 | ||
| @@ -100,7 +99,8 @@ public: | |||
| 100 | } | 99 | } |
| 101 | 100 | ||
| 102 | void Write(const Common::FixedPoint<50, 14> sample) { | 101 | void Write(const Common::FixedPoint<50, 14> sample) { |
| 103 | *(input++) = sample; | 102 | *input = sample; |
| 103 | input++; | ||
| 104 | if (input >= buffer_end) { | 104 | if (input >= buffer_end) { |
| 105 | input = buffer.data(); | 105 | input = buffer.data(); |
| 106 | } | 106 | } |