Commit 8ebe9c5fefcebca02b75398f93b5064e738002fd
1 parent
b8018ff4
analyse midi
Showing
1 changed file
with
57 additions
and
44 deletions
Show diff stats
analyse_midi_keyboard.c
@@ -12,18 +12,23 @@ | @@ -12,18 +12,23 @@ | ||
12 | 12 | ||
13 | 13 | ||
14 | 14 | ||
15 | -#define NUM_PORT 24 | ||
16 | - | ||
17 | -static snd_seq_t *seq; | 15 | +//#define NUM_PORT 20 |
18 | 16 | ||
19 | 17 | ||
18 | +static snd_seq_t *seq; | ||
19 | +int NUM_PORT; | ||
20 | +typedef struct { | ||
21 | + int type; | ||
22 | + int note; | ||
23 | + int velocity; | ||
24 | +} Evenement; | ||
20 | 25 | ||
21 | void recup_num(){ | 26 | void recup_num(){ |
22 | FILE* fd; | 27 | FILE* fd; |
23 | - int num_port; | 28 | + //int NUM_PORT; |
24 | fd=fopen("num_count2.txt","r"); | 29 | fd=fopen("num_count2.txt","r"); |
25 | - fscanf(fd, "%d", &num_port); | ||
26 | - printf("num = %d \n", num_port); | 30 | + fscanf(fd, "%d", &NUM_PORT); |
31 | + printf("num = %d \n", NUM_PORT); | ||
27 | fclose(fd); | 32 | fclose(fd); |
28 | 33 | ||
29 | } | 34 | } |
@@ -46,12 +51,12 @@ static void create_port(void) | @@ -46,12 +51,12 @@ static void create_port(void) | ||
46 | int err; | 51 | int err; |
47 | 52 | ||
48 | err = snd_seq_create_simple_port(seq, "analyseurmidi", | 53 | err = snd_seq_create_simple_port(seq, "analyseurmidi", |
49 | - SND_SEQ_PORT_CAP_WRITE | | ||
50 | - SND_SEQ_PORT_CAP_SUBS_WRITE, | ||
51 | - SND_SEQ_PORT_TYPE_MIDI_GENERIC | | ||
52 | - SND_SEQ_PORT_TYPE_APPLICATION); | 54 | + SND_SEQ_PORT_CAP_WRITE | |
55 | + SND_SEQ_PORT_CAP_SUBS_WRITE, | ||
56 | + SND_SEQ_PORT_TYPE_MIDI_GENERIC | | ||
57 | + SND_SEQ_PORT_TYPE_APPLICATION); | ||
53 | if (err<0) | 58 | if (err<0) |
54 | - printf("Port non créé \n"); | 59 | + printf("Port non créé \n"); |
55 | } | 60 | } |
56 | 61 | ||
57 | static void connect_port(void) | 62 | static void connect_port(void) |
@@ -59,34 +64,39 @@ static void connect_port(void) | @@ -59,34 +64,39 @@ static void connect_port(void) | ||
59 | int err; | 64 | int err; |
60 | err = snd_seq_connect_from(seq, 0, NUM_PORT, 0); | 65 | err = snd_seq_connect_from(seq, 0, NUM_PORT, 0); |
61 | if (err < 0) | 66 | if (err < 0) |
62 | - printf("Impossible de se connecter au port \n"); | ||
63 | - | ||
64 | -} | ||
65 | - | ||
66 | -void action(snd_seq_event_t *event){ | ||
67 | - | ||
68 | - if (event->type == SND_SEQ_EVENT_NOTEON) | ||
69 | - { | ||
70 | - printf("note : %d , velocite : %d\n",event->data.note.note, event->data.note.velocity); | ||
71 | - } | ||
72 | - if (event->type == SND_SEQ_EVENT_NOTEOFF) | ||
73 | - { | ||
74 | - printf("noteOFF : %2d , %d velocite : %d\n", event->data.note.channel, event->data.note.note, event->data.note.velocity); | ||
75 | - } | ||
76 | - if (event->type == SND_SEQ_EVENT_CONTROLLER) | ||
77 | - { | ||
78 | - printf("programme : %2d, %d %d\n", event->data.control.channel, event->data.control.param, event->data.control.value); | ||
79 | - } | 67 | + printf("Impossible de se connecter au port \n"); |
80 | 68 | ||
81 | } | 69 | } |
82 | 70 | ||
83 | -int main(){ | ||
84 | - init_seq(); | ||
85 | - struct pollfd *pfds; | ||
86 | - int npfds, err; | ||
87 | - create_port(); | ||
88 | - connect_port(); | 71 | +Evenement action(snd_seq_event_t *event){ |
72 | + Evenement k; | ||
73 | + if (event->type == SND_SEQ_EVENT_NOTEON) | ||
74 | + { | ||
75 | + k.type=0; | ||
76 | + k.note=event->data.note.note; | ||
77 | + k.velocity=event->data.note.velocity; | ||
78 | + //printf("note : %d , velocite : %d\n",event->data.note.note, event->data.note.velocity); | ||
79 | + return k; | ||
80 | + } | ||
81 | + if (event->type == SND_SEQ_EVENT_NOTEOFF) | ||
82 | + { | ||
83 | + k.type=1; | ||
84 | + k.note=event->data.note.note; | ||
85 | + k.velocity=event->data.note.velocity; | ||
86 | + //printf("noteOFF : %2d , %d velocite : %d\n", event->data.note.channel, event->data.note.note, event->data.note.velocity); | ||
87 | + return k; | ||
88 | + } | ||
89 | +/* if (event->type == SND_SEQ_EVENT_CONTROLLER) | ||
90 | + { | ||
91 | + printf("programme : %2d, %d %d\n", event->data.control.channel, event->data.control.param, event->data.control.value); | ||
92 | + }*/ | ||
93 | + return k; | ||
94 | +} | ||
89 | 95 | ||
96 | +void boucle(){ | ||
97 | + Evenement k; | ||
98 | + struct pollfd *pfds; | ||
99 | + int npfds, err; | ||
90 | npfds = snd_seq_poll_descriptors_count(seq, POLLIN); | 100 | npfds = snd_seq_poll_descriptors_count(seq, POLLIN); |
91 | pfds = alloca(sizeof(*pfds) * npfds); | 101 | pfds = alloca(sizeof(*pfds) * npfds); |
92 | for (;;) { | 102 | for (;;) { |
@@ -99,19 +109,22 @@ int main(){ | @@ -99,19 +109,22 @@ int main(){ | ||
99 | if (err < 0) | 109 | if (err < 0) |
100 | break; | 110 | break; |
101 | if (event) | 111 | if (event) |
102 | - { | 112 | + { |
103 | action(event); | 113 | action(event); |
104 | - } | 114 | + } |
105 | } while (err > 0); | 115 | } while (err > 0); |
106 | fflush(stdout); | 116 | fflush(stdout); |
107 | - } | 117 | + } |
108 | 118 | ||
109 | - | ||
110 | - | ||
111 | - snd_seq_close(seq); | 119 | +} |
112 | 120 | ||
113 | 121 | ||
114 | - recup_num(); | ||
115 | - | ||
116 | - return 0; | 122 | +int lancer(){ |
123 | + recup_num(); | ||
124 | + init_seq(); | ||
125 | + create_port(); | ||
126 | + connect_port(); | ||
127 | + boucle(); | ||
128 | + snd_seq_close(seq); | ||
129 | + return 0; | ||
117 | } | 130 | } |