You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
675 B
37 lines
675 B
#include <stdlib.h> |
|
#include "soundpipe.h" |
|
|
|
int sp_tseq_create(sp_tseq **p) |
|
{ |
|
*p = malloc(sizeof(sp_tseq)); |
|
return SP_OK; |
|
} |
|
|
|
int sp_tseq_destroy(sp_tseq **p) |
|
{ |
|
free(*p); |
|
return SP_OK; |
|
} |
|
|
|
int sp_tseq_init(sp_data *sp, sp_tseq *p, sp_ftbl *ft) |
|
{ |
|
p->ft = ft; |
|
p->pos = -1; |
|
p->val = 0; |
|
p->shuf = 0; |
|
return SP_OK; |
|
} |
|
|
|
int sp_tseq_compute(sp_data *sp, sp_tseq *p, SPFLOAT *trig, SPFLOAT *val) |
|
{ |
|
if(*trig != 0){ |
|
if(p->shuf) { |
|
p->pos = sp_rand(sp) % p->ft->size; |
|
} else { |
|
p->pos = (p->pos + 1) % p->ft->size; |
|
} |
|
p->val = p->ft->tbl[p->pos]; |
|
} |
|
*val = p->val; |
|
return SP_OK; |
|
}
|
|
|