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)