Hi all -
The easiest way to do this is the way the timer object does it (see
timer_new() in x_time.c) - the line that creates the inlet is:
inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("bang"), gensym("bang2"));
... then when teh inlet get a bang, it calls timer's "bang2" method. (The
timer object itself responds to that inlet by generatng output, contrary to
all other Pd objects - but the method isn't obliged to do that, and probably
in general it shouldn't.)
cheers
Miller
On Wed, Jul 02, 2014 at 07:43:45PM -0700, Jonathan Wilkes via Pd-list wrote:
> Hi Rob,
> If you look at the code for floatinlet_new and friends, you'll see they all
> create an inlet and then associate it with the addy of member variable. If
> there were a banginlet_new, it could certainly create the inlet on behalf of
> your object, but what would it store? Bang doesn't have a value associated
> with it. To be philosophical about it, the only thing a banginlet could
> store is that is stores nothing. :)
>
> However, if what you are after is a subsidiary inlet (one with a nonzero
> index) that has a bang method, you have to use what is called a proxy inlet.
> See the code for [list append] or [list prepend] in x_list.c. I think both
> have a secondary (or "proxy") object that receives messages associated with
> the right inlet of the respective list object. Once you set it up you just
> add whatever method you want to your proxy class and everything should work.
>
> It would be nice if there were a convenience function that made this easier.
> (Or maybe there is and I'm missing it.)
>
> -Jonathan
>
>
>
>
> On Wednesday, July 2, 2014 6:58 PM, Robert Esler via Pd-list
> <[email protected]> wrote:
>
>
>
> Hello everyone,
> My intention is to have an external with an active inlet that accepts a
> bang and at least one passive inlet that also accepts a bang. The active
> inlet works fine. However, I don't see an equivalent function call for
> passive bang inlets similar to creating a passive float inlet, e.g
> floatinlet_new(t_object *owner, t_float *fp);
> I have tried using symbolinlet_new(…)but cannot seem to get it to recognize
> a bang without an error, inlet: expected 'symbol' but got 'bang'. I have
> also tried the inlet_new(…) but do not get the desired results.
> I'm stuck. If anyone has any suggestions I'd love to hear them.
> Thanks for the time.
> Rob Esler
>
> _______________________________________________
> [email protected] mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
> _______________________________________________
> [email protected] mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list