Share via


Função midiOutCachePatches (mmeapi.h)

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

Sintaxe

MMRESULT midiOutCachePatches(
  HMIDIOUT hmo,
  UINT     uBank,
  LPWORD   pwpa,
  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.

uBank

Banco de patches que devem ser usados. Esse parâmetro deve ser definido como zero para armazenar em cache o banco de patch padrão.

pwpa

Ponteiro para uma matriz PATCHARRAY que indica os patches 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 não armazenará em cache nenhum, limpará a matriz PATCHARRAY 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 PATCHARRAY para refletir quais patches foram armazenados em cache e retornará MMSYSERR_NOMEM.
MIDI_CACHE_QUERY Altera a matriz PATCHARRAY para indicar quais patches estão armazenados em cache no momento.
MIDI_UNCACHE Limpa os patches especificados e limpa a matriz PATCHARRAY.

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 por lpPatchArray é 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 carregados simultaneamente e devem carregar dados do disco quando receberem mensagens de alteração do programa MIDI. O cache de patches garante que os patches especificados estejam imediatamente disponíveis.

Cada elemento da matriz PATCHARRAY representa um dos 128 patches 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 (0x0F). Por exemplo, se o patch 0 for usado pelos canais físicos 0 e 8, o elemento 0 será definido como 0x0101.

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