3
/*--------------- vvconv ---------------*/
7
static t_class *vvconv_class;
8
static t_class *vvconv_scal_class;
10
typedef struct _vvconv
22
static void vvconv_lst2(t_vvconv *x, t_symbol *s, int argc, t_atom *argv)
26
freebytes(x->buf2, x->n2 * sizeof(t_float));
28
x->buf2=(t_float *)getbytes(sizeof(t_float)*x->n2);
31
while(argc--)*fp++=atom_getfloat(argv++);
34
static void vvconv_lst(t_vvconv *x, t_symbol *s, int argc, t_atom *argv)
42
freebytes(x->buf1, x->n1 * sizeof(t_float));
44
x->buf1=(t_float *)getbytes(sizeof(t_float)*x->n1);
47
while(argc--)*fp++=atom_getfloat(argv++);
51
outlet_float(x->x_obj.ob_outlet, *x->buf1**x->buf2);
60
ap = (t_atom *)getbytes(sizeof(t_atom)*n);
71
ap = (t_atom *)getbytes(sizeof(t_atom)*n);
88
f = (t_float *)getbytes(sizeof(t_float)*n);
97
ap = (t_atom *)getbytes(sizeof(t_atom)*n);
104
freebytes(f,sizeof(float)*n);
106
outlet_list(x->x_obj.ob_outlet, gensym("list"), n, ap);
107
freebytes(ap, sizeof(t_atom)*n);
109
static void vvconv_free(t_vvconv *x)
111
freebytes(x->buf1, sizeof(t_float)*x->n1);
112
freebytes(x->buf2, sizeof(t_float)*x->n2);
115
static void *vvconv_new(t_symbol *s, int argc, t_atom *argv)
120
x = (t_vvconv *)pd_new(vvconv_class);
121
inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("list"), gensym(""));
122
} else x = (t_vvconv *)pd_new(vvconv_scal_class);
124
outlet_new(&x->x_obj, 0);
127
x->buf1 =(t_float*)getbytes(sizeof(t_float));
130
if (argc)vvconv_lst2(x, gensym("list"), argc, argv);
133
x->buf2 =(t_float*)getbytes(sizeof(t_float));
137
if (argc==1)floatinlet_new(&x->x_obj, x->buf2);
142
void vvconv_setup(void)
144
vvconv_class = class_new(gensym("vvconv"), (t_newmethod)vvconv_new,
145
(t_method)vvconv_free, sizeof(t_vvconv), 0, A_GIMME, 0);
146
class_addlist(vvconv_class, vvconv_lst);
147
class_addmethod (vvconv_class, (t_method)vvconv_lst2, gensym(""), A_GIMME, 0);
148
vvconv_scal_class = class_new(gensym("vv+"), 0, (t_method)vvconv_free,
149
sizeof(t_vvconv), 0, 0);
150
class_addlist(vvconv_scal_class, vvconv_lst);