Microsoft DirectX 8.0 (Visual Basic) |
遅延時間とは、ポートが メッセージを受け取ってから、演奏すべき十分なウェーブが合成されるまでの遅れを意味する。DirectMusicPerformance8.GetLatencyTime メソッドは、現在のタイムにパフォーマンスの遅延時間を加算した全体の時間を取得する。この値は、ポートの遅延時間クロックによって返される最大の値である。
バンパーとは、イベントがポート バッファに置かれてから、ポートがそのイベントの処理を開始するタイムまでの、コードを実行するために割り当てられた時間である。デフォルトでは、バンパーの長さは 50 ミリ秒 (ms) である。アプリケーションは、DirectMusicPerformance8.SetBumperLength メソッドを使ってこの値を変更したり、DirectMusicPerformance8.GetBumperLength を呼び出して現在の値を取得することができる。
ここでは、遅延時間とバンパー時間を結合する方法を示す。あるイベントが 10,000 ミリ秒の時点で演奏されると仮定する。このポートの遅延時間は 100 ミリ秒であること、およびバンパー時間の長さはデフォルトの 50 ミリ秒であることがわかっている。そのため、パフォーマンスは 9,850 ミリ秒の時点でこのメッセージをポート バッファに置く。
ポート バッファに置かれたメッセージは、もはやパフォーマンスに所属していないため、DirectMusicPerformance8.Invalidate または DirectMusicPerformance8.StopEx メソッドを使っても、演奏を止められない点に注意すること。無効にできる最初のメッセージは、現在のタイムに遅延時間とバンパー時間を加えたタイムと同じか、それ以降のタイム スタンプを持つ。DirectMusicPerformance8.GetQueueTime メソッドを使うと、この値を取得することができる。
次の図は、さまざまなメソッドで取得される、タイムと継続時間の関係を示している。現在のタイムは左側に示されている。右側が、メッセージの準備が完了する最終タイムである。準備時間はいつでも、キューにあるメッセージの合計の長さの近似である。
図に示すメソッドは C++ API のものであるが、DirectX for Visual Basic でもほとんど同じ名前が使用されている。図の GetTime メソッドは、DirectMusicPerformance8.GetClockTime とほぼ同じである。