1
/******************************************************
3
* zexy - implementation file
5
* copyleft (c) IOhannes m zm�lnig
7
* 1999:forum::f�r::uml�ute:2004
9
* institute of electronic music and acoustics (iem)
11
******************************************************
13
* license: GNU General Public License v.2
15
******************************************************/
19
/* ------------------------ average~ ----------------------------- */
21
/* tilde object to take absolute value. */
23
static t_class *avg_class;
34
/* average :: arithmetic mean of one signal-vector */
36
static t_int *avg_perform(t_int *w)
38
t_sample *in = (t_sample *)(w[1]);
40
t_avg *x = (t_avg *)w[2];
49
outlet_float(x->x_obj.ob_outlet, buf*x->n_inv);
54
static void avg_dsp(t_avg *x, t_signal **sp)
56
x->n_inv=1./sp[0]->s_n;
57
dsp_add(avg_perform, 3, sp[0]->s_vec, x, sp[0]->s_n);
60
static void *avg_new(void)
62
t_avg *x = (t_avg *)pd_new(avg_class);
63
outlet_new(&x->x_obj, &s_float);
67
static void avg_help(void)
69
post("avg~\t:: outputs the arithmetic mean of each signal-vector");
73
void avg_tilde_setup(void)
75
avg_class = class_new(gensym("avg~"), (t_newmethod)avg_new, 0,
76
sizeof(t_avg), 0, A_DEFFLOAT, 0);
77
class_addmethod(avg_class, nullfn, gensym("signal"), 0);
78
class_addmethod(avg_class, (t_method)avg_dsp, gensym("dsp"), 0);
80
class_addmethod(avg_class, (t_method)avg_help, gensym("help"), 0);
81
zexy_register("avg~");