• 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);
    }

    posted in technical issues read more

Internal error.

Oops! Looks like something went wrong!