normalizeFixedDelayTerm() does if (isSigFixDelay(s, x, y) return normalizeFixedDelayTerm(x, simplify(sigAdd(d, y)));
but this is only correct if both d and y have computability() < kExec. IOW, the (x@n)@m = x@(n+m) comment is wrong otherwise, in general (x@n)@m is equivalent to x@( n@m + m ), so I think that faust should actually create another delay line for @m if n or m is not constant, OK, I'm afraid my explanation is confusing and not convincing, let me provide a test-case. z1 = ro.cross(2) ~ _ : !,_; simply reimplements the mem() primitive but always creates xRec line. Now, any_signal <: mem : z1 :> -; should always output 0, no matter what "any_signal" actually does. However, z1 = ro.cross(2) ~ _ : !,_; delay = sin(no.noise) + 1 : *(10) : int; process = ba.time : @(delay) <: mem, z1; doesn't output the same value in output0/output1, and this is not actually right, I think. Not that I think this is really bad, this case is exotic and perhaps can be ignored, but still. Oleg. _______________________________________________ Faudiostream-users mailing list Faudiostream-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/faudiostream-users