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で修正される予定です。そのパッケージがディストリビューションに到達する前にリクエストできます。斑点この問題を手動で解決するか、大きなバッファを使用して解決してください。

おすすめ記事