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

Reply via email to