2017-09-18 11 views
1

응용 프로그램에서 다양한 MIDI 컨트롤러 장치에 액세스 할 수 있도록 지원을 추가하고 있습니다. midiInOpen을 사용하는 자체 시험에서 midiInOpen을 사용하는 하나의 응용 프로그램 만 MIDI 입력 장치에 액세스 할 수있는 것처럼 보입니다. MIDI 장치를 열려고 시도하는 두 번째 응용 프로그램이 오류 MMSYSERR_NOMEM과 함께 실패합니다.여러 응용 프로그램에서 단일 MIDI 입력 스트림을 동시에 열 수 있습니다.

그러나 우리 응용 프로그램 (midiInOpen 사용)과 동시에 MIDI 입력 스트림에 액세스하는 상용 응용 프로그램 (타사)의 예가 있습니다. 이것은 MIDI 스트림에 액세스하는 또 다른 방법이 있음을 나타냅니다.

API 스니퍼를 사용하여 API 호출을 보았습니다.이 응용 프로그램에서는 midiInOpen을 사용하지 않습니다. midiInMessagemidiOutMessage을 사용하며 API 문서에서 이들은 드라이버와 직접 통신하는 것으로 보입니다.

Windows에서 MIDI에 대한 새로운 지원이 제공됨을 설명서에서 확인합니다. 아직까지는 midiInOpen을 사용하는 앱과 함께 작동하는 방법을 실험하지는 않았지만 가능한 경우 Windows 7 이상에서 작동하는 솔루션을 찾아야합니다.

타사 앱 개발자에게 도움을 줄 수 있는지 문의했습니다. 현재. 우리의 애플 리케이션은 애플 리케이션과 함께 작동하지만, midiInOpen을 사용하여 MIDI 데이터에 액세스하는 다른 애플 리케이션이 있으며, 우리의 애플 리케이션은 자신의 애플 리케이션과 공존 할 수 없습니다. midiInOpen을 호출하는 첫 번째 앱은 MIDI 스트림을 가져옵니다. 두 번째 호출이 실패합니다.

이 모든 테스트는 Windows 7에서 수행되었습니다. 7 세 이상을 지원해야합니다.

응용 프로그램의 mac 버전은 이와 관련하여 정상적으로 작동합니다.

답변

0

일부 장치에는 다중 클라이언트를 지원하는 비표준 WinMM 드라이버가 있습니다. 그러나 이것은 분명히 여기에 해당하지 않습니다.

현재, Microsoft는 Windows에서 세 개의 MIDI API를 제공합니다 :

분명히 그 3 rd-party 응용 프로그램은 DirectMusic을 사용합니다.