Commit 8ebe9c5fefcebca02b75398f93b5064e738002fd

Authored by aarnaude
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 }