Поделиться через


Функция midiOutCacheDrumPatches (mmeapi.h)

Функция midiOutCacheDrumPatches запрашивает , чтобы внутреннее устройство синтезатора MIDI предварительно загрузить и кэшировать указанный набор исправлений для ударных на основе ключей.

Синтаксис

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

Параметры

hmo

Дескриптор открытого устройства вывода MIDI. Это устройство должно быть внутренним синтезатором MIDI. Этот параметр также может быть дескриптором потока MIDI, приведения к HMIDIOUT.

uPatch

Номер патча барабана, который следует использовать. Этот параметр должен иметь значение 0, чтобы кэшировать исправление барабана по умолчанию.

pwkya

Указатель на массив KEYARRAY, указывающий номера ключей указанных исправлений ударных операций, которые необходимо кэшировать или не кэшировать.

fuCache

Параметры операции кэша. Это может быть один из следующих флагов.

Значение Значение
MIDI_CACHE_ALL Кэширует все указанные исправления. Если они не могут быть кэшированы, он не кэширует их, очищает массив KEYARRAY и возвращает MMSYSERR_NOMEM.
MIDI_CACHE_BESTFIT Кэширует все указанные исправления. Если все они не могут быть кэшированы, он кэширует как можно больше исправлений, изменяет массив KEYARRAY в соответствии с тем, какие исправления были кэшированы, и возвращает MMSYSERR_NOMEM.
MIDI_CACHE_QUERY Изменяет массив KEYARRAY , чтобы указать, какие исправления кэшируются в данный момент.
MIDI_UNCACHE Извлекает указанные исправления и очищает массив KEYARRAY.

Возвращаемое значение

Возвращает MMSYSERR_NOERROR в случае успешного выполнения или ошибку в противном случае. Возможные значения ошибок:

Код возврата Описание
MMSYSERR_INVALFLAG
Флаг, заданный wFlags , недопустим.
MMSYSERR_INVALHANDLE
Указанный дескриптор устройства недопустим.
MMSYSERR_INVALPARAM
Недопустимый массив, на который указывает массив lpKeyArray .
MMSYSERR_NOMEM
У устройства недостаточно памяти для кэширования всех запрошенных исправлений.
MMSYSERR_NOTSUPPORTED
Указанное устройство не поддерживает кэширование исправлений.

Комментарии

Некоторые синтезаторы не способны одновременно загружать все ударные патчи. Кэширование исправлений гарантирует доступность указанных исправлений.

Каждый элемент массива KEYARRAY представляет одно из 128 исправлений ударных на основе ключей и имеет биты, заданные для каждого из 16 каналов MIDI, использующих конкретное исправление. Наименьший бит представляет физический канал 0, а наиболее значимый бит — физический канал 15. Например, если исправление для ключа 60 используется физическими каналами 9 и 15, для элемента 60 будет задано значение 0x8200.

Эта функция применяется только к внутренним устройствам синтезатора MIDI. Не все внутренние синтезаторы поддерживают кэширование исправлений. Чтобы узнать, поддерживает ли устройство кэширование исправлений, используйте флаг MIDICAPS_CACHE для тестирования члена dwSupport структуры MIDIOUTCAPS , заполненной функцией midiOutGetDevCaps .

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header mmeapi.h (включая Windows.h)
Библиотека Winmm.lib
DLL Winmm.dll

См. также раздел

Функции MIDI