On 02/15, Julius Smith wrote:
>
> Along these lines, we could have a more efficient impulse as well.  We
> presently use this all over the place:
>
> process = 1-1';
> =>
> for (int i = 0; (i < count); i = (i + 1)) {
>   iVec0[0] = 1;
>   output0[i] = FAUSTFLOAT((1 - iVec0[1]));
>   iVec0[1] = iVec0[0];
> }

Yes,

        impulse = FPP() int {
        decl:   int imp = 1;
        post:   imp = 0;
        exec:   imp;
        };

        process = impulse;

=>

        class mydsp : public dsp {
         private:
                
                int imp = 1;

        ...

        virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** 
outputs) {
                FAUSTFLOAT* output0 = outputs[0];
                for (int i = 0; (i < count); i = (i + 1)) {
                        output0[i] = FAUSTFLOAT(imp);
                        
                        imp = 0;
                }
        }

looks better ;)

in any case 1-1' looks suboptimal. prefix(1,0) makes more sense and it
could generate the same code. I am a bit surprised it doesn't... Plus
it is always broken. Say,

        prefix(1) : mem;

leads to

        ERROR : no vector name for : prefix(1,IN[0])

Oleg.



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

Reply via email to