관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

MIDIOUTCAPS 본문

API 관련/Win32 API 함수

MIDIOUTCAPS

님투 2007. 11. 9. 01:15
반응형

MIDIOUTCAPS

MIDI 출력 디바이스의 능력에 대한 정보를 기술합니다.

#define MAXPNAMELEN      32

typedef struct tagMIDIOUTCAPS {
    WORD  wMid;                 // 메이커ID
    WORD  wPid;                 // 프로덕트ID
    MMVERSION vDriverVersion;   // 버젼
    TCHAR szPname[MAXPNAMELEN]; // 프로덕트명
    WORD  wTechnology;          // 디바이스 타입
    WORD  wVoices;              // 보이스수
    WORD  wNotes;               // 최대 동시 발음수
    WORD  wChannelMask;         // 채널
    DWORD dwSupport;            // 서포트되는 기능
} MIDIOUTCAPS, *PMIDIOUTCAPS, *NPMIDIOUTCAPS, *LPMIDIOUTCAPS;

멤버

wMid

MIDI 출력 디바이스를 위한 디바이스 드라이버의 메이커 ID 하지만 격납됩니다.

wPid

MIDI 출력 디바이스의 프로덕트 ID 입니다.

vDriverVersion

MIDI 출력 디바이스를 위한 디바이스 드라이버의 버젼 번호가 격납됩니다.

szPname

프로덕트명이 격납됩니다.

wTechnology

MIDI 출력 디바이스의 형태를 나타내는 플래그가 격납됩니다.이하의 값의 어느 쪽인가에 됩니다.

MIDI 출력 디바이스의 형태
1 (MOD_MIDIPORT) MIDI 하드웨어 포토
2 (MOD_SYNTH) 신디사이저
3 (MOD_SQSYNTH) square wave synthesizer
4 (MOD_FMSYNTH) FM 신디사이저
5 (MOD_MAPPER) Microsoft MIDI mapper
wVoices

내부 신디사이저 디바이스가 서포트하는 보이스수가 격납됩니다.디바이스가 포토의 경우는 이 멤버는 0 (이)가 됩니다.

wNotes

내부 신디사이저 디바이스가 서포트하는 최대 동시 발음수가 격납됩니다.디바이스가 포토의 경우는 이 멤버는 0 (이)가 됩니다.

wChannelMask

내부 신디사이저 디바이스가 응할 수 있는 채널이 격납됩니다.최하위비트가 채널 0 (을)를, 최상위비트가 채널 15 (을)를 가리키고 있습니다.모든 채널을 보내는 포토 디바이스의 경우는 이 멤버는 0xFFFF (이)가 됩니다.

dwSupport

디바이스가 서포트하는 기능을 나타내는 값이 격납됩니다.이하의 값의 편성이 됩니다.

서포트하는 기능
0x0001 (MIDICAPS_VOLUME) 음량 조절
0x0002 (MIDICAPS_LRVOLUME) 좌우 독립한 음량 조절
0x0004 (MIDICAPS_CACHE) 패치 캐쉬
0x0008 (MIDICAPS_STREAM) midiStreamOut 함수의 다이렉트 서포트

디바이스가 좌우 독립한 음량 조절을 서포트하는 경우는, MIDICAPS_VOLUME (와)과 MIDICAPS_LRVOLUME 의 양쪽 모두가 세트 됩니다.

대응 정보

Windows 95 이후 / Windows NT 4.0 이후

변수와의 대응 (ANSI 판의 경우)

HSP 변수 멤버
멤버명 오프셋 사이즈
moc.0
1아르바이트눈 wMid 0 2
2아르바이트눈
3아르바이트눈 wPid 2 2
4아르바이트눈
moc.1 vDriverVersion 4 4
moc.2 szPname 8 32
moc.9
moc.10
1아르바이트눈 wTechnology 40 2
2아르바이트눈
3아르바이트눈 wVoices 42 2
4아르바이트눈
moc.11
1아르바이트눈 wNotes 44 2
2아르바이트눈
3아르바이트눈 wChannelMask 46 2
4아르바이트눈
moc.12 dwSupport 48 4

wMid, wPid, wTechnology, wVoices, wNotes, wChannelMask 의 각 멤버를 취득하려면

wMid         =  moc.0 & 0xFFFF
wPid         = (moc.0 >> 16) & 0xFFFF
wTechnology  =  moc.10 & 0xFFFF
wVoices      = (moc.10 >> 16) & 0xFFFF
wNotes       =  moc.11 & 0xFFFF
wChannelMask = (moc.11 >> 16) & 0xFFFF

또는

wpeek wMid, moc, 0
wpeek wPid, mod, 2
wpeek wTechnology, mod, 40
wpeek wVoices, mod, 42
wpeek wNotes, mod, 44
wpeek wChannelMask, mod, 46

szPname 멤버를 취득하려면

szName = ""
(w)peek  szName, moc, 8
반응형

'API 관련 > Win32 API 함수' 카테고리의 다른 글

capability  (0) 2007.11.09
MCI커멘드 문자열 일람  (0) 2007.11.09
MIDIEVENT  (0) 2007.11.09
MIDIHDR  (0) 2007.11.09
WM_SIZE  (0) 2007.11.09
Comments