On 11/13, Karl Schultheisz via Faudiostream-users wrote: > > process = os.osc(55) : rwtable(1024, 0.1, 42, _, 42); > > The result, as demonstrated using faustide, is that the hypothesis is wrong. > The output signal is a constant 0.1, not a 55Hz sinusoid.
I think this is a bug. faust wrongly assumes that if ridx is constant then the output is constant too. Perhaps this is because Tree sigWriteReadTable(Tree n, Tree init, Tree widx, Tree wsig, Tree ridx) { return sigRDTbl(sigWRTbl(gGlobal->nil, sigTable(gGlobal->nil, n, sigGen(init)), widx, wsig), ridx); } and the optimization above is valid for sigRDTbl. For example, process = rwtable(1024, 0.0, ffunction(int widx(),"",""), _, 0); compiles to virtual void instanceConstants(int sample_rate) { fSampleRate = sample_rate; mydspSIG0* sig0 = newmydspSIG0(); sig0->instanceInitmydspSIG0(sample_rate); sig0->fillmydspSIG0(1024, ftbl0); fConst0 = ftbl0[0]; deletemydspSIG0(sig0); } virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { FAUSTFLOAT* input0 = inputs[0]; FAUSTFLOAT* output0 = outputs[0]; for (int i = 0; (i < count); i = (i + 1)) { ftbl0[int(widx())] = float(input0[i]); output0[i] = FAUSTFLOAT(fConst0); } } Oleg. _______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users