From d131b9415d6f85e8da2461893941aac24eb2ab35 Mon Sep 17 00:00:00 2001 From: "Yuto Terada (indigo-san)" <66758394+indigo-san@users.noreply.github.com> Date: Tue, 12 Sep 2023 22:43:06 +0900 Subject: [PATCH] =?UTF-8?q?Pcm.Compound=E3=83=A1=E3=82=BD=E3=83=83?= =?UTF-8?q?=E3=83=89=E3=82=92=E4=BF=AE=E6=AD=A3=20(#711)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Pcm.Compoundメソッドを修正 * Fix Pcm.Compound --- src/Beutl.Engine/Media/Music/Pcm.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Beutl.Engine/Media/Music/Pcm.cs b/src/Beutl.Engine/Media/Music/Pcm.cs index bf94e24cd..cf25b87fa 100644 --- a/src/Beutl.Engine/Media/Music/Pcm.cs +++ b/src/Beutl.Engine/Media/Music/Pcm.cs @@ -131,17 +131,21 @@ public void Compound(Pcm sound) { if (sound.SampleRate != SampleRate) throw new Exception("Sounds with different SampleRates cannot be synthesized."); - Parallel.For(0, Math.Min(sound.NumSamples, NumSamples), i => DataSpan[i] = T.Compound(DataSpan[i], sound.DataSpan[i])); + Compound(0, sound); } public void Compound(int start, Pcm sound) { if (sound.SampleRate != SampleRate) throw new Exception("Sounds with different SampleRates cannot be synthesized."); - Parallel.For( - start, - Math.Min(sound.NumSamples, NumSamples), - i => DataSpan[i] = T.Compound(DataSpan[i], sound.DataSpan[i - start])); + Parallel.For(start, NumSamples, i => + { + int j = i - start; + if (j < sound.NumSamples) + { + DataSpan[i] = T.Compound(DataSpan[i], sound.DataSpan[j]); + } + }); } public Pcm Resamples(int frequency)