Example #1
0
static void new_inlet_list(t_inlet *x, t_symbol *s, int argc, t_atom *argv)
{
    if (x->i_symfrom == &s_list || x->i_symfrom == &s_float || x->i_symfrom == &s_symbol || x->i_symfrom == &s_pointer)
        typedmess(x->i_dest, x->i_un.iu_symto, argc, argv);
    else if (*x->i_dest == eproxy_class)
    {
        t_eproxy* proxy = (t_eproxy *)x->i_dest;
        t_eobj *z = (t_eobj *)proxy->p_owner;
        z->o_current_proxy = proxy->p_index;
        pd_typedmess((t_pd *)x->i_dest, s, argc, argv);
        z->o_current_proxy = 0;
    }
    else if (!x->i_symfrom)
    {
        typedmess(x->i_dest, s, argc, argv);
        //pd_list(x->i_dest, s, argc, argv);
    }
    else if (!argc)
        new_inlet_bang(x);
    else if (argc==1 && argv->a_type == A_FLOAT)
        new_inlet_float(x, atom_getfloat(argv));
    else if (argc==1 && argv->a_type == A_SYMBOL)
        new_inlet_symbol(x, atom_getsymbol(argv));
    else inlet_wrong(x, &s_list);

}
Example #2
0
static void iem_event_key(void *z, t_floatarg fkey)
{
  t_iem_event *x = z;
  char c = (char)fkey;
  
  if(x->x_gui.x_fsf.x_change)
  {
    if((c==0))
    {
      x->x_gui.x_fsf.x_change = 0;
    }
    else if((c=='\n')||(c==13))
    {
      x->x_gui.x_fsf.x_change = 0;
      SETFLOAT(x->x_at_out, 0.0f);
      outlet_anything(x->x_gui.x_obj.ob_outlet, x->x_key, 1, x->x_at_out);
      if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
        typedmess(x->x_gui.x_snd->s_thing, x->x_key, 1, x->x_at_out);
    }
    else if((c=='\b')||(c==127))
    {
      SETFLOAT(x->x_at_out, 127.0f);
      outlet_anything(x->x_gui.x_obj.ob_outlet, x->x_key, 1, x->x_at_out);
      if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
        typedmess(x->x_gui.x_snd->s_thing, x->x_key, 1, x->x_at_out);
    }
    else
    {
      SETFLOAT(x->x_at_out, fkey);
      outlet_anything(x->x_gui.x_obj.ob_outlet, x->x_key, 1, x->x_at_out);
      if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
        typedmess(x->x_gui.x_snd->s_thing, x->x_key, 1, x->x_at_out);
    }
  }
}
Example #3
0
static void inlet_anything(t_inlet *x, t_symbol *s, int argc, t_atom *argv)
{
    if (x->i_symfrom == s)
        typedmess(x->i_dest, x->i_symto, argc, argv);
    else if (!x->i_symfrom)
        typedmess(x->i_dest, s, argc, argv);
    else inlet_wrong(x, s);
}
Example #4
0
void max_jit_op_int(t_max_jit_op *x, long c)
{
	t_atom a;

	jit_atom_setlong(&a,c);
	typedmess(x,_jit_sym_val,1,&a);
}
Example #5
0
File: m_class.c Project: toto/ipd
    /* this routine is called when a new "object" is requested whose class Pd
    doesn't know.  Pd tries to load it as an extern, then as an abstraction. */
void new_anything(void *dummy, t_symbol *s, int argc, t_atom *argv)
{
    t_pd *current;
    int fd;
    char dirbuf[MAXPDSTRING], *nameptr;
    if (tryingalready) return;
    newest = 0;
    class_loadsym = s;
    if (sys_load_lib(canvas_getcurrent(), s->s_name))
    {
        tryingalready = 1;
        typedmess(dummy, s, argc, argv);
        tryingalready = 0;
        return;
    }
    class_loadsym = 0;
    current = s__X.s_thing;
    if ((fd = canvas_open(canvas_getcurrent(), s->s_name, ".pd",
        dirbuf, &nameptr, MAXPDSTRING, 0)) >= 0 ||
            (fd = canvas_open(canvas_getcurrent(), s->s_name, ".pat",
                dirbuf, &nameptr, MAXPDSTRING, 0)) >= 0)
    {
        close (fd);
        if (!pd_setloadingabstraction(s))
        {
            canvas_setargs(argc, argv);
            binbuf_evalfile(gensym(nameptr), gensym(dirbuf));
            if (s__X.s_thing != current)
                canvas_popabstraction((t_canvas *)(s__X.s_thing));
            canvas_setargs(0, 0);
        }
        else error("%s: can't load abstraction within itself\n", s->s_name);
    }
    else newest = 0;
}
Example #6
0
void max_jit_op_float(t_max_jit_op *x, double f)
{
	t_atom a;

	jit_atom_setfloat(&a,f);
	typedmess(x,_jit_sym_val,1,&a);
}
Example #7
0
/////////////////////////////////////////////////////////
// render
//
/////////////////////////////////////////////////////////
void GemMan :: renderChain(t_symbol*s, bool start){
  if(s->s_thing) {
    t_atom ap[1];
    SETFLOAT(ap, start);
    typedmess(s->s_thing, gensym("gem_state"), 1, ap);
  }
}
Example #8
0
    /* this routine is called when a new "object" is requested whose class Pd
    doesn't know.  Pd tries to load it as an extern, then as an abstraction. */
void new_anything(void *dummy, t_symbol *s, int argc, t_atom *argv)
{
    int fd;
    char dirbuf[MAXPDSTRING], classslashclass[MAXPDSTRING], *nameptr;
    if (tryingalready>MAXOBJDEPTH){
      error("maximum object loading depth %d reached", MAXOBJDEPTH);
      return;
    }
    if (s == &s_anything){
      error("object name \"%s\" not allowed", s->s_name);
      return;
    }
    pd_this->pd_newest = 0;
    class_loadsym = s;
    pd_globallock();
    if (sys_load_lib(canvas_getcurrent(), s->s_name))
    {
        tryingalready++;
        typedmess(dummy, s, argc, argv);
        tryingalready--;
        return;
    }
    class_loadsym = 0;
    pd_globalunlock();
}
Example #9
0
static void sendcanvas_anything(t_sendcanvas *x, t_symbol*s, int argc, t_atom*argv)
{
  if(0==x->x_pd)
    return;

  typedmess(x->x_pd, s, argc, argv);
}
Example #10
0
void pd_vmess(t_pd *x, t_symbol *sel, char *fmt, ...)
{
    va_list ap;
    t_atom arg[MAXPDARG], *at =arg;
    int nargs = 0;
    char *fp = fmt;

    va_start(ap, fmt);
    while (1)
    {
    	if (nargs > MAXPDARG)
    	{
    	    pd_error(x, "pd_vmess: only %d allowed", MAXPDARG);
    	    break;
    	}
    	switch(*fp++)
    	{
    	case 'f': SETFLOAT(at, va_arg(ap, double)); break;
    	case 's': SETSYMBOL(at, va_arg(ap, t_symbol *)); break;
    	case 'i': SETFLOAT(at, va_arg(ap, t_int)); break;	
    	case 'p': SETPOINTER(at, va_arg(ap, t_gpointer *)); break;
    	default: goto done;
    	}
    	at++;
    	nargs++;
    }
done:
    va_end(ap);
    typedmess(x, sel, nargs, arg);
}
Example #11
0
static void new_inlet_anything(t_inlet *x, t_symbol *s, int argc, t_atom *argv)
{
    if (x->i_symfrom == s)
        typedmess(x->i_dest, x->i_un.iu_symto, argc, argv);
    else if (!x->i_symfrom)
        typedmess(x->i_dest, s, argc, argv);
    else if (*x->i_dest == eproxy_class)
    {
        t_eproxy* proxy = (t_eproxy *)x->i_dest;
        t_eobj *z = (t_eobj *)proxy->p_owner;
        z->o_current_proxy = proxy->p_index;
        pd_typedmess((t_pd *)x->i_dest, s, argc, argv);
        z->o_current_proxy = 0;
    }
    else inlet_wrong(x, s);
}
void max_xray_jit_levelsetseg_float(t_max_xray_jit_levelsetseg *x, double f)
{
	t_atom a;

	jit_atom_setfloat(&a,f);
	typedmess((t_object *)x,_jit_sym_val,1,&a);
}
Example #13
0
    /* convenience routine giving a stdarg interface to typedmess().  Only
    ten args supported; it seems unlikely anyone will need more since
    longer messages are likely to be programmatically generated anyway. */
void pd_vmess(t_pd *x, t_symbol *sel, char *fmt, ...)
{
    va_list ap;
    t_atom arg[10], *at = arg;
    int nargs = 0;
    char *fp = fmt;

    va_start(ap, fmt);
    while (1)
    {
        if (nargs >= 10)
        {
            pd_error(x, "pd_vmess: only 10 allowed");
            break;
        }
        switch(*fp++)
        {
        case 'f': SETFLOAT(at, va_arg(ap, double)); break;
        case 's': SETSYMBOL(at, va_arg(ap, t_symbol *)); break;
        case 't':
            SETBLOB(at, va_arg(ap, t_blob *));
            /*post("pd_vmess: arg[0].a_w.w_blob = %p", arg[0].a_w.w_blob);*/
            break; /* MP 20061226 blob type */
        case 'i': SETFLOAT(at, va_arg(ap, t_int)); break;       
        case 'p': SETPOINTER(at, va_arg(ap, t_gpointer *)); break;
        default: goto done;
        }
        at++;
        nargs++;
    }
done:
    va_end(ap);
    typedmess(x, sel, nargs, arg);
}
Example #14
0
void cmmjl_osc_sendMsg(void *x, t_symbol *msg, int argc, t_atom *argv){
	t_linklist *ll = cmmjl_obj_osc_address_methods_get(x);
	t_symbol *m = gensym(basename(msg->s_name));
	char *osc_address;
	int i;
	method func;
	void *r;

	if(msg == ps_OSCTimeTag){
		return;
	}
	if(!ll){
		return;
	}
	osc_address = linklist_getindex(ll, 0);
	for(i = 0; i < linklist_getsize(ll); i++){
		if(!osc_address){
			post("no OSC address--breaking");
			break;
		}
		if(!cmmjl_osc_match(x, msg->s_name, osc_address)){
			func = zgetfn((t_object *)x, m);
			if(func){
				r = typedmess(x, m, argc, argv);
				//return;
			}
		}else{
		}
		linklist_next(ll, osc_address, (void **)&osc_address);
	}
	CMMJL_ERROR(x, CMMJL_ENOFUNC, "couldn't send message %s to object", m->s_name);
}
Example #15
0
    /* just forward any messages to the garray */
static void array_define_anything(t_glist *x,
    t_symbol *s, int argc, t_atom *argv)
{
    t_glist *gl = (x->gl_list ? pd_checkglist(&x->gl_list->g_pd) : 0);
    if (gl && gl->gl_list && pd_class(&gl->gl_list->g_pd) == garray_class)
        typedmess(&gl->gl_list->g_pd, s, argc, argv);
    else bug("array_define_anything");
}
Example #16
0
void outlet_anything(t_outlet *x, t_symbol *s, int argc, t_atom *argv)
{
    t_outconnect *oc;
    char c;
    if (&c < stacklimit)
    	outlet_stackerror(x);
    else for (oc = x->o_connections; oc; oc = oc->oc_next)
    	typedmess(oc->oc_to, s, argc, argv);
}
Example #17
0
File: m_obj.c Project: toto/ipd
static void inlet_list(t_inlet *x, t_symbol *s, int argc, t_atom *argv)
{
    t_atom at;
    if (x->i_symfrom == &s_list || x->i_symfrom == &s_float
        || x->i_symfrom == &s_symbol || x->i_symfrom == &s_pointer)
            typedmess(x->i_dest, x->i_symto, argc, argv);
    else if (!x->i_symfrom) pd_list(x->i_dest, s, argc, argv);
    else inlet_wrong(x, &s_list);
}
Example #18
0
File: dist.c Project: IcaroL2ORK/pd
static void dist_anything(t_dist *x, t_symbol *s, int argc, t_atom *argv)
{
	int i;

	for(i = 0; i <= x->x_rec; i++)
	{
		if (x->x_sym[i]->s_thing) typedmess(x->x_sym[i]->s_thing, s, argc, argv);
	}
}
Example #19
0
File: forky.c Project: fluxama/Drom
t_pd *forky_newobject(t_symbol *s, int ac, t_atom *av)
{
#if FORKY_VERSION >= 37
    typedmess(&pd_objectmaker, s, ac, av);
    return (pd_newest());
#else
    return (0);
#endif
}
Example #20
0
/* this one only in g_clone.c -- LATER consider sending the message
without having to chase the linked list every time? */
void obj_sendinlet(t_object *x, int n, t_symbol *s, int argc, t_atom *argv)
{
    t_inlet *i;
    for (i = x->ob_inlet; i && n; i = i->i_next, n--)
        ;
    if (i)
        typedmess(&i->i_pd, s, argc, argv);
    else bug("obj_sendinlet");
}
Example #21
0
void GemMan :: renderChain(t_symbol*s, GemState *state){
  if(s->s_thing) {
    t_atom ap[2];
    ap->a_type=A_POINTER;
    ap->a_w.w_gpointer=NULL;  // the cache ?
    (ap+1)->a_type=A_POINTER;
    (ap+1)->a_w.w_gpointer=(t_gpointer *)state;
    typedmess(s->s_thing, gensym("gem_state"), 2, ap);
  }
}
Example #22
0
void outlet_anything(t_outlet *x, t_symbol *s, int argc, t_atom *argv)
{
    t_outconnect *oc;
    if(++stackcount >= STACKITER)
        outlet_stackerror(x);
    else
    for (oc = x->o_connections; oc; oc = oc->oc_next)
        typedmess(oc->oc_to, s, argc, argv);
    --stackcount;
}
Example #23
0
File: main_pd.c Project: zwizwa/rai
static void update_gui_labels(struct proc_pd *x) {
    const struct proc_class_control *p = x->proc_class->info_control;
    for (int i = 0; p[i].desc; i++) {
        t_symbol *s = gensym_n("slider",i);
        if (s->s_thing) {
            t_atom s_desc = {A_SYMBOL, (union word)slider_label(&p[i])};
            typedmess(s->s_thing, gensym("label"), 1, &s_desc);
        }
    }
}
Example #24
0
File: main_pd.c Project: zwizwa/rai
static void update_gui(struct proc_pd *x, int control_index) {
    int param_index = proc_instance_find_control(x->proc_instance, control_index);
    if (param_index < 0) return;
    PROC_NUMBER_T value = proc_instance_get_param(x->proc_instance, param_index);
    t_symbol *s = gensym_n("slider",control_index);
    if (s->s_thing) {
        t_atom s_desc = FLOAT(value);
        typedmess(s->s_thing, gensym("set"), 1, &s_desc);
    }
}
Example #25
0
static void grab_anything(t_grab *x, t_symbol *s, int ac, t_atom *av)
{
    t_pd *grabbed;
    grab_start(x);
    while (grabbed = grab_next(x))
    {
	typedmess(grabbed, s, ac, av);
	grab_restore(x);
    }
}
Example #26
0
File: xeq.c Project: pure-data/xeq
/* never use implicit running status (expect other midi senders) */
static void xeqithook_playmessage(t_xeqit *it,
				  t_symbol *target, int argc, t_atom *argv)
{
    t_xeq *x = (t_xeq *)it->i_owner;
    t_pd *dest = target->s_thing;
    if (argv->a_type == A_FLOAT)
    {
	int status = it->i_status;
	if (dest) typedmess(dest, &s_list, argc, argv);
	if (status)
	{
	    status |= it->i_channel;
	    outlet_float(x->x_midiout, status);
	    outlet_float(x->x_midiout, it->i_data1);
	    if (it->i_data2 >= 0) outlet_float(x->x_midiout, it->i_data2);
	}
    }
    else if (argv->a_type == A_SYMBOL && dest)
	typedmess(dest, argv->a_w.w_symbol, argc-1, argv+1);
}
Example #27
0
static void iem_event_motion(t_iem_event *x, t_floatarg dx, t_floatarg dy)
{
  x->x_x += (t_int)dx;
  x->x_y -= (t_int)dy;
  
  SETFLOAT(x->x_at_out, (t_float)x->x_x);
  SETFLOAT(x->x_at_out+1, (t_float)x->x_y);
  outlet_anything(x->x_gui.x_obj.ob_outlet, x->x_dragg_x_y, 2, x->x_at_out);
  if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
    typedmess(x->x_gui.x_snd->s_thing, x->x_dragg_x_y, 2, x->x_at_out);
}
Example #28
0
void iCircle2D_bang(t_iCircle2D *x)
{
  SETFLOAT(&(x->force[14]), x->posX_old); // posX_old
  SETFLOAT(&(x->force[15]), x->posY_old); // posY_old

  x->posX_old = x->posX;
  x->posY_old = x->posY;

  if (x->x_sym->s_thing) typedmess(x->x_sym->s_thing, gensym("interactor_circle_2D"), 20, x->force);

  outlet_anything(x->force_new, gensym("interactor_circle_2D"), 20, x->force);
}
Example #29
0
static int iem_event_click(t_gobj *z, struct _glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit)
{
  t_iem_event* x = (t_iem_event *)z;
  t_int xpos=text_xpix(&x->x_gui.x_obj, glist);
  t_int ypos=text_ypix(&x->x_gui.x_obj, glist);
  
  if(doit != x->x_doit)
  {
    SETFLOAT(x->x_at_out, (t_float)doit);
    SETFLOAT(x->x_at_out+1, (t_float)shift);
    SETFLOAT(x->x_at_out+2, (t_float)(alt?1:0));
    outlet_anything(x->x_gui.x_obj.ob_outlet, x->x_mouse_shft_alt, 3, x->x_at_out);
    if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
      typedmess(x->x_gui.x_snd->s_thing, x->x_mouse_shft_alt, 3, x->x_at_out);
    if(doit)
      x->x_gui.x_fsf.x_change = 1;
    x->x_doit = doit;
  }
  
  x->x_x = xpix - xpos;
  x->x_y = x->x_gui.x_h - (ypix - ypos);
  SETFLOAT(x->x_at_out, (t_float)x->x_x);
  SETFLOAT(x->x_at_out+1, (t_float)x->x_y);
  if(doit)
  {
    glist_grab(x->x_gui.x_glist, &x->x_gui.x_obj.te_g,
      (t_glistmotionfn)iem_event_motion, iem_event_key, (t_float)xpix, (t_float)ypix);
    
    outlet_anything(x->x_gui.x_obj.ob_outlet, x->x_dragg_x_y, 2, x->x_at_out);
    if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
      typedmess(x->x_gui.x_snd->s_thing, x->x_dragg_x_y, 2, x->x_at_out);
  }
  else
  {
    outlet_anything(x->x_gui.x_obj.ob_outlet, x->x_move_x_y, 2, x->x_at_out);
    if(x->x_gui.x_fsf.x_snd_able && x->x_gui.x_snd->s_thing)
      typedmess(x->x_gui.x_snd->s_thing, x->x_move_x_y, 2, x->x_at_out);
  }
  return (1);
}
static void audiosettings_params_apply(t_audiosettings*x) {
/*
     "pd audio-dialog ..."
     #00: indev[0]
     #01: indev[1]
     #02: indev[2]
     #03: indev[3]
     #04: inchan[0]
     #05: inchan[1]
     #06: inchan[2]
     #07: inchan[3]
     #08: outdev[0]
     #09: outdev[1]
     #10: outdev[2]
     #11: outdev[3]
     #12: outchan[0]
     #13: outchan[1]
     #14: outchan[2]
     #15: outchan[3]
     #16: rate
     #17: advance
     #18: callback
*/

  t_atom argv [2*MAXAUDIOINDEV+2*MAXAUDIOOUTDEV+3];
  int argc=2*MAXAUDIOINDEV+2*MAXAUDIOOUTDEV+3;

  int i=0;

//  as_params_print(&x->x_params);



  for(i=0; i<MAXAUDIOINDEV; i++) {
    SETFLOAT(argv+i+0*MAXAUDIOINDEV, (t_float)(x->x_params.audioindev[i]));
    SETFLOAT(argv+i+1*MAXAUDIOINDEV, (t_float)(x->x_params.chindev   [i]));
  }
  for(i=0; i<MAXAUDIOOUTDEV; i++) {
    SETFLOAT(argv+i+2*MAXAUDIOINDEV+0*MAXAUDIOOUTDEV,(t_float)(x->x_params.audiooutdev[i]));
    SETFLOAT(argv+i+2*MAXAUDIOINDEV+1*MAXAUDIOOUTDEV,(t_float)(x->x_params.choutdev   [i]));
  }

  SETFLOAT(argv+2*MAXAUDIOINDEV+2*MAXAUDIOOUTDEV+0,(t_float)(x->x_params.rate));
  SETFLOAT(argv+2*MAXAUDIOINDEV+2*MAXAUDIOOUTDEV+1,(t_float)(x->x_params.advance));
  SETFLOAT(argv+2*MAXAUDIOINDEV+2*MAXAUDIOOUTDEV+2,(t_float)(x->x_params.callback));

  if (s_pdsym->s_thing) typedmess(s_pdsym->s_thing, 
				  gensym("audio-dialog"), 
				  argc,
				  argv);
}