On Mon, 5 Jan 2009, marius schebella wrote:
- the position of the objects is actually not really interesting for
the pd engine. neither are comments or subpatches.
I'd like to say that object positions do not matter, but [inlet] and [outlet] still depend on their x-coordinate to sort themselves. Again the solution would be to add an inlet-number or outlet-number as argument of those objects, but [inlet~] and [outlet~] already have optional arguments, and some people use the arguments of [inlet] and [outlet] to write comments as symbols because those arguments are ignored instead of forbidden.
- there is no way to add and delete objects. and I think this is not
only becaue it is not possible to access the total number of objects inside a canvas or their individual IDs. there is no communication from the Pd engine to the outside world.
It's easy to access the total number of objects as an external. For example:
#include <m_pd.h> #include "g_canvas.h" typedef struct {t_object o; t_canvas *c;} t_objectcount; static t_class *objectcount_class; t_pd *objectcount_new (void) { t_objectcount *self = (t_objectcount *)pd_new(objectcount_class); self->c=canvas_getcurrent(); outlet_new((t_object *)self,0); return (t_pd *)self; } void objectcount_bang(t_objectcount *self) { int i=0; t_gobj *o = self->c->gl_list; while (o) {i++; o=o->g_next;} outlet_float(self->o.te_outlet,i); } void objectcount_setup (void) { objectcount_class=class_new(gensym("objectcount"), (t_newmethod)objectcount_new,0,sizeof(t_objectcount),0,0); class_addbang(objectcount_class,objectcount_bang); }
And this is very short for a C external.
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801, Montréal, Québec