Microsoft DirectX 8.0 (C++) |
正確なタイミングと受け入れ可能な短い遅延時間を保証するために、DirectMusic はマスタ クロックをカーネル モードに実装している。このクロックは、ハードウェア タイマに基づいている。DirectMusic では、システム クロックが自動的にマスタ クロックとして選択されるが、アプリケーションではサウンド カードのウェーブ出力クリスタルなどの別のクロックを選択することができる。
マスタ クロックは高分解能のタイマであり、DirectMusic を使うプロセス、デバイス、およびアプリケーションはこのクロックを共有する。このクロックは、システム内のすべてのオーディオ再生を同期化するために使われる。これは、標準的な IReferenceClock インターフェイスである。IReferenceClock::GetTime メソッドは、現在のタイムを 100 ナノ秒単位の 64 ビット整数として返す (REFERENCE_TIME 型として定義されている)。
マスタ クロックへのインターフェイスを取得するには、IDirectMusic8::GetMasterClock メソッドを使う。
アプリケーションでほかのマスタ クロックも選択できる。ただし、マスタ クロックを選択できるのは、ほかに動作中の DirectMusic アプリケーションがないときだけである。最初に IDirectMusic8::EnumMasterClock メソッドを使って、マスタ クロックの機能を果たせるすべてのデバイスの記述を取得する。マスタ クロックとして使いたいデバイスの GUID を取得した後で、その GUID を IDirectMusic8::SetMasterClock メソッドに渡す。