カクタスソフトウェア
カクタスソフトウェア
サウンド MIDI マルチメディア アプリケーション

再生処理の流れ

再生についての考え方は、アンマネージ型DirectSoundと共通するものがあります。セクション「アンマネージ型DirectSound」を参照して下さい。

不具合対策

マネージ型DirectSoundには、再生を開始したとき、前回再生したサウンドの残りがノイズとなって再生される不具合があります。これはセカンダリーバッファを完全に無音状態にしても起こるため、プライマリーバッファかそれ以上上流のバッファがクリアされないためと思われます。

一つの対策として以下の方法を紹介します。

無音データを追加再生することで上流のバッファをフラッシュします。セカンダリーバッファを無音データで満たし、200mSec待機します。以下のコマンドをストップメソッドをコールする前に呼び出します。

スリープ時間は、筆者が適当に定めたものです。状況に応じて増減してみて下さい。
 
private void FlushGarbage()
{
    byte[] silence = new byte[BufferSize];
    WaveInstance.FillSilence(ref silence);
    SoundBuffer.Write(0, silence, LockFlag.None);
    Thread.Sleep(200);
}

ドキュメントの先頭へ

カクタスソフトウェア 技術協力 資料室 資料室の広場 SourceForge.jp お問い合わせ