Microsoft DirectX 8.0 (C++)

IDirectMusicInstrument8::SetPatch

音色のパッチ番号を取得する。DLS コレクション内の各音色はあらかじめ定義されたパッチ番号を持っているが、IDirectMusicCollection8::GetInstrument メソッドを使ってコレクションから音色を取得した後、パッチ番号を再割り当てすることもできる。DirectMusic パッチ番号の詳細については、「IDirectMusicInstrument8::GetPatch」を参照すること。

HRESULT SetPatch(
  DWORD dwPatch
);

パラメータ

dwPatch
音色に割り当てる新しいパッチ番号。

戻り値

成功した場合は S_OK を返す。

失敗した場合は、次のいずれかのエラー値を返す。

DMUS_E_NOT_INIT
DMUS_E_CORE_INVALIDPATCH

注意

次のサンプル コードは、コレクションから音色を取得し、音色の MSB バンクの再マップを行ってほかのバンクを選択し、その音色をダウンロードする。

HRESULT myRemappedDownload(
    IDirectMusicCollection8 *pCollection,
    IDirectMusicPort8 *pPort,
    IDirectMusicDownloadedInstrument8 **ppDLInstrument,
    BYTE bMSB,       // パッチ番号のバンク セレクト内で指定された MIDI の MSB。
    DWORD dwPatch)   // 指定されたパッチ番号。
 
{
    HRESULT hr;
    IDirectMusicInstrument8* pInstrument;
    hr = pCollection->GetInstrument(dwPatch, &pInstrument);
    if (SUCCEEDED(hr))
    {
        dwPatch &= 0xFF00FFFF;  // MSB を消去する。
        dwPatch |= bMSB << 16;  // 新しい MSB の値を設定する。
        pInstrument->SetPatch(dwPatch);
        hr = pPort->DownloadInstrument(pInstrument, 
                ppDLInstrument, 
                NULL, 0);       // すべてのリージョンをダウンロードする。
        pInstrument->Release();
    }
    return hr;
}

動作環境

  ヘッダー : dmusicc.h で宣言。