+int midi_read_msg(int fd,char *buf) {
+ char tmp_buf;
+ int i;
+ midi_read(fd,&tmp_buf);
+ buf[0]=tmp_buf;
+
+ /* decide how much to read */
+ if(((buf[0]&MSB_MASK)==PROGRAM_CHANGE) || ((buf[0]&MSB_MASK)==CHANNEL_PRESSURE)) {
+ printf("debug: program change or channel pressure event detected\n");
+ midi_read(fd,&tmp_buf);
+ buf[1]=tmp_buf;
+ return 2;
+ } else {
+ printf("debug: none program change or channel pressure event detected\n");
+ for(i=0;i<2;i++) {
+ midi_read(fd,&tmp_buf);
+ buf[i+1]=tmp_buf;
+ }
+ return 3;
+ }
+}
+
+
+
+