On Fri, 8 Apr 2005, Florian Grond wrote:
I' ve managed to program simple objects for pd so far where inlets and outlets were only scalars. But the amount of numbers I want to send out increased and it makes no sense to have for everything an outlet: Could anybody briefly tell me how to output a list through an outlet, say a list, containing three floats. In particular, how to I have to change these lines? x->list_out = outlet_new(&x->x_obj, &s_???????????????); outlet_???????(x->list_out, x->???????????); A quick reply would be very appreciated,
from include/m_pd.h:
EXTERN void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv); EXTERN void outlet_anything(t_outlet *x, t_symbol *s, int argc, t_atom *argv);
So that to do like a msgbox containing "2 3 5 7" you could do:
t_atom t[4]; SETFLOAT(t[0],2); SETFLOAT(t[1],3); SETFLOAT(t[2],5); SETFLOAT(t[3],7); outlet_anything(my_outlet,gensym("list"),sizeof(t)/sizeof(t_atom),t);
but i don't know why outlet_list has a t_symbol *s argument, and i never used it. (I also am using a wrapper, and mine only ever uses outlet_anything)
PS: I just had a look at the source code of Pd and it seems that the s of outlet_list is just ignored, that is, just assumed to be gensym("list"). that's somewhat confusing, but for compatibility, the s argument can't be removed.
,-o---------o---------o---------o-. ,----. |
| The Diagram is the Program (TM) | | ,-o----------------------------o-.
-o-----------------------------o-' | | Mathieu Bouchard | | |---' | http://artengine.ca/matju | | |
-o------------------------------'