int t_gen_composite(sp_test *tst, sp_data *sp, const char *hash) { uint32_t n; int fail = 0; SPFLOAT out = 0; sp_ftbl *ft; sp_ftbl_create(sp, &ft, 4096); sp_gen_composite(sp, ft, "0.5 0.5 270 0.5"); for(n = 0; n < tst->size; n++) { if(n < ft->size) { out = ft->tbl[n]; } else { out = 0; } sp_test_add_sample(tst, out); } fail = sp_test_verify(tst, hash); sp_ftbl_destroy(&ft); if(fail) return SP_NOT_OK; else return SP_OK; }
int main() { srand(1234567); UserData ud; sp_data *sp; sp_create(&sp); sp_ftbl_loadfile(sp, &ud.wav, "oneart.wav"); sp_ftbl_create(sp, &ud.win, 1024); sp_fog_create(&ud.fog); sp_phasor_create(&ud.phs); sp_gen_composite(sp, ud.win, "0.5 0.5 270 0.5"); sp_fog_init(sp, ud.fog, ud.wav, ud.win, 100, 0); ud.fog->trans = 0.9; sp_phasor_init(sp, ud.phs, 0); ud.phs->freq = 0.3 / ((SPFLOAT)ud.wav->size / sp->sr); sp->len = 44100 * 10; sp_process(sp, &ud, process); sp_fog_destroy(&ud.fog); sp_ftbl_destroy(&ud.wav); sp_ftbl_destroy(&ud.win); sp_phasor_destroy(&ud.phs); sp_destroy(&sp); return 0; }
int sporth_gen_composite(sporth_stack *stack, void *ud) { plumber_data *pd = ud; uint32_t size; sp_ftbl *ft; char *str, *args; switch(pd->mode){ case PLUMBER_CREATE: plumber_add_ugen(pd, SPORTH_GEN_COMPOSITE, NULL); if(sporth_check_args(stack, "sfs") != SPORTH_OK) { fprintf(stderr,"composite: not enough arguments for gen_vals\n"); return PLUMBER_NOTOK; } args = sporth_stack_pop_string(stack); size = (uint32_t)sporth_stack_pop_float(stack); str = sporth_stack_pop_string(stack); sp_ftbl_create(pd->sp, &ft, size); sp_gen_composite(pd->sp, ft, args); plumber_ftmap_add(pd, str, ft); free(args); free(str); break; case PLUMBER_INIT: args = sporth_stack_pop_string(stack); size = (uint32_t)sporth_stack_pop_float(stack); str = sporth_stack_pop_string(stack); free(str); free(args); break; case PLUMBER_COMPUTE: sporth_stack_pop_float(stack); break; case PLUMBER_DESTROY: break; default: fprintf(stderr,"Error: Unknown mode!"); break; } return PLUMBER_OK; }