Microsoft DirectX 8.0 (C++) |
音色のパッチ番号を取得する。DLS コレクション内の各音色はあらかじめ定義されたパッチ番号を持っているが、IDirectMusicCollection8::GetInstrument メソッドを使ってコレクションから音色を取得した後、パッチ番号を再割り当てすることもできる。DirectMusic パッチ番号の詳細については、「IDirectMusicInstrument8::GetPatch」を参照すること。
HRESULT SetPatch( DWORD 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 で宣言。