|
midiOutCachePatches
The midiOutCachePatches function requests that an internal MIDI synthesizer device preload and cache
a specified set of patches.
MMRESULT midiOutCachePatches(
HMIDIOUT hmo,
|
| UINT wBank,
|
| WORD * lpPatchArray,
|
| UINT wFlags
|
| );
|
|
Parameters
hmo
Handle of the opened MIDI output device. This device must be an internal MIDI
synthesizer. This parameter can also be the handle of a MIDI stream, cast to HMIDIOUT.
wBank
Bank of patches that should be used. This parameter should be set to zero to
cache the default patch bank.
lpPatchArray
Address of a PATCHARRAY array indicating the patches to be cached or uncached.
wFlags
Options for the cache operation. It can be one of the following flags:
MIDI_CACHE_ALL
Caches all of the specified patches. If they cannot all be cached, it caches
none, clears the PATCHARRAY array, and returns MMSYSERR_NOMEM.
MIDI_CACHE_BESTFIT
Caches all of the specified patches. If they cannot all be cached, it caches
as many patches as possible, changes the PATCHARRAY array to reflect which
patches were cached, and returns MMSYSERR_NOMEM.
MIDI_CACHE_QUERY
Changes the PATCHARRAY array to indicate which patches are currently cached.
MIDI_UNCACHE
Uncaches the specified patches and clears the PATCHARRAY array.
Return Values
Returns MMSYSERR_NOERROR if successful or an error otherwise. Possible error
values include the following:
MMSYSERR_INVALFLAG
| The flag specified by wFlags is invalid.
| MMSYSERR_INVALHANDLE
| The specified device handle is invalid.
| MMSYSERR_INVALPARAM
| The array pointed to by lpPatchArray 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.
|
Remarks
Some synthesizers are not capable of keeping all patches loaded simultaneously
and must load data from disk when they receive MIDI program change messages.
Caching patches ensures that the specified patches are immediately available.
Each element of the PATCHARRAY array represents one of the 128 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 (0x0F). For example, if patch 0 is used by physical channels 0 and 8,
element 0 would be set to 0x0101.
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.
See Also
PATCHARRAY, MIDIOUTCAPS, midiOutGetDevCaps
| Last news from Greatis Software |
 |
|
Nostalgia .Net |
|
.Net is powerful, but not all-powerful, so sometimes we need to use Win32 API for our .Net applications. It's simple enough with Platform Invoke if you have Win32 skill, but we do not always have time to dig the ancient documentation, declare the special types that are compatible with Win32, find the values of the Win32's constants and so on. Nostalgia .Net offers several simple-to-use classes, and components that will allow you to forget about the headache of Win32 and just use the power of Win32 in your application the same way as you use the native. Net classes. More » |
| Recommended software for developers |
 |
|
Ultimate Pack |
|
Component pack for Delphi and C++ Builder that contains runtime form designer, runtime object inspector, print suite and much more for the very special price. More » |
 |
|
Form Designer .Net |
|
Unique runtime form design solution that allows to edit any form in .Net WinForms application at runtime with full source codes for only 300 euro! More » |
 |
|
Print Suite .Net |
|
Print Suite .Net is a set of components for easy printing texts, images and grids from your WinForms applications. Full C# source codes are available More » |
 |
|
Gradient Controls .Net |
|
Gradient Controls .Net offers controls with gradient background feature. Labels, panels and so on... Full C# source codes are available More » |
 |
|
Greatis iGrid |
|
iGrid plots drawing grid right over your desktop, so you can use it everywhere, with any drawing application without any special plugins for different graphic editors. More » |
All the contacts and projectsDmitry Vasiliev (just.dmitry)
Related LinksSoftware for Visual Studio .NET developers Software for Delphi and C++ Builder developers Software for Visual Basic 6 developers Delphi Tips&Tricks MegaDetailed.NET More Online Helps Win32 Programmer's Reference Win32 Multimedia Programmer's Reference OLE Programmer's Reference Microsoft Windows Pen API Programmer's Reference Microsoft Windows Sockets 2 Reference Microsoft Windows Telephony API (TAPI) Programmer's Reference Unix Manual Pages
|