我試圖做的是發揮循環WAV,但與特定的循環開始喜歡在音樂模塊文件(。它,S3M。的.mod等所使用的樣本位置)。 SoundPlayer沒有這個功能,所以我創建了兩個獨立的文件:原始的wav和wav,開頭切到循環開始的地方。我想連續播放這兩個文件,無縫地,首先是帶有PlaySync()的原始wav文件,然後是帶有PlayLooping()的循環部分。聲音播放和播放聲音
不幸的是我PlaySync()第一個wav後,有一個分裂秒它和PlayLooping()開始播放循環wav之間的中斷。打兩個獨立不同的聲音時
private static void PlayThread(SoundPlayer soundPlayer, byte[] wav, byte[] loop)
{
MemoryStream stream1 = new MemoryStream(wav);
MemoryStream stream2 = new MemoryStream(loop);
soundPlayer.Stream = stream1;
soundPlayer.PlaySync();
// here is where the split second interruption occurs
soundPlayer.Stream = stream2;
soundPlayer.PlayLooping();
}
這可能不明顯,但是,試圖拉斷的循環機制我想的時候是非常明顯的。聲音波形是樂器樣本,非常小(通常不超過0x1000字節)。
我改變了我原來的職位描述完全是我想去完成。中斷很快,一秒鐘,但嘗試執行我想要的循環機制時非常明顯。我做了兩個獨立的流,但它仍然不起作用。 – giangurgolo
@giangurgolo沒有問題,我編輯了我的答案,幷包含另一個場景供您測試。 – Rastus7