Compartilhar via


Função midiOutCacheDrumPatches (mmeapi.h)

A função midiOutCacheDrumPatches solicita que um dispositivo sintetizador MIDI interno pré-recarregue e armazene em cache um conjunto especificado de patches de percussão baseados em chave.

Sintaxe

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

Parâmetros

hmo

Identificador para o dispositivo de saída MIDI aberto. Esse dispositivo deve ser um sintetizador MIDI interno. Esse parâmetro também pode ser o identificador de um fluxo MIDI, convertido em HMIDIOUT.

uPatch

Número de patch de bateria que deve ser usado. Esse parâmetro deve ser definido como zero para armazenar em cache o patch de bateria padrão.

pwkya

Ponteiro para uma matriz KEYARRAY que indica os números de chave dos patches de percussão especificados a serem armazenados em cache ou não armazenados em cache.

fuCache

Opções para a operação de cache. Pode ser um dos sinalizadores a seguir.

Valor Significado
MIDI_CACHE_ALL Armazena em cache todos os patches especificados. Se todos eles não puderem ser armazenados em cache, ele armazenará em cache nenhum, limpará a matriz KEYARRAY e retornará MMSYSERR_NOMEM.
MIDI_CACHE_BESTFIT Armazena em cache todos os patches especificados. Se todos eles não puderem ser armazenados em cache, ele armazenará em cache o máximo possível de patches, alterará a matriz KEYARRAY para refletir quais patches foram armazenados em cache e retornará MMSYSERR_NOMEM.
MIDI_CACHE_QUERY Altera a matriz KEYARRAY para indicar quais patches estão armazenados em cache no momento.
MIDI_UNCACHE Limpa os patches especificados e limpa a matriz KEYARRAY.

Retornar valor

Retorna MMSYSERR_NOERROR se tiver êxito ou um erro de outra forma. Os valores de erro possíveis incluem o seguinte.

Código de retorno Descrição
MMSYSERR_INVALFLAG
O sinalizador especificado por wFlags é inválido.
MMSYSERR_INVALHANDLE
O identificador de dispositivo especificado é inválido.
MMSYSERR_INVALPARAM
A matriz apontada pela matriz lpKeyArray é inválida.
MMSYSERR_NOMEM
O dispositivo não tem memória suficiente para armazenar em cache todos os patches solicitados.
MMSYSERR_NOTSUPPORTED
O dispositivo especificado não dá suporte ao cache de patch.

Comentários

Alguns sintetizadores não são capazes de manter todos os patches de percussão carregados simultaneamente. O cache de patches garante que os patches especificados estejam disponíveis.

Cada elemento da matriz KEYARRAY representa um dos 128 patches de percussão baseados em chave e tem bits definidos para cada um dos 16 canais MIDI que usam o patch específico. O bit menos significativo representa o canal físico 0 e o bit mais significativo representa o canal físico 15. Por exemplo, se o patch no número de chave 60 for usado pelos canais físicos 9 e 15, o elemento 60 será definido como 0x8200.

Essa função se aplica somente a dispositivos sintetizadores MIDI internos. Nem todos os sintetizadores internos dão suporte ao cache de patch. Para ver se um dispositivo dá suporte ao cache de patch, use o sinalizador MIDICAPS_CACHE para testar o membro dwSupport da estrutura MIDIOUTCAPS preenchida pela função midiOutGetDevCaps .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho mmeapi.h (inclua Windows.h)
Biblioteca Winmm.lib
DLL Winmm.dll

Confira também

Funções MIDI