The midiOutCacheDrumPatches function requests that an internal MIDI synthesizer device preload and cache a specified set of key-based percussion patches.
MMRESULT midiOutCacheDrumPatches(
HMIDIOUT hmo,
UINT wPatch,
WORD * lpKeyArray,
UINT wFlags
);
Returns MMSYSERR_NOERROR if successful or an error otherwise. Possible error values include the following:
Value | Description |
---|---|
MMSYSERR_INVALFLAG | The flag specified by wFlags is invalid. |
MMSYSERR_INVALHANDLE | The specified device handle is invalid. |
MMSYSERR_INVALPARAM | The array pointed to by the lpKeyArray array is invalid. |
MMSYSERR_NOMEM | The device does not have enough memory to cache all of the requested patches. |
MMSYSERR_NOTSUPPORTED | The specified device does not support patch caching. |
Some synthesizers are not capable of keeping all percussion patches loaded simultaneously. Caching patches ensures that the specified patches are available.
Each element of the KEYARRAY array represents one of the 128 key-based percussion patches and has bits set for each of the 16 MIDI channels that use the particular patch. The least-significant bit represents physical channel 0, and the most-significant bit represents physical channel 15. For example, if the patch on key number 60 is used by physical channels 9 and 15, element 60 would be set to 0x8200.
This function applies only to internal MIDI synthesizer devices. Not all internal synthesizers support patch caching. To see if a device supports patch caching, use the MIDICAPS_CACHE flag to test the dwSupport member of the MIDIOUTCAPS structure filled by the midiOutGetDevCaps function.
Windows NT: Requires version 3.1 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in mmsystem.h.
Import Library: Use winmm.lib.
Musical Instrument Digital Interface (MIDI) Overview, MIDI Functions, KEYARRAY, MIDIOUTCAPS, midiOutGetDevCaps