summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/audio_core/renderer/command/effect/reverb.cpp3
-rw-r--r--src/audio_core/renderer/effect/i3dl2.h3
-rw-r--r--src/audio_core/renderer/effect/reverb.h8
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 }