11 #include <sys/types.h>
16 #include <sys/soundcard.h>
21 #define MIDI_DEVICE /dev/midi
24 #define NOTE_DATA 0x7F
29 /* global, do we need sockets global? */
32 int all_stop(int fd) {
36 note_off(fd,j,i,(int)0x7F);
40 int midi_write_msg3(int fd,unsigned char status,unsigned char data1,unsigned char data2) {
49 int midi_write_msg2(int fd,unsigned char status,unsigned char data1) {
57 int note_on(int fd,int chan,int note,int vel) {
58 midi_write_msg3(fd,NOTE_ON|(CH_MASK&chan),note&NOTE_DATA,vel&VEL_MASK);
62 int note_off(int fd,int chan,int note,int vel) {
63 midi_write_msg3(fd,NOTE_OFF|(CH_MASK&chan),note&NOTE_DATA,vel&VEL_MASK);
67 int midi_read_msg(int fd,char *buf) {
69 bytes_read=read(fd,buf,10);
74 /* test the io api ... */
76 int main(int argc,char **argv) {
79 char my_buf[10]="MIDIMIDI";
83 channel=atoi(argv[1]);
86 midi_fd=open("/dev/sound/midi",O_RDWR);
88 printf("reading ...\n");
89 i=midi_read_msg(midi_fd,my_buf);
90 for(j=0;j<i;j++) printf("%x ",my_buf[j]);
97 note_off(midi_fd,0,38,127);
98 note_off(midi_fd,0,42,127);
99 note_on(midi_fd,0,42,127);
100 note_on(midi_fd,0,38,127);
102 note_off(midi_fd,0,42,127);
103 note_on(midi_fd,0,42,127);