|
- /*
- * Programmer: Dominik Schmidt-Philipp <schmidt-philipp@kulturteknologi.no>
- * Filename: main.c
- *
- * Dedicated to seleomlivet
- *
- */
- #include <alsa/asoundlib.h>
-
- // function declarations:
- void alsa_error(const char *format, ...);
-
- int main(int argc, char *argv[]) {
- int status;
- int mode = SND_RAWMIDI_SYNC;
- snd_rawmidi_t* midiin = NULL;
- const char* portname = "virtual";
-
- if ((status = snd_rawmidi_open(&midiin, NULL, portname, mode)) < 0) {
- alsa_error("Problem opening MIDI input: %s", snd_strerror(status));
- exit(1);
- }
-
- int i = 0;
- char buffer[3];
- unsigned char message[3];
-
- while (1) {
- if ((status = snd_rawmidi_read(midiin, buffer, 3)) < 0) {
- alsa_error("Problem reading MIDI input: %s", snd_strerror(status));
- }
-
- // in case of MIDI running status, value bytes need to not override status byte
- for (i=1; i<=status;i++) {
- message[3-i] = (unsigned char) buffer[status-i];
- }
-
- printf("%d: %x %x %x\n", status, message[0], message[1], message[2]);
- fflush(stdout);
- }
-
- snd_rawmidi_close(midiin);
- midiin=NULL;
-
- return 0;
- }
-
-
- //////////////////////////////
- //
- // error -- print error message
- //
-
- void alsa_error(const char *format, ...) {
- va_list ap;
- va_start(ap, format);
- vfprintf(stderr, format, ap);
- va_end(ap);
- putc('\n', stderr);
- }
|