damn, sorry for noise ... On 10/08, Oleg Nesterov wrote: > > // x[maxn] forces faust to create the delay line for the input $x > sliding_sum = FPP(maxn, n, x[maxn]) { > assert($n < $maxn); > float sum = 0; > // yes, yes, this is very suboptimal, just for illustration > for (int i = 0; i < $n; i++) > sum += $x[i]; > sum; > }; > > n = hslider("", 0, 0,10,1); > process = sliding_sum(10, n); > > compiles to > > virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** > outputs) { > FAUSTFLOAT* input0 = inputs[0]; > FAUSTFLOAT* output0 = outputs[0]; > float fSlow0 = float(fHslider0); > for (int i = 0; (i < count); i = (i + 1)) { > fVec0[0] = float(input0[i]); > output0[i] = FAUSTFLOAT(float(({ assert(n < maxn); > float sum = 0; for (int i = 0; i < fSlow0; i++) sum += fVec0[n]; sum; })));
Just in case... this code is obviously wrong because "sliding_sum" above had some typos initially and I forgot to run fpp again after I fixed the errors. So it actually compiles to virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { FAUSTFLOAT* input0 = inputs[0]; FAUSTFLOAT* output0 = outputs[0]; float fSlow0 = float(fHslider0); for (int i = 0; (i < count); i = (i + 1)) { fVec0[0] = float(input0[i]); output0[i] = FAUSTFLOAT(float(({ assert(fSlow0 < 10); float sum = 0; for (int i = 0; i < fSlow0; i++) sum += fVec0[i]; sum; }))); for (int j0 = 10; (j0 > 0); j0 = (j0 - 1)) { fVec0[j0] = fVec0[(j0 - 1)]; } } } Oleg. _______________________________________________ Faudiostream-devel mailing list Faudiostream-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-devel