#include #include #include #include snd_rawmidi_t *in, *out; void midi_open(char *rawmidi_device) { int err; err = snd_rawmidi_open(&in, &out, rawmidi_device, SND_RAWMIDI_NONBLOCK); if (err < 0) { fprintf(stderr, "snd_rawmidi_open %s failed: %d\n", rawmidi_device, err); exit(EXIT_FAILURE); } } int main() { int cnt, err; unsigned char c; unsigned char cmd[8] = {0xF0, 0x00, 0x20, 0x0D, 0x68, 0x02, 0x10, 0xF7}; midi_open("hw:1,2"); for (;;) { cnt++; err = snd_rawmidi_write(out, &cmd, 8); if (err < 0) { fprintf(stderr,"snd_rawmidi_write failed: %d\n", err); exit(EXIT_FAILURE); } snd_rawmidi_drain(out); for (;;) { err = snd_rawmidi_read(in, &c, 1); if (err < 0) { if (err==-11) { printf("\n"); break; } fprintf(stderr,"snd_rawmidi_read failed: %d\n", err); exit(EXIT_FAILURE); } else { printf(" 0x%02x", c); } } printf("\r%d", cnt); } }