Condividi tramite


funzione midiOutCacheDrumPatches (mmeapi.h)

La funzione midiOutCacheDrumPatches richiede che un dispositivo sintetizzatore MIDI interno preload e memorizza nella cache un set specificato di patch di percussioni basate su chiave.

Sintassi

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

Parametri

hmo

Handle per il dispositivo di output MIDI aperto. Questo dispositivo deve essere un sintetizzatore MIDI interno. Questo parametro può anche essere l'handle di un flusso MIDI, eseguito il cast a HMIDIOUT.

uPatch

Numero di patch del tamburo da usare. Questo parametro deve essere impostato su zero per memorizzare nella cache la patch del tamburo predefinita.

pwkya

Puntatore a una matrice KEYARRAY che indica i numeri chiave delle patch di percussione specificate da memorizzare o rimuovere dalla cache.

fuCache

Opzioni per l'operazione di cache. Può essere uno dei flag seguenti.

Valore Significato
MIDI_CACHE_ALL Memorizza nella cache tutte le patch specificate. Se non possono essere memorizzati nella cache, non memorizza nella cache nessuno, cancella la matrice KEYARRAY e restituisce MMSYSERR_NOMEM.
MIDI_CACHE_BESTFIT Memorizza nella cache tutte le patch specificate. Se non possono essere memorizzati nella cache, memorizza nella cache il maggior numero possibile di patch, modifica la matrice KEYARRAY in modo da riflettere quali patch sono state memorizzate nella cache e restituisce MMSYSERR_NOMEM.
MIDI_CACHE_QUERY Modifica la matrice KEYARRAY per indicare quali patch sono attualmente memorizzate nella cache.
MIDI_UNCACHE Rimuove le patch specificate e cancella la matrice KEYARRAY.

Valore restituito

Restituisce MMSYSERR_NOERROR se l'esito positivo o un errore in caso contrario. I valori di errore possibili includono quanto segue.

Codice restituito Descrizione
MMSYSERR_INVALFLAG
Il flag specificato da wFlags non è valido.
MMSYSERR_INVALHANDLE
L'handle del dispositivo specificato non è valido.
MMSYSERR_INVALPARAM
La matrice a cui punta la matrice lpKeyArray non è valida.
MMSYSERR_NOMEM
Il dispositivo non dispone di memoria sufficiente per memorizzare nella cache tutte le patch richieste.
MMSYSERR_NOTSUPPORTED
Il dispositivo specificato non supporta la memorizzazione nella cache delle patch.

Commenti

Alcuni sintetizzatori non sono in grado di mantenere tutte le patch di percussione caricate contemporaneamente. La memorizzazione nella cache delle patch garantisce che siano disponibili le patch specificate.

Ogni elemento della matrice KEYARRAY rappresenta uno dei 128 patch di percussioni basate su tasti e ha bit impostati per ognuno dei 16 canali MIDI che utilizzano la patch specifica. Il bit meno significativo rappresenta il canale fisico 0 e il bit più significativo rappresenta il canale fisico 15. Ad esempio, se la patch sul numero di chiave 60 viene usata dai canali fisici 9 e 15, l'elemento 60 verrà impostato su 0x8200.

Questa funzione si applica solo ai dispositivi sintetizzatori MIDI interni. Non tutti i sintetizzatori interni supportano la memorizzazione nella cache delle patch. Per verificare se un dispositivo supporta la memorizzazione nella cache delle patch, usare il flag MIDICAPS_CACHE per testare il membro dwSupport della struttura MIDIOUTCAPS riempito dalla funzione midiOutGetDevCaps .

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione mmeapi.h (include Windows.h)
Libreria Winmm.lib
DLL Winmm.dll

Vedi anche

Funzioni MIDI