diff --git a/ProjectObsidian/Components/Audio/PhaseModulator.cs b/ProjectObsidian/Components/Audio/PhaseModulator.cs index ff88270..a9c38c1 100644 --- a/ProjectObsidian/Components/Audio/PhaseModulator.cs +++ b/ProjectObsidian/Components/Audio/PhaseModulator.cs @@ -2,6 +2,7 @@ using FrooxEngine; using Elements.Assets; using Obsidian.Elements; +using Elements.Core; namespace Obsidian.Components.Audio { @@ -29,7 +30,7 @@ public int ChannelCount { get { - return CarrierSource.Target?.ChannelCount ?? 0; + return MathX.Min(CarrierSource.Target?.ChannelCount ?? 0, ModulatorSource.Target?.ChannelCount ?? 0); } } @@ -63,7 +64,7 @@ public void Read(Span buffer) where S : unmanaged, IAudioSample float modulationIndex = ModulationIndex.Value; - Algorithms.PhaseModulation(buffer, carrierBuffer, modulatorBuffer, modulationIndex); + Algorithms.PhaseModulation(buffer, carrierBuffer, modulatorBuffer, modulationIndex, channelCount); } } } \ No newline at end of file diff --git a/ProjectObsidian/Components/Audio/RingModulator.cs b/ProjectObsidian/Components/Audio/RingModulator.cs index 66bd4d6..ed5516c 100644 --- a/ProjectObsidian/Components/Audio/RingModulator.cs +++ b/ProjectObsidian/Components/Audio/RingModulator.cs @@ -30,7 +30,7 @@ public int ChannelCount { get { - return CarrierSource.Target?.ChannelCount ?? 0; + return MathX.Min(CarrierSource.Target?.ChannelCount ?? 0, ModulatorSource.Target?.ChannelCount ?? 0); } } @@ -65,7 +65,7 @@ public void Read(Span buffer) where S : unmanaged, IAudioSample float modulationIndex = ModulationIndex.Value; - Algorithms.RingModulation(buffer, carrierBuffer, modulatorBuffer, modulationIndex); + Algorithms.RingModulation(buffer, carrierBuffer, modulatorBuffer, modulationIndex, channelCount); } } } \ No newline at end of file diff --git a/ProjectObsidian/Components/Audio/SineShapedRingModulator.cs b/ProjectObsidian/Components/Audio/SineShapedRingModulator.cs index 16c0c75..dd54820 100644 --- a/ProjectObsidian/Components/Audio/SineShapedRingModulator.cs +++ b/ProjectObsidian/Components/Audio/SineShapedRingModulator.cs @@ -31,7 +31,7 @@ public int ChannelCount { get { - return CarrierSource.Target?.ChannelCount ?? 0; + return MathX.Min(CarrierSource.Target?.ChannelCount ?? 0, ModulatorSource.Target?.ChannelCount ?? 0); } } @@ -66,7 +66,7 @@ public void Read(Span buffer) where S : unmanaged, IAudioSample float modulationIndex = ModulationIndex.Value; - Algorithms.SineShapedRingModulation(buffer, carrierBuffer, modulatorBuffer, modulationIndex); + Algorithms.SineShapedRingModulation(buffer, carrierBuffer, modulatorBuffer, modulationIndex, channelCount); } } } \ No newline at end of file