t_max_err channels_set(t_hoa_vector *x, t_object *attr, long argc, t_atom *argv)
{
    t_object *b = NULL;
    if(argc && argv && atom_gettype(argv) == A_LONG)
    {
        int number_of_loudspeakers = atom_getlong(argv);
        if(number_of_loudspeakers != x->f_vector->getNumberOfChannels() &&
           number_of_loudspeakers > 0 &&
           number_of_loudspeakers <= MAX_CHANNELS)
        {
            object_method(gensym("dsp")->s_thing, hoa_sym_stop);
            
            delete x->f_vector;
            x->f_vector = new Hoa2D::Vector(number_of_loudspeakers);
        
            object_obex_lookup(x, gensym("#B"), (t_object **)&b);
            object_method(b, hoa_sym_dynlet_begin);
        
            dsp_resize((t_pxobject*)x, x->f_vector->getNumberOfChannels());
            object_method(b, hoa_sym_dynlet_end);
        
            object_attr_setvalueof(x, hoa_sym_angles, 0, NULL);
        }
    }
    return MAX_ERR_NONE;
}
void *ramp_new(t_symbol *s, long argc, t_atom *argv)
{
	t_ramp	*x = (t_ramp *)object_alloc(ramp_class);

	if (x) {
		x->outlets[k_outlet_dumpout] = outlet_new(x, 0L);
		x->outlets[k_outlet_value]   = outlet_new(x, 0L);
		object_obex_store((void *)x, _sym_dumpout, (t_object *)x->outlets[k_outlet_dumpout]);
		x->parameterNames = new TTHash;

		x->rampUnit = NULL;

		// Set default attributes
		// @drive
		Atom a;
		atom_setsym(&a, gensym("scheduler"));
		object_attr_setvalueof(x, gensym("drive"), 1, &a);
		// @function
		object_attr_setsym(x, gensym("function"), jps_linear);

		// Now set specified attributes, if any
		attr_args_process(x, argc, argv);

	}
	return (x);		// return the pointer to our new instantiation
}
t_max_err paramui_setRepetitions(t_paramui *x, void *attr, long argc, t_atom *argv)
{
	if (argc)
		x->attr_repetitions = atom_getfloat(argv);
	
	object_attr_setvalueof(x->obj_parameter, gensym("repetitions/filter"), argc, argv);
	return MAX_ERR_NONE;
}
t_max_err paramui_setPriority(t_paramui *x, void *attr, long argc, t_atom *argv)
{
	if (argc)
		x->attr_priority = atom_getlong(argv);
	
	object_attr_setvalueof(x->obj_parameter, gensym("priority"), argc, argv);
	return MAX_ERR_NONE;
}
t_max_err paramui_setStepsize(t_paramui *x, void *attr, long argc, t_atom *argv)
{
	if (argc)
		x->attr_stepsize = atom_getfloat(argv);
	
	object_attr_setvalueof(x->obj_parameter, gensym("value/stepsize"), argc, argv);
	return MAX_ERR_NONE;
}
t_max_err paramui_setDefault(t_paramui *x, void *attr, long argc, t_atom *argv)
{
	x->attr_defaultSize = argc;
	if (argc)
		sysmem_copyptr(argv, x->attr_default, sizeof(t_atom) * argc);
	object_attr_setvalueof(x->obj_parameter, gensym("default"), argc, argv);
	return MAX_ERR_NONE;
}
t_max_err paramui_setRampFunction(t_paramui *x, void *attr, long argc, t_atom *argv)
{
	if (argc)
		x->attr_rampFunction = atom_getsym(argv);
	
	object_attr_setvalueof(x->obj_parameter, gensym("ramp/function"), argc, argv);
	return MAX_ERR_NONE;
}
t_max_err paramui_setType(t_paramui *x, void *attr, long argc, t_atom *argv)
{
	if (argc)
		x->attr_type = atom_getsym(argv);
	
	object_attr_setvalueof(x->obj_parameter, gensym("type"), argc, argv);
	return MAX_ERR_NONE;
}
t_max_err paramui_setUnitActive(t_paramui *x, void *attr, long argc, t_atom *argv)
{
	if (argc)
		x->attr_unitActive = atom_getsym(argv);
	
	object_attr_setvalueof(x->obj_parameter, gensym("dataspace/unit"), argc, argv);
	return MAX_ERR_NONE;
}
t_max_err paramui_setRange(t_paramui *x, void *attr, long argc, t_atom *argv)
{
	if (argc)
		x->attr_range[0] = atom_getfloat(argv+0);
	if (argc > 1)
		x->attr_range[1] = atom_getfloat(argv+1);
	
	object_attr_setvalueof(x->obj_parameter, gensym("range/bounds"), argc, argv);
	return MAX_ERR_NONE;
}
Exemple #11
0
void iterator_notify(t_iterator *x, t_symbol *s, t_symbol *msg, void *sender, void *data)
{
//	post("got %s message from %X (%s)", msg->s_name, sender, s->s_name);
	if (msg == gensym("attr_modified") && sender == x->a_patcherview) { // sent when an attribute of the sender changes
		t_symbol *attrname;

		// 'data' arg is the modified attribute object
		// get its name:
		attrname = (t_symbol *)object_method(data, gensym("getname"));
		post("'%s' attribute was modified", attrname->s_name);

		if (attrname == gensym("rect")) {
			t_atom *av = NULL;
			long ac = 0;

			object_attr_getvalueof(sender, attrname, &ac, &av);
			if (ac && av) {
				t_object *jb;

				post("new rect: %ld %ld %ld %ld", atom_getlong(av), atom_getlong(av+1), atom_getlong(av+2), atom_getlong(av+3));
				object_obex_lookup(x, gensym("#B"), &jb);
				if (jb) {
					t_atom *rv = NULL;
					long rc = 0;

					object_attr_getvalueof(jb, gensym("patching_rect"), &rc, &rv);
					if (rc && rv) {
						// we have box rect
						// compare cached view size to current view
						long dx = atom_getlong(av+2) - x->a_cached.x;
						long dy = atom_getlong(av+3) - x->a_cached.y;
						long boxw = atom_getlong(rv+2);
						long boxh = atom_getlong(rv+3);

						// recache new size
						x->a_cached.x = atom_getlong(av+2);
						x->a_cached.y = atom_getlong(av+3);

						// modify my box width
						atom_setlong(rv+2, boxw + dx);
						// (height is ignored by jnewobj)
						atom_setlong(rv+3, boxh + dy);
						object_attr_setvalueof(jb, gensym("patching_rect"), rc, rv);
						freebytes(rv, sizeof(t_atom) * rc);
					}
				}
				freebytes(av, sizeof(t_atom) * ac);
			}
		}

	}

}
Exemple #12
0
t_max_err scripto_setattr_offcolor(t_scripto *x, void *attr, long argc, t_atom *argv)
{
	if (x->s_ui)
		object_attr_setvalueof(x->s_ui, gensym("offcolor"), argc, argv);
	if (argc >= 4) {
		x->s_offcolor.red = atom_getfloat(argv);
		x->s_offcolor.green = atom_getfloat(argv + 1);
		x->s_offcolor.blue = atom_getfloat(argv + 2);
		x->s_offcolor.alpha = atom_getfloat(argv + 3);
	}
	return 0;
}
void hoa_meter_deprecated(t_hoa_meter* x, t_symbol *s, long ac, t_atom* av)
{
    t_atom* argv;
    long argc;
    if(s && s == gensym("loudspeakers") && ac && av)
    {
        object_error(x, "%s attribute @loudspeakers is deprecated, please use @channels.", eobj_getclassname(x)->s_name);
        channels_set(x, NULL, ac, av);
    }
    if(s && s == gensym("bordercolor") && ac && av)
    {
        object_attr_setvalueof((t_object *)x, gensym("bdcolor"), ac, av);
        object_error(x, "%s attribute @bordercolor is deprecated, please use @bdcolor.", eobj_getclassname(x)->s_name);
    }
    
    atoms_get_attribute(ac, av, gensym("@loudspeakers"), &argc, &argv);
    if(argc && argv)
    {
        object_error(x, "%s attribute @loudspeakers is deprecated, please use @channels.", eobj_getclassname(x)->s_name);
        channels_set(x, NULL, argc, argv);
        argc = 0;free(argv);argv = NULL;
    }
    atoms_get_attribute(ac, av, gensym("@bordercolor"), &argc, &argv);
    if(argc && argv)
    {
        object_attr_setvalueof((t_object *)x, gensym("bdcolor"), argc, argv);
        object_error(x, "%s attribute @bordercolor is deprecated, please use @bdcolor.", eobj_getclassname(x)->s_name);
        argc = 0;free(argv);argv = NULL;
    }

    if((s && s == gensym("mbgcolor")) || atoms_has_attribute(ac, av, gensym("@mbgcolor")))
    {
        object_error(x, "%s attribute @mbgcolor is deprecated.", eobj_getclassname(x)->s_name);
        argc = 0;free(argv);argv = NULL;
    }
}
t_pd_err number_tilde_notify(t_number_tilde *x, t_symbol *s, t_symbol *msg, void *sender, void *data)
{
	if (msg == cream_sym_attr_modified)
	{
		if(s == cream_sym_bgcolor || s == cream_sym_bdcolor || s == gensym("textcolor") || s == gensym("fontsize") || s == gensym("fontname") || s == gensym("fontweight") || s == gensym("fontslant"))
		{
			ebox_invalidate_layer((t_ebox *)x, cream_sym_background_layer);
			ebox_invalidate_layer((t_ebox *)x, gensym("value_layer"));
		}
        if(s == gensym("fontsize"))
        {
            object_attr_setvalueof((t_object *)x, gensym("size"), 0, NULL);
        }
        ebox_redraw((t_ebox *)x);
	}
	return 0;
}
t_max_err channels_set(t_meter *x, t_object *attr, long argc, t_atom *argv)
{
    if(argc && argv && atom_isNumber(argv))
    {
        t_object *b = NULL;
        int numberOfPlanewaves = atom_getlong(argv);
        if(numberOfPlanewaves != x->f_meter->getNumberOfPlanewaves() && numberOfPlanewaves > 0 && numberOfPlanewaves <= MAX_UI_CHANNELS)
        {
            object_method(hoa_sym_dsp->s_thing, hoa_sym_stop);
			
            if (x->f_meter)
				delete x->f_meter;
			
			if (x->f_vector)
				delete x->f_vector;
			
            x->f_meter  = new Meter<Hoa2d, t_sample>(numberOfPlanewaves);
            x->f_vector  = new Vector<Hoa2d, t_sample>(numberOfPlanewaves);
            x->f_meter->computeRendering();
            x->f_vector->computeRendering();
            
            object_obex_lookup(x, hoa_sym_pound_B, (t_object **)&b);

            object_method(b, hoa_sym_dynlet_begin);
            dsp_resize((t_pxobject*)x, x->f_meter->getNumberOfPlanewaves());
            object_method(b, hoa_sym_dynlet_end);
            
            if (x->f_meter->getNumberOfPlanewaves() == 1)
            {
                object_attr_setdisabled((t_object*)x, hoa_sym_angles, 1);
                object_attr_setdisabled((t_object*)x, gensym("offset"), 1);
                object_attr_setdisabled((t_object*)x, gensym("rotation"), 1);
            }
            else
            {
                object_attr_setdisabled((t_object*)x, hoa_sym_angles, 0);
                object_attr_setdisabled((t_object*)x, gensym("offset"), 0);
                object_attr_setdisabled((t_object*)x, gensym("rotation"), 0);
            }
        }
        
        object_attr_setvalueof(x, hoa_sym_angles, 0, NULL);
    }
    return MAX_ERR_NONE;
}
Exemple #16
0
t_max_err number_of_channels_set(t_meter *x, t_object *attr, long argc, t_atom *argv)
{
    t_object *b = NULL;
    int numberOfChannels;
    if(argc && argv && atom_gettype(argv) == A_LONG)
    {
        numberOfChannels = atom_getlong(argv);
        if(numberOfChannels != x->f_meter->getNumberOfChannels() && numberOfChannels > 0 && numberOfChannels <= MAX_SPEAKER)
        {
            int dspState = sys_getdspobjdspstate((t_object*)x);
            if(dspState)
                object_method(gensym("dsp")->s_thing, gensym("stop"));
            
            delete x->f_meter;
            delete x->f_vector;
            x->f_number_of_channels = numberOfChannels;
            x->f_meter  = new Hoa2D::Meter(x->f_number_of_channels);
            x->f_vector = new Hoa2D::Vector(x->f_number_of_channels);
            
            object_obex_lookup(x, gensym("#B"), (t_object **)&b);
            
            object_method(b, gensym("dynlet_begin"));
            dsp_resize((t_pxobject*)x, x->f_number_of_channels);
            object_method(b, gensym("dynlet_end"));
            
            if (x->f_number_of_channels == 1)
            {
                object_attr_setdisabled((t_object*)x, gensym("angles"), 1);
                object_attr_setdisabled((t_object*)x, gensym("offset"), 1);
                object_attr_setdisabled((t_object*)x, gensym("rotation"), 1);
            }
            else
            {
                object_attr_setdisabled((t_object*)x, gensym("angles"), 0);
                object_attr_setdisabled((t_object*)x, gensym("offset"), 0);
                object_attr_setdisabled((t_object*)x, gensym("rotation"), 0);
            }
            
            object_attr_setvalueof(x, gensym("angles"), 0, NULL);
        }
    }
    return NULL;
}
Exemple #17
0
t_pd_err radio_nitems_set(t_radio *x, t_object *attr, long ac, t_atom *av)
{
	int i;
    t_atom argv[2];
    if(ac && av && atom_gettype(av) == A_FLOAT)
    {
        if(pd_clip_minmax(atom_getfloat(av), 1, 256) != x->f_nitems)
        {
            x->f_nitems = pd_clip_minmax(atom_getfloat(av), 1, 256);
            for(i = 0; i < x->f_nitems; i++)
                x->f_items[i] = 0;
            
            ebox_invalidate_layer((t_ebox *)x, gensym("background_layer"));
            ebox_invalidate_layer((t_ebox *)x, gensym("items_layer"));
            atom_setfloat(argv, x->j_box.b_rect.width);
            atom_setfloat(argv+1, x->j_box.b_rect.height);
            object_attr_setvalueof((t_object *)x, gensym("size"), 2, argv);
        }
    }
    return 0;
}
void breakpoints_scaleord(t_breakpoints *x, t_symbol* s, int argc, t_atom* argv)
{
    int i;
    float min, max, ratio;
    if(argc >= 2 && argv && atom_gettype(argv) == A_FLOAT && atom_gettype(argv+1) == A_FLOAT)
    {
        min = atom_getfloat(argv);
        max = atom_getfloat(argv+1);
        if(min > max)
        {
            min = max;
            max = atom_getfloat(argv);
        }

        ratio = x->f_range_ordinate[1] - x->f_range_ordinate[0];
        for(i = 0; i < x->f_number_of_points; i++)
        {
            x->f_point_ordinate[i] = ((x->f_point_ordinate[i] - x->f_range_ordinate[0]) / ratio) * (max - min) + min;
        }
        object_attr_setvalueof((t_object *)x, gensym("ordrange"), argc, argv);
    }
}
void ui_mute(t_ui *obj, t_symbol *msg, long argc, t_atom *argv)
{
	object_attr_setvalueof(obj, gensym("is_muted"), argc, argv);
}
void ui_color_border(t_ui *obj, t_symbol *msg, long argc, t_atom *argv)
{
	if (argc>1)
		object_attr_setvalueof(obj, gensym("bordercolor"), argc, argv);
}
void ui_color_toolbarText(t_ui *obj, t_symbol *msg, long argc, t_atom *argv)
{
	if (argc>1)
		object_attr_setvalueof(obj, _sym_textcolor, argc, argv);
}
void ui_color_toolbarBackground(t_ui *obj, t_symbol *msg, long argc, t_atom *argv)
{
	if (argc>1)
		object_attr_setvalueof(obj, gensym("headercolor"), argc, argv);
}
void ui_color_contentBackground(t_ui *obj, t_symbol *msg, long argc, t_atom *argv)
{
	// Colors default to "0". If default value is passed, we avoid setting the color, in order to stick to object defaults.
	if (argc>1)
		object_attr_setvalueof(obj, _sym_bgcolor, argc, argv);
}