audren: Implement I3dl2Reverb

Most notable fix is the voices in Fire Emblem Three Houses
This commit is contained in:
Chloe Marcec 2021-02-11 18:46:20 +11:00 committed by bunnei
parent c86d770af9
commit 4a7fd91857
8 changed files with 569 additions and 18 deletions

View file

@ -0,0 +1,46 @@
#pragma once
#include "common/common_types.h"
namespace AudioCore {
class DelayLineBase {
public:
DelayLineBase();
~DelayLineBase();
void Initialize(s32 _max_delay, float* src_buffer);
void SetDelay(s32 new_delay);
s32 GetDelay() const;
s32 GetMaxDelay() const;
f32 TapOut(s32 last_sample);
f32 Tick(f32 sample);
float* GetInput();
const float* GetInput() const;
f32 GetOutputSample() const;
void Clear();
void Reset();
protected:
float* buffer{nullptr};
float* buffer_end{nullptr};
s32 max_delay{};
float* input{nullptr};
float* output{nullptr};
s32 delay{};
};
class DelayLineAllPass final : public DelayLineBase {
public:
DelayLineAllPass();
~DelayLineAllPass();
void Initialize(u32 delay, float _coeffcient, f32* src_buffer);
void SetCoefficient(float _coeffcient);
f32 Tick(f32 sample);
void Reset();
private:
float coefficient{};
};
} // namespace AudioCore