aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Audio/Renderer/Dsp/State
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Audio/Renderer/Dsp/State')
-rw-r--r--Ryujinx.Audio/Renderer/Dsp/State/DelayState.cs13
1 files changed, 12 insertions, 1 deletions
diff --git a/Ryujinx.Audio/Renderer/Dsp/State/DelayState.cs b/Ryujinx.Audio/Renderer/Dsp/State/DelayState.cs
index 7b694fb0..21ffbebd 100644
--- a/Ryujinx.Audio/Renderer/Dsp/State/DelayState.cs
+++ b/Ryujinx.Audio/Renderer/Dsp/State/DelayState.cs
@@ -17,6 +17,7 @@
using Ryujinx.Audio.Renderer.Dsp.Effect;
using Ryujinx.Audio.Renderer.Parameter.Effect;
+using System.Runtime.CompilerServices;
namespace Ryujinx.Audio.Renderer.Dsp.State
{
@@ -43,7 +44,6 @@ namespace Ryujinx.Audio.Renderer.Dsp.State
{
DelayLines[i] = new DelayLine(sampleRate, parameter.DelayTimeMax);
DelayLines[i].SetDelay(parameter.DelayTime);
- LowPassZ[0] = 0;
}
UpdateParameter(ref parameter);
@@ -69,5 +69,16 @@ namespace Ryujinx.Audio.Renderer.Dsp.State
LowPassFeedbackGain = 0.95f * FixedPointHelper.ToFloat(parameter.LowPassAmount, FixedPointPrecision);
LowPassBaseGain = 1.0f - LowPassFeedbackGain;
}
+
+ public void UpdateLowPassFilter(ref float tempRawRef, uint channelCount)
+ {
+ for (int i = 0; i < channelCount; i++)
+ {
+ float lowPassResult = LowPassFeedbackGain * LowPassZ[i] + Unsafe.Add(ref tempRawRef, i) * LowPassBaseGain;
+
+ LowPassZ[i] = lowPassResult;
+ DelayLines[i].Update(lowPassResult);
+ }
+ }
}
}