Kompiluje se
[mirrors/Programs.git] / c / ghetto-sound-system / ftdi-midi.c
CommitLineData
233e34bb
TM
1#include <stdio.h>
2#include <unistd.h>
3#include <alsa/asoundlib.h>
4#include <ftdi.h>
5
6
7#define BAUD 31250
d3b2d1a7
TM
8#define BUFFER_SIZE 1
9#define LATENCY 0
233e34bb
TM
10
11static snd_rawmidi_t *midi_in, *midi_out;
12struct ftdi_context ftdi;
13
14int main(void) {
15
16
17 snd_rawmidi_open(&midi_in, &midi_out, "virtual", SND_RAWMIDI_NONBLOCK);
18 //snd_rawmidi_open(&midi_in, &midi_out, "virtual", 0);
19
20
21 if (ftdi_init( &ftdi )) {
22 fprintf(stderr, "usb - init error !\n");
23 return 1;
24 }
25
26 if (ftdi_usb_open(&ftdi, 0x0403, 0x6001)) {
27 fprintf(stderr, "usb - open error (cannot find?) !\n");
28 fprintf(stderr, "ftdi_usb_open failed, error (%s)\n", ftdi_get_error_string(&ftdi));
29 ftdi_deinit( &ftdi );
30 return 2;
31 }
32
33 if (ftdi_usb_reset( &ftdi )) {
34 fprintf(stderr, "usb - reset error !\n");
35 ftdi_usb_close( &ftdi );
36 ftdi_deinit( &ftdi );
37 return 3;
38 }
39
40 ftdi_disable_bitbang( &ftdi );
41 ftdi_set_baudrate(&ftdi, BAUD);
42
d3b2d1a7 43 unsigned char buf[BUFFER_SIZE];
233e34bb
TM
44 int ret;
45 while(1) {
46 //FTDI2MIDI
d3b2d1a7 47 ret = ftdi_read_data(&ftdi, buf, BUFFER_SIZE);
233e34bb 48 if(ret < 0) break;
d3b2d1a7 49 if(ret > 0) snd_rawmidi_write(midi_out, buf, BUFFER_SIZE);
233e34bb
TM
50
51 //MIDI2FTDI
d3b2d1a7
TM
52 /*
53 ret = snd_rawmidi_read(midi_in, buf,BUFFER_SIZE);
233e34bb 54 if(ret < 0 && ret != -EAGAIN) break;
d3b2d1a7
TM
55 if(ret > 0) ftdi_write_data(&ftdi, buf,BUFFER_SIZE);
56 */
57 usleep(LATENCY);
233e34bb
TM
58 }
59 exit(0);
60}
This page took 0.17201 seconds and 4 git commands to generate.