diff options
| -rw-r--r-- | examples/seq.c | 48 | 
1 files changed, 32 insertions, 16 deletions
| diff --git a/examples/seq.c b/examples/seq.c index 1482ac3..492c53b 100644 --- a/examples/seq.c +++ b/examples/seq.c @@ -14,6 +14,15 @@  #include <xas/drone.h>  #include <xas/seq.h> +struct sequence { +    size_t speech_part; + +    int single_iterations, +        unison_iterations; + +    xas_drone_chamber_interval *intervals; +}; +  static void usage(int argc, char **argv, const char *message, ...) {      va_list args; @@ -141,14 +150,11 @@ int main(int argc, char **argv) {          { {  0, 0 },   0,   0, XAS_SYNTH_SINE, XAS_SYNTH_SINE }      }; -    struct { -        size_t speech_part; -        xas_drone_chamber_interval *intervals; -    } sequences[] = { -        { 0, intro  }, -        { 1, middle }, -        { 2, ingest }, -        { 3, climax } +    struct sequence sequences[] = { +        { 0, 3, 1, intro  }, +        { 1, 0, 4, middle }, +        { 2, 1, 0, ingest }, +        { 3, 1, 2, climax }      };      xas_drone *drone, @@ -159,7 +165,7 @@ int main(int argc, char **argv) {      struct timeval cur = { 0, 0 },                     tmp; -    size_t part; +    int s;      if (argc != 2) {          usage(argc, argv, "No output file provided"); @@ -210,8 +216,10 @@ int main(int argc, char **argv) {      timerclear(&cur); -    for (part=0; part<4; part++) { -        xas_drone_chamber_interval *intervals = sequences[part].intervals; +    for (s=0; s<4; s++) { +        struct sequence sequence = sequences[s]; + +        xas_drone_chamber_interval *intervals = sequence.intervals;          int i;          tmp = cur; @@ -226,11 +234,11 @@ int main(int argc, char **argv) {          cur = tmp; -        for (i=0; i<2; i++) { +        for (i=0; i<sequence.single_iterations; i++) {              if (xas_drone_chamber_seq_speech(chamber,                                                 drone,                                                 seq, -                                               part, +                                               s,                                                 &cur) < 0) {                  goto error_seq;              } @@ -238,22 +246,30 @@ int main(int argc, char **argv) {              if (xas_drone_chamber_seq_speech(chamber,                                                 nurse,                                                 seq, -                                               part, +                                               s,                                                 &cur) < 0) {                  goto error_seq;              }          } -        for (i=0; i<2; i++) { +        for (i=0; i<sequence.unison_iterations; i++) {              if (xas_drone_chamber_seq_chorus(chamber,                                                 seq, -                                               part, +                                               s,                                                 &cur) < 0) {                  goto error_seq;              }          }      } +    if (xas_drone_chamber_seq_intervals(chamber, +                                            sequences[3].intervals, +                                            seq, +                                            8, +                                            &cur) < 0) { +        goto error_seq; +    } +      xas_seq_add_stop(seq, cur);      xas_seq_play(seq, wave); | 
 
    