+int MTDM::process (size_t len, float *ip, float *op)
+{
+ int i;
+ float vip, vop, a, c, s;
+ Freq *F;
+
+ while (len--)
+ {
+ vop = 0.0f;
+ vip = *ip++;
+ for (i = 0, F = _freq; i < 13; i++, F++)
+ {
+ a = 2 * (float) M_PI * (F->p & 65535) / 65536.0;
+ F->p += F->f;
+ c = cosf (a);
+ s = -sinf (a);
+ vop += (i ? 0.01f : 0.20f) * s;
+ F->xa += s * vip;
+ F->ya += c * vip;
+ }
+ *op++ = vop;
+ if (++_cnt == 16)