void autocolorbox(t_object *x) { double color[4] = {0.7, 0.4, 0.3, 1.0}; t_object *box = NULL; object_obex_lookup(x, _sym_pound_B, &box); object_attr_setdouble_array(box, _sym_color, 4, color); }
t_max_err mode_set(t_hoa_3d_decoder *x, t_object *attr, long argc, t_atom *argv) { if(argc && argv && atom_gettype(argv) == A_SYM) { t_symbol* mode = atom_getsym(argv); if(mode == hoa_sym_ambisonic) // retro-compatibility { mode = hoa_sym_regular; } if (mode != x->f_mode) { if(mode == hoa_sym_regular) { object_method(hoa_sym_dsp->s_thing, hoa_sym_stop); ulong order = x->f_decoder->getDecompositionOrder(); x->f_decoder = SharedPtr<Decoder<Hoa3d, float>>(new Decoder<Hoa3d, float>::Regular(order, (order+1)*(order+1))); x->f_mode = mode; object_attr_setdisabled((t_object *)x, hoa_sym_angles, 0); object_attr_setdisabled((t_object *)x, hoa_sym_offset, 0); object_attr_setdisabled((t_object *)x, hoa_sym_channels, 0); object_attr_setdouble_array(x, hoa_sym_offset, 3, x->f_offsets); x->f_number_of_channels = x->f_decoder->getNumberOfPlanewaves(); object_attr_touch((t_object *)x, hoa_sym_channels); object_attr_touch((t_object *)x, hoa_sym_angles); hoa_3d_decoder_resize_outlets(x); } else if(mode == hoa_sym_binaural) { object_method(hoa_sym_dsp->s_thing, hoa_sym_stop); ulong order = x->f_decoder->getDecompositionOrder(); x->f_decoder = SharedPtr<Decoder<Hoa3d, float>>(new Decoder<Hoa3d, float>::Binaural(order)); x->f_mode = mode; object_attr_setdisabled((t_object *)x, hoa_sym_angles, 1); object_attr_setdisabled((t_object *)x, hoa_sym_offset, 1); object_attr_setdisabled((t_object *)x, hoa_sym_channels, 1); x->f_mode = mode; x->f_number_of_channels = 2; object_attr_touch((t_object *)x, hoa_sym_channels); object_attr_touch((t_object *)x, hoa_sym_angles); hoa_3d_decoder_resize_outlets(x); } } } return MAX_ERR_NONE; }