Freigeben über


midiOutCachePatches-Funktion (mmeapi.h)

Die midiOutCachePatches-Funktion fordert an, dass ein internes MIDI-Synthesizer-Gerät einen angegebenen Satz von Patches vorlädt und zwischenspeichert.

Syntax

MMRESULT midiOutCachePatches(
  HMIDIOUT hmo,
  UINT     uBank,
  LPWORD   pwpa,
  UINT     fuCache
);

Parameter

hmo

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

uBank

Bank von Patches, die verwendet werden sollten. Dieser Parameter sollte auf Null festgelegt werden, um die Standardpatchbank zwischenzuspeichern.

pwpa

Zeiger auf ein PATCHARRAY-Array , das die patches 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 PATCHARRAY-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 PATCHARRAY-Array geändert, um anzugeben, welche Patches zwischengespeichert wurden, und gibt MMSYSERR_NOMEM zurück.
MIDI_CACHE_QUERY Ändert das PATCHARRAY-Array , um anzugeben, welche Patches derzeit zwischengespeichert werden.
MIDI_UNCACHE Hebt den Cache der angegebenen Patches auf und löscht das PATCHARRAY-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 von lpPatchArray 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 können nicht alle Patches gleichzeitig geladen lassen und müssen Daten vom Datenträger laden, wenn sie MIDI-Programmänderungsmeldungen empfangen. Zwischenspeichern von Patches stellt sicher, dass die angegebenen Patches sofort verfügbar sind.

Jedes Element des PATCHARRAY-Arrays stellt einen der 128 Patches 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 (0x0F) dar. Wenn Patch 0 beispielsweise von den physischen Kanälen 0 und 8 verwendet wird, wird Element 0 auf 0x0101 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