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
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-users