Hello,

I am wondering if it makes any sense to generalize ba.parallelOp,
something like

        parallelOp(op,1) = si.bus(outputs(op));
        parallelOp(op,2) = op;
        parallelOp(op,n) = parallelOp(op,n-1), si.bus(inputs(op)-outputs(op)) : 
op;

then we can do

        i_max(n) = par(i,n, (i,_)) : parallelOp(op,n) with {
                op(i1,v1,i2,v2) = select2(v2>v1,i1,i2), max(v1,v2);
        };

for example

        process = 3,2,4,6,2 : i_max(5);

outputs

        output0[i0] = FAUSTFLOAT(3);    // index
        output1[i0] = FAUSTFLOAT(6);    // maximum

probably not.

Oleg.

On 05/25, Yann Orlarey wrote:
>
> Hi Daz,
>
> You did nothing wrong! I could compile it with the command line compiler,
> but I should have also tested it with the IDE.
>
> Here is a better and faster solution because, instead of a tree of depth N,
> it creates a more balanced tree of depth log(N):
>
> foo(n) = f(n,n-1) with {
> f(1,c) = c,_;
> f(2,c) = c-1,_,c,_ : major;
> f(n,c) = f(n1,c-n2), f(n2,c) : major with {
> n1 = int(n/2);
> n2 = n-n1;
> };
> major(c1,v1,c2,v2) = select2(v1>v2, c2, c1), max(v1,v2);
> };
>
> Cheers
>
> Yann
>
>
>
> Le jeu. 25 mai 2023 à 02:29, Daz Man <dazd...@hotmail.com> a écrit :
>
> > Hi Yann,
> >
> > Easier for some than others... 🙂  But...
> >
> > That code produces errors from "too much recursion" or "stack overflow"
> > when run in the Faust online editor or in FaustLive. Did I perhaps use it
> > wrongly?
> >
> > I did receive another reply from Bart, pointing to this slightly different
> > function that I appear to have working, after changing my input and output
> > formats to suit:
> >
> > https://github.com/magnetophon/faustExperiments/blob/0d2735bc4900dc4e51da24fb8ee05e49d44eb73c/acor.dsp#L76
> >
> > Thanks,
> > Daz
> >
> > ------------------------------
> > *From:* Yann Orlarey <orla...@grame.fr>
> > *Sent:* Thursday, 25 May 2023 8:45 AM
> > *To:* Daz Man <dazd...@hotmail.com>
> > *Subject:* Re: [Faudiostream-users] Find N of greatest input
> >
> > Hi Daz,
> >
> > Such a function is not difficult to write:
> >
> > foo(1) = 0,_;
> > foo(n) = foo(n-1), n-1,_ : major with {
> > major(c1,v1,c2,v2) = ba.if(v1>v2, c1, c2), max(v1,v2);
> > };
> >
> > Cheers
> >
> > Yann
> >
> >
> > Le mar. 23 mai 2023 à 19:29, Daz Man <dazd...@hotmail.com> a écrit :
> >
> > Hi all,
> >
> > I need a function that compares 257 parallel inputs and returns the input
> > N with the greatest positive value. (ie: which input has the biggest
> > amplitude)
> > What's the best way to do this?
> > I looked at parallelMax, but it doesn't appear to return which of the N
> > inputs was used for the max.
> >
> > Thanks,
> > Daz
> > _______________________________________________
> > Faudiostream-users mailing list
> > Faudiostream-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/faudiostream-users
> >
> >


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




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

Reply via email to