aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKelebek1 <eeeedddccc@hotmail.co.uk>2023-03-02 05:48:53 +0000
committerKelebek1 <eeeedddccc@hotmail.co.uk>2023-03-02 06:00:55 +0000
commited68646fa792f1c43d49d119554c400d1cd58fdb (patch)
treedad70d78aa9e737f1fc90cb5e1e77d1c45b6b571 /src
parent7b8304614ce6d374b7a38ea6456cf7a9f6445b87 (diff)
Fix a bug with the Reverb command in reading from the pre_delay line.
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 6fe844ff03..8b9b65214a 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
}
Common::FixedPoint<50, 14> pre_delay_sample{
- state.pre_delay_line.Read() * Common::FixedPoint<50, 14>::from_base(params.late_gain)};
+ state.pre_delay_line.TapOut(state.pre_delay_time) *
+ Common::FixedPoint<50, 14>::from_base(params.late_gain)};
std::array<Common::FixedPoint<50, 14>, ReverbInfo::MaxDelayLines> mix_matrix{
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 1ebbc5c4cd..6e3ffd1d44 100644
--- a/src/audio_core/renderer/effect/i3dl2.h
+++ b/src/audio_core/renderer/effect/i3dl2.h
@@ -104,7 +104,8 @@ public:
}
void Write(const Common::FixedPoint<50, 14> sample) {
- *(input++) = sample;
+ *input = sample;
+ input++;
if (input >= buffer_end) {
input = buffer.data();
}
diff --git a/src/audio_core/renderer/effect/reverb.h b/src/audio_core/renderer/effect/reverb.h
index a72475c3cb..6cc345ef6a 100644
--- a/src/audio_core/renderer/effect/reverb.h
+++ b/src/audio_core/renderer/effect/reverb.h
@@ -79,12 +79,10 @@ public:
return;
}
sample_count = delay_time;
- input = &buffer[(output - buffer.data() + sample_count) % (sample_count_max + 1)];
+ input = &buffer[0];
}
Common::FixedPoint<50, 14> Tick(const Common::FixedPoint<50, 14> sample) {
- Write(sample);
-
auto out_sample{Read()};
output++;
@@ -92,6 +90,7 @@ public:
output = buffer.data();
}
+ Write(sample);
return out_sample;
}
@@ -100,7 +99,8 @@ public:
}
void Write(const Common::FixedPoint<50, 14> sample) {
- *(input++) = sample;
+ *input = sample;
+ input++;
if (input >= buffer_end) {
input = buffer.data();
}