다음을 통해 공유


MIDI Thru 관리

MIDI 입력 디바이스를 MIDI 출력 디바이스에 직접 연결하여 입력 디바이스가 MIM_DATA 메시지를 받으면 시스템에서 동일한 MIDI 이벤트 데이터가 있는 메시지를 출력 디바이스 드라이버로 보낼 수 있습니다. MIDI 출력 디바이스를 MIDI 입력 디바이스에 연결하려면 midiConnect 함수를 사용합니다.

여러 출력을 사용하여 최상의 성능을 달성하기 위해 애플리케이션은 드라이버 통해호출되는 특별한 형태의 MIDI 출력 드라이버를 제공할 수 있습니다. 시스템에서는 MIDI 출력 디바이스를 하나만 MIDI 입력 디바이스에 연결할 수 있지만 여러 MIDI 출력 디바이스는 드라이버를 통해 연결할 수 있습니다. 이러한 시스템의 애플리케이션은 MIDI 입력 디바이스를 MIDI thru 디바이스에 연결하고, MIDI thru 디바이스를 필요한 만큼 많은 MIDI 출력 디바이스에 연결할 수 있습니다. Windows 디바이스 드라이버 설명서에서 'thru 드라이버'에 관한 자세한 정보를 확인하세요.

메시지를 사용하여 MIDI 기록 관리

MIDI 기록을 관리하기 위해 창 또는 스레드 콜백 프로시저로 다음 메시지를 보낼 수 있습니다.

의미
MM_MIM_CLOSE midiInClose 함수를 사용하여 MIDI 입력 디바이스를 닫을 때 전송됩니다.
MM_MIM_DATA 전체 MIDI 메시지가 수신될 때 전송됩니다. (이 메시지는 시스템 전용 메시지를 제외한 모든 MIDI 메시지에 사용됩니다.)
MM_MIM_ERROR 잘못된 MIDI 메시지가 수신되면 전송됩니다. (이 메시지는 시스템 전용 메시지를 제외한 모든 MIDI 메시지에 사용됩니다.)
MM_MIM_LONGDATA 전체 MIDI 시스템 전용 메시지를 받거나 버퍼가 시스템 전용 데이터로 채워진 경우 전송됩니다.
MM_MIM_LONGERROR 잘못된 MIDI 시스템 전용 메시지를 받을 때 전송됩니다.
MM_MIM_MOREDATA 애플리케이션이 입력 디바이스 드라이버를 따라갈 수 있을 만큼 빠르게 MIM_DATA 메시지를 처리하지 않을 때 전송됩니다.
MM_MIM_OPEN midiInOpen 함수를 사용하여 MIDI 입력 디바이스를 열 때 전송됩니다.

 

wParam 매개 변수 및 lParam 매개 변수는 이러한 각 메시지와 연결됩니다. wParam 매개 변수는 항상 열려 있는 MIDI 디바이스의 핸들을 지정합니다. lParam 매개 변수는 MM_MIM_CLOSEMM_MIM_OPEN 메시지에 사용되지 않습니다.

MM_MIM_LONGDATA 메시지의 경우 lpMidiHdr 시스템 전용 메시지의 버퍼를 식별하는 MIDIHDR 구조체의 주소를 지정합니다. 시스템 전용 메시지의 크기는 일반적으로 기록되기 전에 알 수 없으며 총 크기가 가장 큰 예상 메시지를 포함할 수 있는 버퍼를 할당해야 하기 때문에 버퍼가 완전히 채워지지 않을 수 있습니다. 버퍼에 있는 유효한 데이터의 양을 확인하려면 MIDIHDR 구조의 dwBytesRecorded 멤버를 사용합니다.

콜백 함수를 사용하여 MIDI 기록 관리

MIDI 입력 디바이스에 대한 기록을 관리하는 고유한 콜백 함수를 정의할 수 있습니다. 콜백 함수는 MidiInProc로 문서화되어 있습니다.

다음 메시지는 MidiInProc 콜백 함수의 wMsg 매개 변수로 보낼 수 있습니다.

의미
MIM_CLOSE midiInClose 함수를 사용하여 디바이스를 닫을 때 전송됩니다.
MIM_DATA 전체 MIDI 메시지가 수신될 때 전송됩니다(이 메시지는 시스템 전용 메시지를 제외한 모든 MIDI 메시지에 사용됨).
MIM_ERROR 잘못된 MIDI 메시지가 수신되면 전송됩니다(이 메시지는 시스템 전용 메시지를 제외한 모든 MIDI 메시지에 사용됨).
MIM_LONGDATA 전체 MIDI 시스템 전용 메시지를 받거나 버퍼가 시스템 전용 데이터로 채워진 경우 전송됩니다.
MIM_LONGERROR 잘못된 MIDI 시스템 전용 메시지를 받을 때 전송됩니다.
MIM_MOREDATA 애플리케이션이 입력 디바이스 드라이버를 따라갈 수 있을 만큼 빠르게 MIM_DATA 메시지를 처리하지 않을 때 전송됩니다.
MIM_OPEN midiInOpen 함수를 사용하여 MIDI 입력 디바이스를 열 때 전송됩니다.

 

이러한 메시지는 창 프로시저 함수로 전송되는 메시지와 유사하지만 매개 변수는 다릅니다. 열려 있는 MIDI 디바이스의 핸들은 midiInOpen사용하여 전달된 인스턴스 데이터의 doubleword와 함께 콜백 함수에 매개 변수로 전달됩니다.

MIM_LONGDATA 메시지의 경우 lpMidiHdr 시스템 전용 메시지의 버퍼를 식별하는 MIDIHDR 구조체의 주소를 지정합니다. 버퍼가 완전히 채워지지 않을 수 있습니다. 버퍼에 있는 유효한 데이터의 양을 확인하려면 MIDIHDR 구조의 dwBytesRecorded 멤버를 사용합니다.

디바이스 드라이버가 데이터 블록 작업을 완료한 후 데이터 블록을 정리하고 해제할 수 있습니다.

MIDI 오디오 녹음