관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

MIDIEVENT 본문

API 관련/Win32 API 함수

MIDIEVENT

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

MIDIEVENT

스트림 버퍼중의 MIDI 이벤트를 기술합니다.

typedef struct midievent_tag {
    DWORD  dwDeltaTime;  // 전회로부터의 시간(tick수)
    DWORD  dwStreamID;   // 예약(0)
    DWORD  dwEvent;      // 이벤트 타입과 파라미터
    DWORD  dwParms[1];   // 롱 이벤트의 파라미터
} MIDIEVENT;

멤버

dwDeltaTime

전회의 MIDI 이벤트와 현재의 MIDI 이벤트의 사이의 시간을 tick 단위로 지정합니다. tick 의 길이는, 스트림에 관련지을 수 있었던 타임 포맷과 혹은 템포에 의해서 정의됩니다.

dwStreamID

예약되고 있습니다. 0 (을)를 지정하지 않으면 안됩니다.

dwEvent

이벤트 코드와 이벤트 파라미터 혹은 길이를 조합해 지정합니다.

이 멤버의 상위8비트는 플래그와 이벤트 코드를 포함하고 있습니다.플래그는 이하의 값의 어느 쪽인가에 됩니다.이 플래그에는 MEVT_F_LONG 인가 MEVT_F_SHORT 의 어느 쪽인지가 지정되지 않으면 안됩니다. MEVT_F_CALLBACK 플래그는 임의로 지정할 수 있습니다.

의미
0x00000000 (MEVT_F_SHORT)

이벤트는 쇼트 이벤트입니다.이벤트 파라미터는 dwEvent 멤버의 하위24비트에 포함됩니다.

0x40000000 (MEVT_F_CALLBACK)

이벤트가 실행 되려고 하고 있을 때, 시스템은 콜백을 발생시킵니다.

0x80000000 (MEVT_F_LONG)

이벤트는 롱 이벤트입니다. dwEvent 멤버의 하위24비트에는, dwParms 멤버에 격납되는 이벤트 파라미터의 길이가 지정됩니다.

이벤트 코드는 이하의 값의 어느 쪽인가에 됩니다.

의미
0x00 (MEVT_SHORTMSG)

쇼트 이벤트입니다. dwEvent 멤버의 하위24비트의 데이터는MIDI쇼트 메세지입니다.

0x01 (MEVT_TEMPO)

쇼트 이벤트입니다. dwEvent 멤버의 하위24비트의 데이터는, 이후의 이벤트의 새로운 템포를 나타냅니다.이 템포는, MIDI 파일내의 템포 변경 메타이벤트의 포맷과 같은 포맷으로 지정됩니다.즉,4분 음표의 길이를 마이크로 세컨드 단위로 지정합니다.(스트림으로 지정된 타임 포맷이 SMPTE 시간의 경우는, 이 이벤트는 효과를 가지지 않습니다.)

0x02 (MEVT_NOP)

쇼트 이벤트입니다.이 이벤트는 플레이스홀더이며, 실제로는 아무것도 하지 않습니다. dwEvent 멤버의 하위24비트의 데이터는 무시됩니다. dwEvent 멤버에 MEVT_F_CALLBACK 플래그를 지정해 있는 경우는, 콜백을 발생시킵니다.

0x80 (MEVT_LONGMSG)

롱 이벤트입니다.이벤트 데이터는 그대로 보내집니다.이 데이터는 시스템에크스크루시브데이타로 간주해집니다.즉, 이벤트가 실행된 시점에서 런닝 스테이터스가 클리어 되어 이전의 이벤트로부터의 런닝 스테이터스는 이 이벤트 데이터의 어느 채널의 이벤트에도 할당할 수 없습니다.같은 시각의 채널 메세지 그룹을 보내는데 이 이벤트를 사용하는 것은 바람직하지는 않습니다. MEVT_SHORTMSG (을)를 세트 해, dwDeltaTime 멤버에 0 (을)를 넣은 이벤트를 대신 사용해야 합니다.

0x82 (MEVT_COMMENT)

롱 이벤트입니다.이벤트 데이터는 무시됩니다.스트림 데이터를 스트림 형식에서 파일에 격납하려고 했을 경우에, 이 이벤트는 기록 정보를 격납하는데 이용되게 됩니다.(프로그램 또는 시퀀서를 작성하는데 도움이 되게 됩니다.) 이 데이터의 버퍼내에서는, 제로 바이트는 코멘트의 클래스와 그 후의 아르바이트가 코멘트 데이터를 포함하고 있는 것을 나타냅니다.

0x84 (MEVT_VERSION)

롱 이벤트입니다.이벤트 데이터에 MIDISTRMBUFFVER 구조체를 포함하지 않으면 안됩니다.

dwParms

dwEvent 멤버에 MEVT_F_LONG 플래그와 버퍼의 길이를 지정했을 경우는, 이 멤버는 이벤트의 파라미터를 포함합니다.정수개의 더블 워드치(4아르바이트치)가 격납되도록(듯이), 이 파라미터의 실제의 데이터 이외의 부분을 0 그리고 묻지 않으면 안됩니다.예를 들면, 이벤트 데이터의 길이가5아르바이트였던 경우에는, 합계를8아르바이트로 하기 위해서 뒤의3아르바이트를0그리고 묻지 않으면 안됩니다.이 경우, dwEvent 멤버의 하위24비트(데이터의 길이)에는 실제의 길이(여기에서는 5)(을)를 지정하지 않으면 안됩니다.

dwEvent 멤버에 MEVT_F_SHORT 플래그를 지정했을 경우는, 이 멤버는 사용되지 않습니다.

대응 정보

Windows 95 이후 / Windows NT 3.1 이후

변수와의 대응

HSP 변수 멤버
멤버명 오프셋 사이즈
midiev.0 dwDeltaTime 0 4
midiev.1 dwStreamID 4 4
midiev.2 dwEvent 8 4
midiev.3 dwParms[0] 12 4
반응형

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

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