Hi Yann,

sorry I couldn't reply earlier,

On 08/21, Yann Orlarey wrote:
>
> Hi Oleg,
>
> Thank you for your example. It is very interesting because it shows that it
> is now possible to write pathological Faust programs that cannot be
> executed (without infinite memory)!

Heh. Thanks, I didn't even realize that my example is really interesting ;)
I used ffunction's just to make the generated code more readable, somehow
I din't realize that faust simply can't "unshare" the signal in this case.

So I was wrong, ondemand() already differs from control() as it currently
implemented,

        clk = ffunction(int clk(), "","");
        process = clk : ondemand(ba.time), ba.time;
        
generates the code which looks good to me, while

        clk = ffunction(int clk(), "","");
        process = control(ba.time,clk), ba.time;

compiles to

        virtual void compute (int count, FAUSTFLOAT** input, FAUSTFLOAT** 
output) {
                //zone1
                //zone2
                //zone2b
                //zone3
                FAUSTFLOAT* output0 = output[0];
                FAUSTFLOAT* output1 = output[1];
                //LoopGraphScalar
                for (int i=0; i<count; i++) {
                        iRec0[0] = (iRec0[1] + 1);
                        int     iTemp0 = (iRec0[0] + -1);
                        output0[i] = (FAUSTFLOAT)iTemp0;
                        output1[i] = (FAUSTFLOAT)iTemp0;
                        // post processing
                        iRec0[1] = iRec0[0];
                }
        }

Oleg.



_______________________________________________
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users

Reply via email to