midiOutCacheDrumPatches-Funktion (mmeapi.h)

Die midiOutCacheDrumPatches-Funktion fordert an, dass ein internes MIDI-Synthesizergerät einen angegebenen Satz schlüsselbasierter Schlagzeugpatches vorlädt und zwischenspeichert.

Syntax

MMRESULT midiOutCacheDrumPatches(
  HMIDIOUT hmo,
  UINT     uPatch,
  LPWORD   pwkya,
  UINT     fuCache
);

Parameter

hmo

Handle für das geöffnete MIDI-Ausgabegerät. Dieses Gerät sollte ein interner MIDI-Synthesizer sein. Dieser Parameter kann auch der Handle eines MIDI-Streams sein, der in HMIDIOUT umgewandelt wird.

uPatch

Trommelpatchnummer, die verwendet werden soll. Dieser Parameter sollte auf null festgelegt werden, um den Standardtrommelpatch zwischenzuspeichern.

pwkya

Zeiger auf ein KEYARRAY-Array , das die Schlüsselnummern der angegebenen Perkussionspatches angibt, die zwischengespeichert oder nicht zwischengespeichert werden sollen.

fuCache

Optionen für den Cachevorgang. Es kann eines der folgenden Flags sein.

Wert Bedeutung
MIDI_CACHE_ALL Speichert alle angegebenen Patches zwischen. Wenn sie nicht alle zwischengespeichert werden können, werden keine zwischengespeichert, das KEYARRAY-Array gelöscht und MMSYSERR_NOMEM zurückgegeben.
MIDI_CACHE_BESTFIT Speichert alle angegebenen Patches zwischen. Wenn sie nicht alle zwischengespeichert werden können, werden so viele Patches wie möglich zwischengespeichert, das KEYARRAY-Array so geändert, dass es widerspiegelt, welche Patches zwischengespeichert wurden, und gibt MMSYSERR_NOMEM zurück.
MIDI_CACHE_QUERY Ändert das KEYARRAY-Array , um anzugeben, welche Patches derzeit zwischengespeichert werden.
MIDI_UNCACHE Hebt den Cache der angegebenen Patches auf und löscht das KEYARRAY-Array.

Rückgabewert

Gibt MMSYSERR_NOERROR zurück, wenn erfolgreich oder andernfalls ein Fehler aufgetreten ist. Mögliche Fehlerwerte sind:

Rückgabecode Beschreibung
MMSYSERR_INVALFLAG
Das von wFlags angegebene Flag ist ungültig.
MMSYSERR_INVALHANDLE
Das angegebene Gerätehandle ist ungültig.
MMSYSERR_INVALPARAM
Das Array, auf das vom lpKeyArray-Array verwiesen wird, ist ungültig.
MMSYSERR_NOMEM
Das Gerät verfügt nicht über genügend Arbeitsspeicher, um alle angeforderten Patches zwischenzuspeichern.
MMSYSERR_NOTSUPPORTED
Das angegebene Gerät unterstützt keine Patchzwischenspeicherung.

Hinweise

Einige Synthesizer sind nicht in der Lage, alle Schlagzeug-Patches gleichzeitig geladen zu halten. Zwischenspeichern von Patches stellt sicher, dass die angegebenen Patches verfügbar sind.

Jedes Element des KEYARRAY-Arrays stellt einen der 128 tastenbasierten Perkussionspatches dar und verfügt über Bits für jeden der 16 MIDI-Kanäle, die den jeweiligen Patch verwenden. Das am wenigsten signifikante Bit stellt den physischen Kanal 0 und das wichtigste Bit den physischen Kanal 15 dar. Wenn beispielsweise der Patch für die Schlüsselnummer 60 von den physischen Kanälen 9 und 15 verwendet wird, wird Element 60 auf 0x8200 festgelegt.

Diese Funktion gilt nur für interne MIDI-Synthesizergeräte. Nicht alle internen Synthesizer unterstützen die Patchzwischenspeicherung. Um zu ermitteln, ob ein Gerät das Patchzwischenspeichern unterstützt, verwenden Sie das flag MIDICAPS_CACHE, um das dwSupport-Element der MIDIOUTCAPS-Struktur zu testen, die von der midiOutGetDevCaps-Funktion gefüllt wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile mmeapi.h (einschließlich Windows.h)
Bibliothek Winmm.lib
DLL Winmm.dll

Weitere Informationen

MIDI-Funktionen