diff options
Diffstat (limited to 'tran/delaycv.alg')
-rw-r--r-- | tran/delaycv.alg | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tran/delaycv.alg b/tran/delaycv.alg new file mode 100644 index 0000000..5823dbd --- /dev/null +++ b/tran/delaycv.alg @@ -0,0 +1,19 @@ +(DELAYCV-ALG +(NAME "delaycv") +(ARGUMENTS ("sound_type" "s") ("time_type" "delay") ("sound_type" "feedback")) +(START (MAX s feedback)) +(STATE ("long" "delaylen" "round(s->sr * delay)") + ("sample_type *" "delaybuf" + "(sample_type *) calloc (sizeof(double), susp->delaylen)") + ("sample_type *" "delayptr" "susp->delaybuf") + ("sample_type *" "endptr" "susp->delaybuf + susp->delaylen")) +(CONSTANT "delaylen" "delaybuf") +(NOT-REGISTER delaybuf) +(LINEAR s) +(TERMINATE (MIN s)) +(INNER-LOOP "output = *delayptr; + *delayptr = *delayptr * feedback + s; + if (++delayptr >= endptr) delayptr = susp->delaybuf;") +(FINALIZATION "free(susp->delaybuf);") +) + |