diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/audio_core/command_generator.cpp | 22 | ||||
| -rw-r--r-- | src/audio_core/delay_line.cpp | 21 | ||||
| -rw-r--r-- | src/audio_core/delay_line.h | 4 |
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 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <cmath> | ||
| 5 | #include <numbers> | 6 | #include <numbers> |
| 6 | #include "audio_core/algorithm/interpolate.h" | 7 | #include "audio_core/algorithm/interpolate.h" |
| 7 | #include "audio_core/command_generator.h" | 8 | #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, | |||
| 127 | 1, 1, 1, 0, 0, 0, 0, 3, 3, 3}; | 128 | 1, 1, 1, 0, 0, 0, 0, 3, 3, 3}; |
| 128 | 129 | ||
| 129 | template <std::size_t CHANNEL_COUNT> | 130 | template <std::size_t CHANNEL_COUNT> |
| 130 | void ApplyReverbGeneric(const I3dl2ReverbParams& info, I3dl2ReverbState& state, | 131 | void ApplyReverbGeneric(I3dl2ReverbState& state, |
| 131 | const std::array<const s32*, AudioCommon::MAX_CHANNEL_COUNT>& input, | 132 | const std::array<const s32*, AudioCommon::MAX_CHANNEL_COUNT>& input, |
| 132 | const std::array<s32*, AudioCommon::MAX_CHANNEL_COUNT>& output, | 133 | const std::array<s32*, AudioCommon::MAX_CHANNEL_COUNT>& output, |
| 133 | s32 sample_count) { | 134 | s32 sample_count) { |
| @@ -567,16 +568,16 @@ void CommandGenerator::GenerateI3dl2ReverbEffectCommand(s32 mix_buffer_offset, E | |||
| 567 | if (enabled) { | 568 | if (enabled) { |
| 568 | switch (channel_count) { | 569 | switch (channel_count) { |
| 569 | case 1: | 570 | case 1: |
| 570 | ApplyReverbGeneric<1>(params, state, input, output, worker_params.sample_count); | 571 | ApplyReverbGeneric<1>(state, input, output, worker_params.sample_count); |
| 571 | break; | 572 | break; |
| 572 | case 2: | 573 | case 2: |
| 573 | ApplyReverbGeneric<2>(params, state, input, output, worker_params.sample_count); | 574 | ApplyReverbGeneric<2>(state, input, output, worker_params.sample_count); |
| 574 | break; | 575 | break; |
| 575 | case 4: | 576 | case 4: |
| 576 | ApplyReverbGeneric<4>(params, state, input, output, worker_params.sample_count); | 577 | ApplyReverbGeneric<4>(state, input, output, worker_params.sample_count); |
| 577 | break; | 578 | break; |
| 578 | case 6: | 579 | case 6: |
| 579 | ApplyReverbGeneric<6>(params, state, input, output, worker_params.sample_count); | 580 | ApplyReverbGeneric<6>(state, input, output, worker_params.sample_count); |
| 580 | break; | 581 | break; |
| 581 | } | 582 | } |
| 582 | } else { | 583 | } else { |
| @@ -794,8 +795,8 @@ void CommandGenerator::UpdateI3dl2Reverb(I3dl2ReverbParams& info, I3dl2ReverbSta | |||
| 794 | state.lowpass_1 = 0.0f; | 795 | state.lowpass_1 = 0.0f; |
| 795 | } else { | 796 | } else { |
| 796 | const auto a = 1.0f - hf_gain; | 797 | const auto a = 1.0f - hf_gain; |
| 797 | const auto b = | 798 | const auto b = 2.0f * (1.0f - hf_gain * CosD(256.0f * info.hf_reference / |
| 798 | 2.0f * (1.0f - hf_gain * CosD(256.0f * info.hf_reference / info.sample_rate)); | 799 | static_cast<f32>(info.sample_rate))); |
| 799 | const auto c = std::sqrt(b * b - 4.0f * a * a); | 800 | const auto c = std::sqrt(b * b - 4.0f * a * a); |
| 800 | 801 | ||
| 801 | state.lowpass_1 = (b - c) / (2.0f * a); | 802 | state.lowpass_1 = (b - c) / (2.0f * a); |
| @@ -815,10 +816,11 @@ void CommandGenerator::UpdateI3dl2Reverb(I3dl2ReverbParams& info, I3dl2ReverbSta | |||
| 815 | state.decay_delay_line0[i].GetDelay() + | 816 | state.decay_delay_line0[i].GetDelay() + |
| 816 | state.decay_delay_line1[i].GetDelay(); | 817 | state.decay_delay_line1[i].GetDelay(); |
| 817 | 818 | ||
| 818 | float a = (-60.0f * delay_sample_counts) / (info.decay_time * info.sample_rate); | 819 | float a = (-60.0f * static_cast<f32>(delay_sample_counts)) / |
| 820 | (info.decay_time * static_cast<f32>(info.sample_rate)); | ||
| 819 | float b = a / info.hf_decay_ratio; | 821 | float b = a / info.hf_decay_ratio; |
| 820 | float c = CosD(128.0f * 0.5f * info.hf_reference / info.sample_rate) / | 822 | float c = CosD(128.0f * 0.5f * info.hf_reference / static_cast<f32>(info.sample_rate)) / |
| 821 | SinD(128.0f * 0.5f * info.hf_reference / info.sample_rate); | 823 | SinD(128.0f * 0.5f * info.hf_reference / static_cast<f32>(info.sample_rate)); |
| 822 | float d = Pow10((b - a) / 40.0f); | 824 | float d = Pow10((b - a) / 40.0f); |
| 823 | float e = Pow10((b + a) / 40.0f) * 0.7071f; | 825 | float e = Pow10((b + a) / 40.0f) * 0.7071f; |
| 824 | 826 | ||
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 @@ | |||
| 1 | #include <cstring> | ||
| 1 | #include "audio_core/delay_line.h" | 2 | #include "audio_core/delay_line.h" |
| 2 | 3 | ||
| 3 | namespace AudioCore { | 4 | namespace AudioCore { |
| 4 | DelayLineBase::DelayLineBase() = default; | 5 | DelayLineBase::DelayLineBase() = default; |
| 5 | DelayLineBase::~DelayLineBase() = default; | 6 | DelayLineBase::~DelayLineBase() = default; |
| 6 | 7 | ||
| 7 | void DelayLineBase::Initialize(s32 _max_delay, float* src_buffer) { | 8 | void DelayLineBase::Initialize(s32 max_delay_, float* src_buffer) { |
| 8 | buffer = src_buffer; | 9 | buffer = src_buffer; |
| 9 | buffer_end = buffer + _max_delay; | 10 | buffer_end = buffer + max_delay_; |
| 10 | max_delay = _max_delay; | 11 | max_delay = max_delay_; |
| 11 | output = buffer; | 12 | output = buffer; |
| 12 | SetDelay(_max_delay); | 13 | SetDelay(max_delay_); |
| 13 | Clear(); | 14 | Clear(); |
| 14 | } | 15 | } |
| 15 | 16 | ||
| @@ -30,7 +31,7 @@ s32 DelayLineBase::GetMaxDelay() const { | |||
| 30 | } | 31 | } |
| 31 | 32 | ||
| 32 | f32 DelayLineBase::TapOut(s32 last_sample) { | 33 | f32 DelayLineBase::TapOut(s32 last_sample) { |
| 33 | float* ptr = input - (last_sample + 1); | 34 | const float* ptr = input - (last_sample + 1); |
| 34 | if (ptr < buffer) { | 35 | if (ptr < buffer) { |
| 35 | ptr += (max_delay + 1); | 36 | ptr += (max_delay + 1); |
| 36 | } | 37 | } |
| @@ -81,13 +82,13 @@ void DelayLineBase::Reset() { | |||
| 81 | DelayLineAllPass::DelayLineAllPass() = default; | 82 | DelayLineAllPass::DelayLineAllPass() = default; |
| 82 | DelayLineAllPass::~DelayLineAllPass() = default; | 83 | DelayLineAllPass::~DelayLineAllPass() = default; |
| 83 | 84 | ||
| 84 | void DelayLineAllPass::Initialize(u32 delay, float _coeffcient, f32* src_buffer) { | 85 | void DelayLineAllPass::Initialize(u32 delay_, float coeffcient_, f32* src_buffer) { |
| 85 | DelayLineBase::Initialize(delay, src_buffer); | 86 | DelayLineBase::Initialize(delay_, src_buffer); |
| 86 | SetCoefficient(_coeffcient); | 87 | SetCoefficient(coeffcient_); |
| 87 | } | 88 | } |
| 88 | 89 | ||
| 89 | void DelayLineAllPass::SetCoefficient(float _coeffcient) { | 90 | void DelayLineAllPass::SetCoefficient(float coeffcient_) { |
| 90 | coefficient = _coeffcient; | 91 | coefficient = coeffcient_; |
| 91 | } | 92 | } |
| 92 | 93 | ||
| 93 | f32 DelayLineAllPass::Tick(f32 sample) { | 94 | 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: | |||
| 35 | DelayLineAllPass(); | 35 | DelayLineAllPass(); |
| 36 | ~DelayLineAllPass(); | 36 | ~DelayLineAllPass(); |
| 37 | 37 | ||
| 38 | void Initialize(u32 delay, float _coeffcient, f32* src_buffer); | 38 | void Initialize(u32 delay, float coeffcient_, f32* src_buffer); |
| 39 | void SetCoefficient(float _coeffcient); | 39 | void SetCoefficient(float coeffcient_); |
| 40 | f32 Tick(f32 sample); | 40 | f32 Tick(f32 sample); |
| 41 | void Reset(); | 41 | void Reset(); |
| 42 | 42 | ||