#include #include #include //#include #include int main() { char buffer[1]; unsigned char insts[]= //{57,60,62,64}; // A minor pentatonic. {64,63,62,75}; // congas and clave. //{35,38,44,42}; // drum kit ( bass snare and hi hat) //{41,47,48,50}; // tom-toms int nread; unsigned char inst=0; int midi_err; unsigned char ch; snd_rawmidi_t *handle_out=0; int pad,vel,rawvel,samples,val,startval; int ret; FILE * usbf; printf("opening usb device.\n"); usbf=fopen("/dev/ttyUSB0","r"); if (usbf == NULL) exit(0); printf("Opening midi port\n"); midi_err=snd_rawmidi_open(NULL, &handle_out, "virtual",0); if (midi_err) { printf("error: %d\n", midi_err); exit(1); } printf("waiting for first hit\n"); while (-1) { ret=fscanf(usbf,"%d, %d, %d, %d, %d, %d",&pad,&vel,&rawvel,&samples,&val,&startval); if (ret == EOF) break; printf("pad: %d, vel: %d, rawvel: %d, samples: %d, value: %d, start value: %d\n",pad,vel,rawvel,samples,val,startval); inst=insts[pad]; printf("playing note %d at velocity %d\n",inst,vel); ch=0x99; snd_rawmidi_write(handle_out,&ch,1); ch=insts[pad]; snd_rawmidi_write(handle_out,&ch,1); ch=vel; snd_rawmidi_write(handle_out,&ch,1); snd_rawmidi_drain(handle_out); } printf("Closing midi port\n"); snd_rawmidi_drain(handle_out); snd_rawmidi_close(handle_out); exit (0); }