1 #include "soundpipe.h"
2 #include "md5.h"
3 #include "tap.h"
4 #include "test.h"
5
6 typedef struct {
7 sp_tseg *tseg;
8 sp_osc *osc;
9 sp_ftbl *ft;
10 } UserData;
11
t_tseg(sp_test * tst,sp_data * sp,const char * hash)12 int t_tseg(sp_test *tst, sp_data *sp, const char *hash)
13 {
14 uint32_t n;
15 int fail = 0;
16 sp_srand(sp, 1234567);
17 UserData ud;
18 SPFLOAT osc = 0, tseg = 0;
19 SPFLOAT trig = (sp->pos == 0);
20
21 sp_tseg_create(&ud.tseg);
22 sp_osc_create(&ud.osc);
23 sp_ftbl_create(sp, &ud.ft, 2048);
24
25 sp_tseg_init(sp, ud.tseg, 0.0001);
26 ud.tseg->end = 1.0;
27 ud.tseg->type = 3.0;
28 ud.tseg->dur = 4.0;
29
30 sp_gen_sine(sp, ud.ft);
31 sp_osc_init(sp, ud.osc, ud.ft, 0);
32
33 for(n = 0; n < tst->size; n++) {
34 osc = 0;
35 tseg = 0;
36 trig = (sp->pos == 0);
37 sp_tseg_compute(sp, ud.tseg, &trig, &tseg);
38 ud.osc->freq = 100 + (tseg * 1000);
39 sp_osc_compute(sp, ud.osc, NULL, &osc);
40 sp_test_add_sample(tst, osc);
41 }
42
43 fail = sp_test_verify(tst, hash);
44
45 sp_tseg_destroy(&ud.tseg);
46 sp_ftbl_destroy(&ud.ft);
47 sp_osc_destroy(&ud.osc);
48
49 if(fail) return SP_NOT_OK;
50 else return SP_OK;
51 }
52