Thanks everyone. The inlet_new(…) method of dispatching a bang to a bang2 t_symbol works great. I had to change the class_addmethod a little from the x_time.c example. Not sure why on my build I have to add a t_atomtype (instead of just terminating with a 0) as an argument but this is what I did and it works: class_addmethod(mynamo_class, (t_method)mynamo_generate, gensym("bang2"), A_NULL, 0); Not sure if the A_NULL is allocating memory somewhere, or passing a dummy value to my function but I don't see any errors or leaks. If I see anything I'll report back. I also really like the dummy class method used in the [list] family. I'll try that too at some point. Much appreciated, Rob
On Jul 2, 2014, at 11:56 PM, Miller Puckette <m...@ucsd.edu> wrote: > 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 >> <pd-list@lists.iem.at> 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 >> >> _______________________________________________ >> Pd-list@lists.iem.at mailing list >> UNSUBSCRIBE and account-management -> >> http://lists.puredata.info/listinfo/pd-list > >> _______________________________________________ >> Pd-list@lists.iem.at mailing list >> UNSUBSCRIBE and account-management -> >> http://lists.puredata.info/listinfo/pd-list >
_______________________________________________ Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list