frac32buffer input
frac32 mix
frac32 feedback
frac32buffer output
frac32.u.map mix
frac32.u.map feedback
spinner delaylength
uint32_t delaywindex;
uint32_t delayrindex;
int16_t delayline[attr_delaylength];
int i;
for (i = 0; i < attr_delaylength; i++)
delayline[i] = 0;
delaywindex = 0;
delayrindex = 1;
int32_t _mix = param_mix + inlet_mix;
int32_t _fdbk = param_feedback + inlet_feedback;
int32_t rd = delayline[delayrindex++];
delayline[delaywindex++] =
__SSAT((inlet_in >> 15) + ___SMMUL(rd << 5, _fdbk), 16);
if (delayrindex == attr_delaylength)
delayrindex = 0;
if (delaywindex == attr_delaylength)
delaywindex = 0;
outlet_out = (inlet_in >> 1) + (___SMMUL(rd << 16, _mix << 2));