MIDI目的でCでALSAを使用しようとしています。
私の問題は、貴重な引数を使用するときにsnd_rawmidi_open()の種類の「衝突」(whileループのように永遠に待機)ということです。
#include <stdio.h>
#include <stdlib.h>
#include <alsa/asoundlib.h>
int main(int argc,char** argv)
{
snd_rawmidi_t *handle_in = 0;
int err;
fprintf(stderr, "TEST 1\n");
err = snd_rawmidi_open(&handle_in,NULL,"hw:1,0,0",0);
fprintf(stderr,"TEST 2\n");
if (err) {
fprintf(stderr,"snd_rawmidi_open failed: %d\n",err);
}
fprintf(stderr, "TEST 3\n");
exit(0);
}
「hw:1,0,0」はMIDIキーボードです。 「foo」などの誤った値を使用するとエラーが発生します。有効な場合、プログラムは「TEST 1」を表示し、一時停止します。
どんなアイデアがありますか?
とても感謝しています!
答え1
デフォルトでは、snd_rawmidi_open
要求を待つポートは使用可能です。
これを望まない場合は、このフラグを追加してください(SND_RAWMIDI_NONBLOCK
読み取り/書き込み呼び出しを防ぐためにリセットしてください)。snd_rawmidi_nonblock()