Platform SDK: DirectX

プログラム的なバンド チェンジの実行

通常は、ロードされたセグメントのバンド トラックによって、プログラム チェンジが実行される。ただし、手動で行うこともできる。

[C++]

まず、IDirectMusicBand::CreateSegment メソッドを呼び出して、セカンダリ セグメントを作成する。次に、IDirectMusicPerformance::PlaySegment を呼び出して、作成したセグメントを演奏する。通常は dwFlags パラメータ内の DMUS_SEGF_MEASURE または DMUS_SEGF_GRID (DMUS_SEGF_FLAGS を参照) を使って、適切な境界でバンド チェンジが有効になるよう保証する。

次のコード例では、バンドからセグメントを作成し、そのセグメントを演奏している。

/ * 自動ダウンロードが有効になっているか、アプリケーションが pBand->Download を呼び出していると仮定する。*/
 
HRESULT myPlayBand(
    IDirectMusicBand *pBand,         // バンド オブジェクトへのポインタ。
    IDirectMusicPerformance *pPerf,  // バンドを使うパフォーマンス。
    REFERENCE_TIME rfTime,           // 演奏開始タイム。
    DWORD dwFlags)                   // パフォーマンス フラグ。
 
{
    IDirectMusicSegment *pSegment;
    HRESULT hr = pBand->CreateSegment(&pSegment);
    if (SUCCEEDED(hr))
    {
        hr = pPerf->PlaySegment(pSegment,
                dwFlags | DMUS_SEGF_SECONDARY,
                rfTime,
                NULL);
        pSegment->Release();
    }
    return hr;
}
[Visual Basic]

まず、DirectMusicBand.CreateSegment を使ってセグメントを作成する。次に、DirectMusicPerformance.PlaySegment を呼び出して、作成したセグメントを演奏する。通常は、IFlags パラメータ内の DMUS_SEGF_MEASURE または DMUS_SEGF_GRID (CONST_DMUS_SEGF_FLAGS を参照) を使って、適切な境界でバンド チェンジが有効になるよう保証する。

パフォーマンスは、一度に複数のバンドの音色を演奏することができる。たとえば、アプリケーションが 1 つのバンドを使ってプライマリ セグメントを演奏しているときに、別のバンドを持つスタイルのモチーフを演奏する場合を考える。最初のバンドの音色が、2 つ目のバンドの音色以外の P チャンネル に割り当てられる限り、衝突は起こらない。ただし、通常、モチーフ セグメントは独自のバンド トラックを持たない。したがって、最初にバンド セグメントを作成してから演奏しなければ、モチーフの P チャンネルからは音が出ない (モチーフ セグメントにバンド トラックを追加することもできるが、別のバンド セグメントを作成する方が簡単である)。