summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChloe Marcec <dmarcecguzman@gmail.com>2021-02-11 09:17:50 +0100
committerbunnei <bunneidev@gmail.com>2021-02-13 03:48:10 +0100
commitd28b942458693b018cd8cab338537bdff5570118 (patch)
tree210fa18cb033136ef5bc4320fe728d8c7acd6391
parentaudren: Implement I3dl2Reverb (diff)
downloadyuzu-d28b942458693b018cd8cab338537bdff5570118.tar
yuzu-d28b942458693b018cd8cab338537bdff5570118.tar.gz
yuzu-d28b942458693b018cd8cab338537bdff5570118.tar.bz2
yuzu-d28b942458693b018cd8cab338537bdff5570118.tar.lz
yuzu-d28b942458693b018cd8cab338537bdff5570118.tar.xz
yuzu-d28b942458693b018cd8cab338537bdff5570118.tar.zst
yuzu-d28b942458693b018cd8cab338537bdff5570118.zip
-rw-r--r--src/audio_core/command_generator.cpp22
-rw-r--r--src/audio_core/delay_line.cpp21
-rw-r--r--src/audio_core/delay_line.h4
3 files changed, 25 insertions, 22 deletions
diff --git a/src/audio_core/command_generator.cpp b/src/audio_core/command_generator.cpp
index 90d8f90d3..2e2b296b0 100644
--- a/src/audio_core/command_generator.cpp
+++ b/src/audio_core/command_generator.cpp
@@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
+#include <cmath>
#include <numbers>
#include "audio_core/algorithm/interpolate.h"
#include "audio_core/command_generator.h"
@@ -127,7 +128,7 @@ constexpr std::array<std::size_t, 20> REVERB_TAP_INDEX_6CH{4, 0, 0, 1, 1, 1, 1,
1, 1, 1, 0, 0, 0, 0, 3, 3, 3};
template <std::size_t CHANNEL_COUNT>
-void ApplyReverbGeneric(const I3dl2ReverbParams& info, I3dl2ReverbState& state,
+void ApplyReverbGeneric(I3dl2ReverbState& state,
const std::array<const s32*, AudioCommon::MAX_CHANNEL_COUNT>& input,
const std::array<s32*, AudioCommon::MAX_CHANNEL_COUNT>& output,
s32 sample_count) {
@@ -567,16 +568,16 @@ void CommandGenerator::GenerateI3dl2ReverbEffectCommand(s32 mix_buffer_offset, E
if (enabled) {
switch (channel_count) {
case 1:
- ApplyReverbGeneric<1>(params, state, input, output, worker_params.sample_count);
+ ApplyReverbGeneric<1>(state, input, output, worker_params.sample_count);
break;
case 2:
- ApplyReverbGeneric<2>(params, state, input, output, worker_params.sample_count);
+ ApplyReverbGeneric<2>(state, input, output, worker_params.sample_count);
break;
case 4:
- ApplyReverbGeneric<4>(params, state, input, output, worker_params.sample_count);
+ ApplyReverbGeneric<4>(state, input, output, worker_params.sample_count);
break;
case 6:
- ApplyReverbGeneric<6>(params, state, input, output, worker_params.sample_count);
+ ApplyReverbGeneric<6>(state, input, output, worker_params.sample_count);
break;
}
} else {
@@ -794,8 +795,8 @@ void CommandGenerator::UpdateI3dl2Reverb(I3dl2ReverbParams& info, I3dl2ReverbSta
state.lowpass_1 = 0.0f;
} else {
const auto a = 1.0f - hf_gain;
- const auto b =
- 2.0f * (1.0f - hf_gain * CosD(256.0f * info.hf_reference / info.sample_rate));
+ const auto b = 2.0f * (1.0f - hf_gain * CosD(256.0f * info.hf_reference /
+ static_cast<f32>(info.sample_rate)));
const auto c = std::sqrt(b * b - 4.0f * a * a);
state.lowpass_1 = (b - c) / (2.0f * a);
@@ -815,10 +816,11 @@ void CommandGenerator::UpdateI3dl2Reverb(I3dl2ReverbParams& info, I3dl2ReverbSta
state.decay_delay_line0[i].GetDelay() +
state.decay_delay_line1[i].GetDelay();
- float a = (-60.0f * delay_sample_counts) / (info.decay_time * info.sample_rate);
+ float a = (-60.0f * static_cast<f32>(delay_sample_counts)) /
+ (info.decay_time * static_cast<f32>(info.sample_rate));
float b = a / info.hf_decay_ratio;
- float c = CosD(128.0f * 0.5f * info.hf_reference / info.sample_rate) /
- SinD(128.0f * 0.5f * info.hf_reference / info.sample_rate);
+ float c = CosD(128.0f * 0.5f * info.hf_reference / static_cast<f32>(info.sample_rate)) /
+ SinD(128.0f * 0.5f * info.hf_reference / static_cast<f32>(info.sample_rate));
float d = Pow10((b - a) / 40.0f);
float e = Pow10((b + a) / 40.0f) * 0.7071f;
diff --git a/src/audio_core/delay_line.cpp b/src/audio_core/delay_line.cpp
index c8bc6e23e..f4e4dd8d2 100644
--- a/src/audio_core/delay_line.cpp
+++ b/src/audio_core/delay_line.cpp
@@ -1,15 +1,16 @@
+#include <cstring>
#include "audio_core/delay_line.h"
namespace AudioCore {
DelayLineBase::DelayLineBase() = default;
DelayLineBase::~DelayLineBase() = default;
-void DelayLineBase::Initialize(s32 _max_delay, float* src_buffer) {
+void DelayLineBase::Initialize(s32 max_delay_, float* src_buffer) {
buffer = src_buffer;
- buffer_end = buffer + _max_delay;
- max_delay = _max_delay;
+ buffer_end = buffer + max_delay_;
+ max_delay = max_delay_;
output = buffer;
- SetDelay(_max_delay);
+ SetDelay(max_delay_);
Clear();
}
@@ -30,7 +31,7 @@ s32 DelayLineBase::GetMaxDelay() const {
}
f32 DelayLineBase::TapOut(s32 last_sample) {
- float* ptr = input - (last_sample + 1);
+ const float* ptr = input - (last_sample + 1);
if (ptr < buffer) {
ptr += (max_delay + 1);
}
@@ -81,13 +82,13 @@ void DelayLineBase::Reset() {
DelayLineAllPass::DelayLineAllPass() = default;
DelayLineAllPass::~DelayLineAllPass() = default;
-void DelayLineAllPass::Initialize(u32 delay, float _coeffcient, f32* src_buffer) {
- DelayLineBase::Initialize(delay, src_buffer);
- SetCoefficient(_coeffcient);
+void DelayLineAllPass::Initialize(u32 delay_, float coeffcient_, f32* src_buffer) {
+ DelayLineBase::Initialize(delay_, src_buffer);
+ SetCoefficient(coeffcient_);
}
-void DelayLineAllPass::SetCoefficient(float _coeffcient) {
- coefficient = _coeffcient;
+void DelayLineAllPass::SetCoefficient(float coeffcient_) {
+ coefficient = coeffcient_;
}
f32 DelayLineAllPass::Tick(f32 sample) {
diff --git a/src/audio_core/delay_line.h b/src/audio_core/delay_line.h
index b6a6e0b12..420b71cdb 100644
--- a/src/audio_core/delay_line.h
+++ b/src/audio_core/delay_line.h
@@ -35,8 +35,8 @@ public:
DelayLineAllPass();
~DelayLineAllPass();
- void Initialize(u32 delay, float _coeffcient, f32* src_buffer);
- void SetCoefficient(float _coeffcient);
+ void Initialize(u32 delay, float coeffcient_, f32* src_buffer);
+ void SetCoefficient(float coeffcient_);
f32 Tick(f32 sample);
void Reset();