Microsoft DirectX 8.0 (C++) |
Sets the patch number for the instrument. Although each instrument in a DLS collection has a predefined patch number, the patch number can be reassigned after the IDirectMusicCollection8::GetInstrument method has been used to retrieve the instrument from the collection. For more information on DirectMusic patch numbers, see IDirectMusicInstrument8::GetPatch.
HRESULT SetPatch( DWORD dwPatch );
If the method succeeds, the return value is S_OK.
If it fails, the method can return one of the following error values:
DMUS_E_NOT_INIT |
DMUS_E_INVALIDPATCH |
The following code example gets an instrument from a collection, remaps its MSB bank select to a different bank, and then downloads the instrument.
HRESULT myRemappedDownload( IDirectMusicCollection8 *pCollection, IDirectMusicPort8 *pPort, IDirectMusicDownloadedInstrument8 **ppDLInstrument, BYTE bMSB, // Requested MIDI MSB for patch bank select DWORD dwPatch) // Requested patch { HRESULT hr; IDirectMusicInstrument8* pInstrument; hr = pCollection->GetInstrument(dwPatch, &pInstrument); if (SUCCEEDED(hr)) { dwPatch &= 0xFF00FFFF; // Clear MSB. dwPatch |= bMSB << 16; // Insert new MSB value. pInstrument->SetPatch(dwPatch); hr = pPort->DownloadInstrument(pInstrument, ppDLInstrument, NULL, 0); // Download all regions. pInstrument->Release(); } return hr; }
Header: Declared in dmusicc.h.