Microsoft DirectX 8.0 (C++)

コレクションのロードとダウンロード

コレクションは、ほかのオブジェクトと同様にロードされる。詳細については、「オーディオ データのロード」を参照すること。

標準的な GM/GS セットをロードするために、DMUS_OBJECTDESC 構造体の guidObject メンバに、ローダーへのパス GUID_DefaultGMCollection を設定する。ローダーを使ってこのオブジェクトに何度もアクセスする場合は、キャッシングが有効になっていることを確認し (デフォルトの設定)、GM コレクションを要求するたびにコピーが 1 つ作成されることを防止する。

  GM/GS Sound Set を変更することはできない。詳細については、「法的情報」の「著作権に関する注意」を参照すること。

次のサンプル コードは、GUID によって識別されるコレクションをロードする方法を示している。

HRESULT myGetGMCollection(
        IDirectMusicLoader8 *pILoader, 
        IDirectMusicCollection8 **ppICollection)
{
    HRESULT hr;
    DMUS_OBJECTDESC desc;
 
    desc.dwSize = sizeof(DMUS_OBJECTDESC);
    desc.guidClass = CLSID_DirectMusicCollection;
    desc.guidObject = GUID_DefaultGMCollection;
    desc.dwValidData = (DMUS_OBJ_CLASS | DMUS_OBJ_OBJECT);
    hr = pILoader->GetObject(&desc, IID_IDirectMusicCollection8,
            (void **) ppICollection);
    return hr;
}

IDirectMusicCollection8 インターフェイスへのポインタを取得すると、コレクション内のすべての音色にアクセスできる。ただし、この時点では、音色はポートにダウンロードされていない。

コレクション全体を一度にダウンロードするには、コレクションをセグメントに関連付けて、IDirectMusicSegment8::Download メソッドを呼び出す。例については、「カスタム音色による MIDI ファイルの演奏」を参照すること。

これらの手順は、デフォルト以外のコレクションを使用する場合にのみ必要となる。セグメントがコレクションを参照しない場合、通常は IDirectMusicSegment8::Download を呼び出すときに、セグメント中にオーサリングされたデフォルト コレクションの音色、または General MIDI セットの音色がポートにダウンロードされる。バンドをダウンロードするときに、そのバンドの音色で必要なすべての DLS データがダウンロードされる。「バンドの使い方」を参照すること。