Platform SDK: DirectX |
音楽の再生は、パフォーマンス オブジェクトによって管理される。パフォーマンス オブジェクトは、ソースから音楽を取り出して出力バッファに送るまでの、ほとんどの作業を処理する。パフォーマンス オブジェクトは、次のタスクを実行する。
ほとんどのアプリケーションは、DirectMusicPerformance オブジェクトを 1 つだけ使用するが、マスタ テンポやボリュームなどのパラメータの異なる複数のパフォーマンスを使用することもできる。
次のコード例では、パフォーマンスを 1 つ作成して、IDirectMusicPerformance インターフェイスへのポインタを取得している。
IDirectMusicPerformance* pPerf; if (FAILED(CoCreateInstance( CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC, IID_IDirectMusicPerformance, (void**)&pPerf ))) { pPerf = NULL; }
作成したパフォーマンスは初期化しなければならない。初期化における重要な処理は、DirectMusic オブジェクトの作成である。CoCreateInstance に CLSID_DirectMusic を渡し、次に IDirectMusicPerformance::Init に IDirectMusic インターフェイス ポインタを渡すと、DirectMusic オブジェクトを作成することができる。ただし、多くの場合は、Init を使って DirectMusic オブジェクトを作成した方がより簡単である。ポートおよびマスタ クロックに対して必要な制御の程度に応じて、IDirectMusic インターフェイスへのポインタを取得するかどうかを選択することもできる。デフォルトのシンセサイザおよびデフォルトのマスタ クロックのみを使う場合は、通常、IDirectMusic のメソッドにアクセスする必要はない。この場合は、Init に NULL を渡す。
次のコード例では、パフォーマンスを初期化して、IDirectMusic へのポインタを取得し、アプリケーション ウィンドウ ハンドルで初期化された IDirectSound インターフェイスを作成している。
IDirectMusic* pDirectMusic; if (SUCCEEDED(pPerf->Init(&pDirectMusic, NULL, // DirectSound オブジェクトの作成 hWnd // アプリケーション ウィンドウ ハンドル ))) { // パフォーマンスの初期化 }
音楽の再生は、パフォーマンス オブジェクトによって管理される。パフォーマンス オブジェクトは、ソースから音楽を取り出して出力バッファに送るまでの、ほとんどの作業を処理する。パフォーマンス オブジェクトは、次のタスクを実行する。
ほとんどのアプリケーションは、DirectMusicPerformance オブジェクトを 1 つだけ使用するが、マスタ テンポやボリュームなどのパラメータが異なっていたり、異なるポートで演奏を行う複数のパフォーマンスを使用することもできる。
次のコード例では、独自の DirectSound オブジェクトと共にパフォーマンスを作成し、これを初期化して、1 つのチャンネル グループでデフォルト ポートを使うように設定している。objDX は DirectX7 オブジェクトを表す。
Dim objDMPerformance as DirectMusicPerformance Set objDMPerformance = objDX.DirectMusicPerformanceCreate Call objDMPerformance.Init(Nothing, 0) Call objDMPerformance.SetPort(-1, 1)
パフォーマンスの設定の詳細については、「DirectMusic と DirectSound の統合」および「ポートの使い方」を参照すること。