ステップ型シーケンサのプログラム、ストリーミングバッファへのデータ追加と再生開始

DirectSoundによるドラム マシンの作成のC#ソースファイル

StreamingPlayer.Playメソッド

SecondaryBuffer.Playが実行される前に、
//SecondaryBuffer.Writeの第2引数になる変数m_PullStreamにnew PullStream(pullAudio)を代入。
//SecondaryBufferのメソッド、SetCurrentPosition(0)でポジションを先頭に。
//Feedメソッドでバッファに追加されたバイト数を表すための変数m_NextWriteに0を代入。
//FeedはSecondaryBuffer.Writeによって、ストリームからバッファへの書き込みを行う。
//Timer.Enabledを真にしてTimerを有効にする。

そして、SecondaryBuffer.Play

StreamingPlayer.Playメソッドで実行されるFeed()メソッド

//引数のbytesとレイテンシの小さい方をtocopyに代入。再生の遅延を減らすために、バッファに追加するデータの量を抑える

//(SecondaryBuffer型)m_Buffer.Writeでバッファにデータをコピー。
//m_NextWriteにtocopyが加算されれて、バッファに追加された合計のバイト数を記録。

StreamingPlayer.PlayメソッドではこのFeed()を実行してm_Bufferにデータが追加されたあとでTimerを有効にし、m_Buffer.Playを実行する。