Exemple #1
0
	/* send 'anything' to receiver */
static void remote_anything(t_remote *x, t_symbol *s, int argc, t_atom *argv)
{
	int i;
	t_atom av[MAX_ARG];		/* the 'new' t_atom without first element */
	t_int ac = argc - 1;    /* the 'new' number of arguments */
	char mysym[MAXPDSTRING];
	t_symbol *target;

	if(argc < 1)			/* need <name> <data> */
	{
		post("remote: too few arguments!");
		return;
	}
	if(ac > MAX_ARG)
	{
		post("remote: too many arguments!");
		return;
	}

	for(i = 1; i < argc; i++)
	{
		av[i - 1] = argv[i];	/* just copy, don't care about types */
	}
		/* send only argument-part to receivers */
	if(x->x_prepend)
	{
		sprintf(mysym,"%s%s", x->x_prefix->s_name, s->s_name);
		target = gensym(mysym);
		if (target->s_thing) pd_forwardmess(target->s_thing, argc, argv);
	}
	else
		if (s->s_thing) pd_forwardmess(s->s_thing, argc, argv);
}
Exemple #2
0
	/* send 'anything' to receiver */
static void dist_send(t_dist *x, t_symbol *s, int argc, t_atom *argv)
{
	int i;
	t_atom av[MAX_ARG];		/* the 'new' t_atom without first element */
	t_int ac = argc - 1;    /* the 'new' number of arguments */

	if(ac > MAX_ARG)
	{
		post("dist: too many arguments!");
		return;
	}

	for(i = 1; i < argc; i++)
	{
		av[i - 1] = argv[i];	/* just copy, don't care about types */
	}
		/* send only argument-part to receivers */
	for(i = 0; i <= x->x_rec; i++)
	{
		if (x->x_sym[i]->s_thing) pd_forwardmess(x->x_sym[i]->s_thing, argc, argv);
	}
}
Exemple #3
0
/* Note that adding new objects to the canvas has to wait until after
   the patch is finished loading.  Otherwise it will mess up the
   numbering of objects recorded in the .pd file. */
static void proc_pd_create_gui(struct proc_pd *x, float x_coord, float y_coord) {

    t_canvas *canvas = glist_getcanvas(x->x_canvas);


    /* Create slider on current canvas if there is no receiver. */
    const struct proc_class_control *p = x->proc_class->info_control;
    t_symbol *obj = gensym("obj");
    t_symbol *hsl = gensym("hsl");
    t_symbol *empty  = gensym("empty");
    t_symbol *msg = gensym("msg");
    t_symbol *control = gensym("control");
    t_symbol *dollar_one = gensym("$1");
    t_symbol *connect = gensym("connect");
    int synth_obj_no = canvas_getindex(canvas, (void*)x);
    for (int i = 0; p[i].desc; i++) {
        t_symbol *slider = gensym_n("slider", i);
        if (!slider->s_thing) {
            int obj_no = canvas_getindex(canvas, NULL);

            /* Examples of the format can be found in .pd files, e.g.:
               #X obj 55 54 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 -1 -1 0 1;
               see also hslider_new() */
            {
                t_atom args[] = {
                    /** create object at location **/
                    SYMBOL(obj),
                    FLOAT(x_coord),
                    FLOAT(y_coord + 30 * i),
                    SYMBOL(hsl),
                    /** arguments passed to hslider_new() */
                    /* w */    FLOAT(128),
                    /* h */    FLOAT(15),
                    /* min */  FLOAT(0),
                    /* max */  FLOAT(1),
                    /* lilo */ FLOAT(0),
                    /* isa */  FLOAT(1),
                    /* snd */  SYMBOL(empty),
                    /* rcv */  SYMBOL(slider),
                    /* lab */  SYMBOL(slider_label(&p[i])),
                    /* ldx */  FLOAT(-2),
                    /* ldy */  FLOAT(-8),
                    /* fsf */  FLOAT(0),
                    /* fs */   FLOAT(10),
                    /* bflcol[0] */ FLOAT(-262144),
                    /* bflcol[1] */ FLOAT(-1),
                    /* bflcol[2] */ FLOAT(-1),
                    /* val */       FLOAT(0),
                    /* steady */    FLOAT(1),
                };
                pd_forwardmess((t_pd*)canvas, nb_el(args), args);
            }
            {
                t_atom args[] = {
                    /** create message object.  it converts slider output to tagged message **/
                    SYMBOL(msg),
                    FLOAT(x_coord + 200),
                    FLOAT(y_coord + 30 * i + 15),
                    SYMBOL(control),
                    FLOAT(i),
                    SYMBOL(dollar_one),
                };
                pd_forwardmess((t_pd*)canvas, nb_el(args), args);
            }
            {
                t_atom args[] = {
                    /** connect slider to message object. **/
                    SYMBOL(connect),
                    FLOAT(obj_no), FLOAT(0),
                    FLOAT(obj_no+1), FLOAT(0)
                };
                pd_forwardmess((t_pd*)canvas, nb_el(args), args);
            }
            {
                t_atom args[] = {
                    /** connect message object to sp_host object. **/
                    SYMBOL(connect),
                    FLOAT(obj_no+1), FLOAT(0),
                    FLOAT(synth_obj_no), FLOAT(0)
                };
                pd_forwardmess((t_pd*)canvas, nb_el(args), args);
            }
        }
    }
    proc_pd_update_gui(x);
}