-
BlackVodka
Hi there!
At first, I'd like to introduce myself here a bit:
I'm from Germany (please excuse propably bad English sometimes), and I'm about fininishing my studying in electronics engineering.
I use PureData for a while when working in the lower-frequency area because it's very handy when 'just trying xyz' without writing three hours the routines for accessing the soundcard et cetera.Well, currently I want to meassure the energy of noise over a given time, e.g. 2 minutes.
What I thought was, using the formula
E = sum of v^2[k] to N values + 1/N * sum of v[k] = Sigma^2 + µ^2.
The left part should be fairly easy, using the expr~ and pow-expression (my thoughts, theoretically, nothing tried yet!).
But I started to think about the second part.
To be honest, to answer my question by myself, I thought it may be a good idea to take a look at the source code of tavg~, but I'm pretty sure I missunderstand something here:
Do I understand things right, that tavg~ takes the average of 'just' the last 4 values, doesn't it?
Or do you know any other way for getting the average of a signal for a longer time?Thanks in advance
// Cut out of tavg~.c static void tavg_bang(t_tavgtilde *x) { if (x->blocks) { t_float result=x->buf*x->n_inv/x->blocks; outlet_float(x->x_obj.ob_outlet, result); x->blocks = 0; x->buf = 0.; } } static t_int *tavg_perform(t_int *w) { t_sample *in = (t_sample *)(w[1]); t_tavgtilde *x = (t_tavgtilde *)w[2]; int n = (int)(w[3]); t_sample buf = x->buf; while (n--) buf += *in++; x->buf = buf; x->blocks++; return (w+4); }