다음을 통해 공유


MIDI 스루 관리

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

여러 출력으로 최상의 성능을 달성하기 위해 애플리케이션은 thru 드라이버라고 하는 특수한 형태의 MIDI 출력 드라이버를 제공하도록 선택할 수 있습니다. 시스템에서 MIDI 입력 디바이스에 하나의 MIDI 출력 디바이스만 연결할 수 있지만 여러 MIDI 출력 디바이스를 통해 드라이버에 연결할 수 있습니다. 이러한 시스템의 애플리케이션은 MIDI 입력 디바이스를 이 디바이스를 통해 연결하고 MIDI를 통해 디바이스를 필요한 만큼 MIDI 출력 디바이스에 연결할 수 있습니다. 드라이버 사용에 대한 자세한 내용은 Windows 디바이스 드라이버 설명서를 참조하세요.

메시지를 사용하여 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을 사용하여 전달된 instance 데이터의 doubleword와 함께 콜백 함수에 매개 변수로 전달됩니다.

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

디바이스 드라이버가 데이터 블록으로 완료되면 데이터 블록을 클린 해제할 수 있습니다.

MIDI 오디오 녹음