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