midiOutCachePatches 함수(mmeapi.h)
midiOutCachePatches 함수는 내부 MIDI 신시사이저 디바이스가 지정된 패치 집합을 미리 로드하고 캐시하도록 요청합니다.
구문
MMRESULT midiOutCachePatches(
HMIDIOUT hmo,
UINT uBank,
LPWORD pwpa,
UINT fuCache
);
매개 변수
hmo
열린 MIDI 출력 디바이스에 대한 핸들입니다. 이 디바이스는 내부 MIDI 신시사이저여야 합니다. 이 매개 변수는 HMIDIOUT으로 캐스팅된 MIDI 스트림의 핸들일 수도 있습니다.
uBank
사용해야 하는 패치 은행. 기본 패치 뱅크를 캐시하려면 이 매개 변수를 0으로 설정해야 합니다.
pwpa
캐시되거나 캐시되지 않을 패치를 나타내는 PATCHARRAY 배열에 대한 포인터입니다.
fuCache
캐시 작업에 대한 옵션입니다. 다음 플래그 중 하나일 수 있습니다.
값 | 의미 |
---|---|
MIDI_CACHE_ALL | 지정된 모든 패치를 캐시합니다. 모두 캐시할 수 없는 경우 없음을 캐시하고 PATCHARRAY 배열을 지우고 MMSYSERR_NOMEM 반환합니다. |
MIDI_CACHE_BESTFIT | 지정된 모든 패치를 캐시합니다. 모두 캐시할 수 없는 경우 가능한 한 많은 패치를 캐시하고, PATCHARRAY 배열을 변경하여 캐시된 패치를 반영하고, MMSYSERR_NOMEM 반환합니다. |
MIDI_CACHE_QUERY | PATCHARRAY 배열을 변경하여 현재 캐시된 패치를 나타냅니다. |
MIDI_UNCACHE | 지정된 패치를 캐시하지 않고 PATCHARRAY 배열을 지웁니다. |
반환 값
성공하면 MMSYSERR_NOERROR 반환하고, 그렇지 않으면 오류를 반환합니다. 가능한 오류 값은 다음과 같습니다.
반환 코드 | 설명 |
---|---|
|
wFlags로 지정된 플래그가 잘못되었습니다. |
|
지정한 디바이스 핸들이 잘못되었습니다. |
|
lpPatchArray가 가리키는 배열이 잘못되었습니다. |
|
디바이스에 요청된 패치를 모두 캐시할 수 있는 충분한 메모리가 없습니다. |
|
지정된 디바이스는 패치 캐싱을 지원하지 않습니다. |
설명
일부 신시사이저는 모든 패치를 동시에 로드할 수 없으며 MIDI 프로그램 변경 메시지를 받을 때 디스크에서 데이터를 로드해야 합니다. 패치를 캐싱하면 지정된 패치를 즉시 사용할 수 있습니다.
PATCHARRAY 배열의 각 요소는 128개의 패치 중 하나를 나타내며 특정 패치를 사용하는 16개의 MIDI 채널 각각에 대해 비트가 설정됩니다. 가장 중요한 비트는 물리적 채널 0을 나타내고 가장 중요한 비트는 실제 채널 15(0x0F)를 나타냅니다. 예를 들어 물리적 채널 0 및 8에서 패치 0을 사용하는 경우 요소 0은 0x0101 설정됩니다.
이 함수는 내부 MIDI 신시사이저 디바이스에만 적용됩니다. 모든 내부 신시사이저가 패치 캐싱을 지원하는 것은 아닙니다. 디바이스가 패치 캐싱을 지원하는지 확인하려면 MIDICAPS_CACHE 플래그를 사용하여 midiOutGetDevCaps 함수로 채워진 MIDIOUTCAPS 구조체의 dwSupport 멤버를 테스트합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | mmeapi.h(Windows.h 포함) |
라이브러리 | Winmm.lib |
DLL | Winmm.dll |