[PD] unexpected [array max] and [array min] behavior
Matt Barber
brbrofsvl at gmail.com
Sat Sep 5 01:46:30 CEST 2015
Thanks.
I meant to say that there was the same problem in [array min], but you
probably caught it in your fix.
Best,
Matt
On Fri, Sep 4, 2015 at 7:19 PM, Miller Puckette <msp at ucsd.edu> wrote:
> Yep... thanks. Fixed in git - may take some time for me to get out a new
> compiled version (other stuff to fix too :)
>
> M
>
>
> On Fri, Sep 04, 2015 at 05:51:15PM -0400, Matt Barber wrote:
> > Hi list,
> >
> > I've been playing around with the new(ish) [array] object suite in
> vanilla
> > 0.46.6. Forgive me if this is already a known issue, but it looks like
> the
> > min and max arguments aren't working properly.
> >
> > The second inlet (setting the number of points to search) works as
> > expected. The first inlet doesn't update: it seems to be set to 0 no
> matter
> > what (although the index outlet is updated, but not as expected).
> >
> > I think I see the problem in x_array.c
> >
> > The max object is defined line 723:
> >
> > typedef struct _array_max
> > {
> > t_array_rangeop x_rangeop;
> > t_outlet *x_out1; /* value */
> > t_outlet *x_out2; /* index */
> > int x_onset; /* search onset */
> > } t_array_max;
> >
> >
> > And the bang and float methods starting 740:
> >
> > static void array_max_bang(t_array_max *x)
> > {
> > char *itemp, *firstitem;
> > int stride, nitem, i, besti;
> > t_float bestf;
> > if (!array_rangeop_getrange(&x->x_rangeop, &firstitem, &nitem,
> &stride))
> > return;
> > for (i = 0, besti = 0, bestf= -1e30, itemp = firstitem;
> > i < nitem; i++, itemp += stride)
> > if (*(t_float *)itemp > bestf)
> > bestf = *(t_float *)itemp, besti = i;
> > outlet_float(x->x_out2, besti+x->x_onset);
> > outlet_float(x->x_out1, bestf);
> > }
> >
> > static void array_max_float(t_array_max *x, t_floatarg f)
> > {
> > x->x_onset = f;
> > array_max_bang(x);
> > }
> >
> >
> > In the float method it looks like the onset is never actually assigned in
> > the x_rangeop member of the t_array_max struct, so array_rangeop_getrange
> > can't set the firstitem pointer to anything but its init value.
> >
> >
> > Thanks,
> >
> > Matt
>
> > _______________________________________________
> > Pd-list at lists.iem.at mailing list
> > UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20150904/b301b168/attachment-0001.html>
More information about the Pd-list
mailing list