Partager via


fonction midiOutCachePatches (mmeapi.h)

La fonction midiOutCachePatches demande à un appareil de synthétiseur MIDI interne de précharger et de mettre en cache un ensemble spécifié de correctifs.

Syntaxe

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

Paramètres

hmo

Gérez l’appareil de sortie MIDI ouvert. Cet appareil doit être un synthétiseur MIDI interne. Ce paramètre peut également être le handle d’un flux MIDI, cast en HMIDIOUT.

uBank

Banque de correctifs à utiliser. Ce paramètre doit être défini sur zéro pour mettre en cache la banque de correctifs par défaut.

pwpa

Pointeur vers un tableau PATCHARRAY indiquant les correctifs à mettre en cache ou à mettre en cache.

fuCache

Options pour l’opération de cache. Il peut s’agir de l’un des indicateurs suivants.

Valeur Signification
MIDI_CACHE_ALL Met en cache tous les correctifs spécifiés. S’ils ne peuvent pas tous être mis en cache, il ne met pas en cache, efface le tableau PATCHARRAY et retourne MMSYSERR_NOMEM.
MIDI_CACHE_BESTFIT Met en cache tous les correctifs spécifiés. S’ils ne peuvent pas tous être mis en cache, il met en cache autant de correctifs que possible, modifie le tableau PATCHARRAY pour refléter les correctifs qui ont été mis en cache et retourne MMSYSERR_NOMEM.
MIDI_CACHE_QUERY Modifie le tableau PATCHARRAY pour indiquer quels correctifs sont actuellement mis en cache.
MIDI_UNCACHE Annule la mise en cache des correctifs spécifiés et efface le tableau PATCHARRAY.

Valeur retournée

Retourne MMSYSERR_NOERROR en cas de réussite ou une erreur dans le cas contraire. Les valeurs d’erreur possibles sont les suivantes.

Code de retour Description
MMSYSERR_INVALFLAG
L’indicateur spécifié par wFlags n’est pas valide.
MMSYSERR_INVALHANDLE
Le handle d’appareil spécifié n’est pas valide.
MMSYSERR_INVALPARAM
Le tableau pointé vers lpPatchArray n’est pas valide.
MMSYSERR_NOMEM
L’appareil ne dispose pas de suffisamment de mémoire pour mettre en cache tous les correctifs demandés.
MMSYSERR_NOTSUPPORTED
L’appareil spécifié ne prend pas en charge la mise en cache corrective.

Remarques

Certains synthétiseurs ne sont pas capables de conserver tous les correctifs chargés simultanément et doivent charger des données à partir du disque lorsqu’ils reçoivent des messages de modification du programme MIDI. La mise en cache des correctifs garantit que les correctifs spécifiés sont immédiatement disponibles.

Chaque élément du tableau PATCHARRAY représente l’un des 128 correctifs et a des bits définis pour chacun des 16 canaux MIDI qui utilisent le correctif spécifique. Le bit le moins significatif représente le canal physique 0, et le bit le plus significatif représente le canal physique 15 (0x0F). Par exemple, si le correctif 0 est utilisé par les canaux physiques 0 et 8, l’élément 0 est défini sur 0x0101.

Cette fonction s’applique uniquement aux appareils de synthétiseur MIDI internes. Tous les synthétiseurs internes ne prennent pas en charge la mise en cache corrective. Pour voir si un appareil prend en charge la mise en cache corrective, utilisez l’indicateur MIDICAPS_CACHE pour tester le membre dwSupport de la structure MIDIOUTCAPS remplie par la fonction midiOutGetDevCaps .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête mmeapi.h (inclure Windows.h)
Bibliothèque Winmm.lib
DLL Winmm.dll

Voir aussi

Fonctions MIDI