/[paths]/src/main.c
ViewVC logotype

Diff of /src/main.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 32 by ben, Sat Aug 18 15:25:03 2012 UTC revision 33 by ben, Sat Aug 18 16:14:15 2012 UTC
# Line 117  static int jack_process_callback(jack_nf Line 117  static int jack_process_callback(jack_nf
117                  for (inst = 0; inst < app->count; inst++) {                  for (inst = 0; inst < app->count; inst++) {
118                          if (app->instruments[inst].end >= app->instruments[inst].count) {                          if (app->instruments[inst].end >= app->instruments[inst].count) {
119                                  app->end++;                                  app->end++;
120                                  fprintf(stderr, "instrument %d ended (%d voices)\n", inst, app->instruments[inst].end);                                  fprintf(stderr, "instrument ended (%d voices)\n", app->instruments[inst].end);
121                                  continue;                                  continue;
122                          }                          }
123                          if (app->instruments[inst].prog != last_prog) {                          if (app->instruments[inst].prog != last_prog) {
# Line 135  static int jack_process_callback(jack_nf Line 135  static int jack_process_callback(jack_nf
135                                  int *cur = &app->instruments[inst].voices[voice].cur;                                  int *cur = &app->instruments[inst].voices[voice].cur;
136                                  if (*cur >= app->instruments[inst].voices[voice].count) {                                  if (*cur >= app->instruments[inst].voices[voice].count) {
137                                          app->instruments[inst].end++;                                          app->instruments[inst].end++;
138                                          fprintf(stderr, "voice %d ended (%d notes)\n", voice, *cur);                                          fprintf(stderr, "voice ended (%d notes)\n", *cur);
139                                          continue;                                          continue;
140                                  }                                  }
141                                  struct event *ev = &app->instruments[inst].voices[voice].route[*cur];                                  struct event *ev = &app->instruments[inst].voices[voice].route[*cur];
# Line 198  int main (int argc, char *argv[]) Line 198  int main (int argc, char *argv[])
198  {  {
199          struct graph *graph;          struct graph *graph;
200          struct instrument instrument;          struct instrument instrument;
201          struct voice voice;          struct voice voice1;
202            struct voice voice2;
203          struct jack jack;          struct jack jack;
204          struct app app;          struct app app;
205    
# Line 218  int main (int argc, char *argv[]) Line 219  int main (int argc, char *argv[])
219          app.instruments = &instrument;          app.instruments = &instrument;
220          app.count = 1;          app.count = 1;
221    
222          /* create a random route (lol) */          /* create 2 random routes à la Nancarrow */
223          memset(&voice, 0, sizeof(voice));          memset(&voice1, 0, sizeof(voice1));
224          voice.route = malloc(graph->count * sizeof(*voice.route));          voice1.route = malloc(graph->count * sizeof(*voice1.route));
225          voice.count = graph->count;          voice1.count = graph->count;
226          for (i = 0; i < voice.count; i++)          for (i = 0; i < voice1.count; i++)
227                  voice.route[i] = graph->nodes[i].event;                  voice1.route[i] = graph->nodes[i].event;
228          instrument.voices[0] = voice;  
229          instrument.count = 1;          memset(&voice2, 0, sizeof(voice2));
230            voice2.route = malloc(graph->count * sizeof(*voice2.route));
231            voice2.count = graph->count;
232            for (i = 0; i < voice2.count; i++)
233                    voice2.route[i] = graph->nodes[graph->count - i].event;
234    
235            instrument.voices[0] = voice1;
236            instrument.voices[1] = voice2;
237            instrument.count = 2;
238    
239          /* mark it (...) */          /* mark it (...) */
240          app.instruments[0].chan = 0;          app.instruments[0].chan = 0;
241          app.instruments[0].prog = 0;          app.instruments[0].prog = 0;
242          app.instruments[0].voices[0].route[0].pitch = 42;          app.instruments[0].voices[0].route[0].pitch = 42;
243          app.instruments[0].voices[0].route[0].duration = 4200000;          app.instruments[0].voices[0].route[0].duration = 4200000;
244            app.instruments[0].voices[1].route[0].pitch = 43;
245            app.instruments[0].voices[1].route[0].duration = 4300000;
246    
247          /* init jack */          /* init jack */
248          jack.client = jack_client_open(PACKAGE_NAME, JackNullOption, NULL);          jack.client = jack_client_open(PACKAGE_NAME, JackNullOption, NULL);
# Line 275  int main (int argc, char *argv[]) Line 286  int main (int argc, char *argv[])
286    
287    
288          fprintf(stderr, "==========\n");          fprintf(stderr, "==========\n");
289          /* start playing (event loop) */          /* start playing (event loop will sometime appear here) */
290          sleep(60);          while (1)
291                    sleep(1);
292          fprintf(stderr, "==========\n");          fprintf(stderr, "==========\n");
293                    
294          /* close jack */          /* close jack */
295          jack_client_close (jack.client);          jack_client_close (jack.client);
296    
297          /* exit */          /* exit */
298          free(voice.route);          free(voice1.route);
299            free(voice2.route);
300          graph_destroy(graph);          graph_destroy(graph);
301    
302          exit(EXIT_SUCCESS);          exit(EXIT_SUCCESS);

Legend:
Removed from v.32  
changed lines
  Added in v.33

  ViewVC Help
Powered by ViewVC 1.1.26