int main (int argc, char *argv[]) { int nfds, seq_nfds, l1; struct pollfd *pfds; if (argc < 6) { fprintf(stderr, "LinzerSchnitteMIDI <hw:0,0,1> <attack> <decay> <sustain> <release>\n"); exit(1); } attack = atof(argv[2]); decay = atof(argv[3]); sustain = atof(argv[4]); release = atof(argv[5]); /* polyphony = atoi(argv[6]); buffersize = atoi(argv[7]); outputvolume = atoi(argv[8]); firstnotefreq = atoi(argv[9]); freqchannelwidth = atoi(argv[10]); */ buf = (short *) malloc (2 * sizeof (short) * BUFSIZE); playback_handle = open_pcm(argv[1]); seq_handle = open_seq(); seq_nfds = snd_seq_poll_descriptors_count(seq_handle, POLLIN); nfds = snd_pcm_poll_descriptors_count (playback_handle); pfds = (struct pollfd *)alloca(sizeof(struct pollfd) * (seq_nfds + nfds)); snd_seq_poll_descriptors(seq_handle, pfds, seq_nfds, POLLIN); snd_pcm_poll_descriptors (playback_handle, pfds+seq_nfds, nfds); connect2MidiThroughPort(seq_handle); for (l1 = 0; l1 < POLY; note_active[l1++] = 0); while (1) { if (poll (pfds, seq_nfds + nfds, 1000) > 0) { for (l1 = 0; l1 < seq_nfds; l1++) { if (pfds[l1].revents > 0) midi_callback(); } for (l1 = seq_nfds; l1 < seq_nfds + nfds; l1++) { if (pfds[l1].revents > 0) { if (playback_callback(BUFSIZE) < BUFSIZE) { fprintf (stderr, "xrun ! increase buffer \n"); snd_pcm_prepare(playback_handle); } } } } } snd_pcm_close (playback_handle); snd_seq_close (seq_handle); free(buf); return (0); }
int main () { if (gpioSetup() != OK) { dbgPrint(DBG_INFO, "gpioSetup failed. Exiting\n"); return 1; } seq_handle = open_seq(); connect2MidiThroughPort(seq_handle); init_cmd_defaults(); while (1) { midi_read(); } snd_seq_close (seq_handle); gpioCleanup(); return (0); }
int main (int argc, char *argv[]) { int nfds, seq_nfds, l1; //int key; //key=0; char *hwdevice; struct pollfd *pfds; /* if (argc < 2) { fprintf(stderr, "LinzerSchnitteMIDI <hw:0,0,1> <attack> <decay> <sustain> <release>\n"); exit(1); } */ initscr(); /* start the curses setup */ atexit(do_endwin); keypad(stdscr, TRUE); noecho(); scrollok(stdscr, TRUE); printw("Welcome to LinzerSchnitte\n"); refresh(); start_color(); init_pair(1, COLOR_RED, COLOR_BLACK); /* end the curses setup */ /* Set default */ hwdevice = "hw:0,0,1"; attack = 0.001; decay = 0.001; sustain = 1; release = 0.001; if (argc > 1) { hwdevice = argv[1]; } /* attack = atof(argv[2]); decay = atof(argv[3]); sustain = atof(argv[4]); release = atof(argv[5]); */ buf = (short *) malloc (2 * sizeof (short) * BUFSIZE); playback_handle = open_pcm(hwdevice); seq_handle = open_seq(); seq_nfds = snd_seq_poll_descriptors_count(seq_handle, POLLIN); nfds = snd_pcm_poll_descriptors_count (playback_handle); pfds = (struct pollfd *)alloca(sizeof(struct pollfd) * (seq_nfds + nfds)); snd_seq_poll_descriptors(seq_handle, pfds, seq_nfds, POLLIN); snd_pcm_poll_descriptors (playback_handle, pfds+seq_nfds, nfds); connect2MidiThroughPort(seq_handle); for (l1 = 0; l1 < POLY; note_active[l1++] = 0); while (1) { if (poll (pfds, seq_nfds + nfds, 1000) > 0) { for (l1 = 0; l1 < seq_nfds; l1++) { if (pfds[l1].revents > 0) midi_callback(); } for (l1 = seq_nfds; l1 < seq_nfds + nfds; l1++) { if (pfds[l1].revents > 0) { if (playback_callback(BUFSIZE) < BUFSIZE) { fprintf (stderr, "xrun ! increase buffer \n"); snd_pcm_prepare(playback_handle); } } } } } snd_pcm_close (playback_handle); snd_seq_close (seq_handle); free(buf); return (0); }