1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <time.h>
4 #include "soundpipe.h"
5 
6 typedef struct {
7     sp_tseg *tseg;
8     sp_osc *osc;
9     sp_ftbl *ft;
10 } UserData;
11 
process(sp_data * sp,void * udata)12 void process(sp_data *sp, void *udata) {
13     UserData *ud = udata;
14     SPFLOAT osc = 0, tseg = 0;
15     SPFLOAT trig = (sp->pos == 0);
16     sp_tseg_compute(sp, ud->tseg, &trig, &tseg);
17     ud->osc->freq = 100 + (tseg * 1000);
18     sp_osc_compute(sp, ud->osc, NULL, &osc);
19     sp->out[0] = osc;
20 }
21 
main()22 int main() {
23     srand(1234567);
24     UserData ud;
25     sp_data *sp;
26     sp_create(&sp);
27 
28     sp_tseg_create(&ud.tseg);
29     sp_osc_create(&ud.osc);
30     sp_ftbl_create(sp, &ud.ft, 2048);
31 
32     sp_tseg_init(sp, ud.tseg, 0.0001);
33     ud.tseg->end = 1.0;
34     ud.tseg->type = 3.0;
35     ud.tseg->dur = 4.0;
36 
37     sp_gen_sine(sp, ud.ft);
38     sp_osc_init(sp, ud.osc, ud.ft, 0);
39 
40     sp->len = 44100 * 5;
41     sp_process(sp, &ud, process);
42 
43     sp_tseg_destroy(&ud.tseg);
44     sp_ftbl_destroy(&ud.ft);
45     sp_osc_destroy(&ud.osc);
46 
47     sp_destroy(&sp);
48     return 0;
49 }
50