Alsa 가상 rawmidi 포트는 모든 메시지의 첫 번째 및 마지막 midi 바이트만 수신합니다.

Alsa 가상 rawmidi 포트는 모든 메시지의 첫 번째 및 마지막 midi 바이트만 수신합니다.

나는 다음 코드를 시도했습니다 : alsarawmidiin.c

alsa rawmidi는 입력 포트 이름을 "virtual"로 지정하여 가상 rawmidi 포트를 생성할 수 있다고 선언합니다.

그래서 코드를 컴파일하고 다음을 사용하여 시작했습니다.

alsarawmidiin 가상

이것은 작동하며 aconnect를 사용하여 다른 MIDI 포트에 연결할 수 있습니다. 문제는 운영 체제에서 표시하는 MIDI 데이터가 MIDI 메시지의 첫 번째 바이트와 마지막 바이트만 표시한다는 것입니다. 대부분의 MIDI 메시지는 3바이트이지만 가상 드라이버를 사용할 때는 2바이트만 표시됩니다.

rawmidi 장치(비가상 장치)에 직접 연결하면 작동합니다. 하지만 여러 MIDI 장치를 동일한 rawmidi 포트에 연결하고 싶습니다. 이것은 alsa rawmidi 라이브러리의 버그입니까?

답변1

이것은 virtual플러그인의 버그입니다. MIDI 메시지보다 작은 버퍼를 처리하는 코드는 테스트된 적이 없는 것 같습니다.

이는 alsa-lib 1.1.4에서 수정될 예정입니다. 해당 패키지가 배포판에 도달하기 전에 요청할 수 있습니다.반점이 문제를 수동으로 해결하거나 더 큰 버퍼를 사용하여 해결하십시오.

관련 정보