Help with VU Meter and Macetech shield

So I recently found a wonderful website with a VU meter shield. All it does is run a 3K low pass filter on the signal and some other analog things. I am then running the values out to a 8x8 dot matrix. The problem I am having is smoothing out the signal. This is what I got so far. The problem is it is just a little jittery and not very good looking. I have gone through and tried to place delays in certain places and it is not getting any better. Any help would be great.

#include <LMP.h>

LMP matrix(8,12,11);

void setup()
{
  Serial.begin(9600);
}

void num_row(int row,int col, char color)
{
  int all_table[]={254,252,248,240,224,192,128,0};
  int row_table[9]={1,2,4,8,16,32,64,128};
  
  matrix.clear_reg();
  if(color=='r')
  {
    matrix.shift_color(row_table[row],255,255,all_table[col]);
  }
  if(color=='g')
  {
    matrix.shift_color(row_table[row],all_table[col],255,255);
  }
  if(color=='b')
  {
    matrix.shift_color(row_table[row],255,all_table[col],255);
  }
  if(color=='w')
  {
    matrix.shift_color(row_table[row],all_table[col],all_table[col],all_table[col]);
  }
  if(color=='y')
  {
    matrix.shift_color(row_table[row],all_table[col],255,all_table[col]);
  }
  if(color=='l')
  {
    matrix.shift_color(row_table[row],all_table[col],all_table[col],255);
  }
  if(color=='p')
  {
    matrix.shift_color(row_table[row],255,all_table[col],all_table[col]);
  }
}

void loop()
{
  int adc1avg;
  adc1avg = adc1avg * 0.95 + analogRead(2) * 0.05;
  num_row(0,average,'g');
}

Ah...you're really close. The way you have it set up now, you're aren't averaging at all!

Your adc1avg variable must be global, so that the value is preserved over multiple runs of the loop(). Simply place "int adc1avg = 0;" before the void loop() statement. Anything outside of your setup() or loop() functions will be a global variable.

I think that will do it. But for even smoother response you may want to consider setting adc1avg as a float instead of an integer.

I also notice that you aren't actually passing adc1avg to the num_row function, you're passing something called average.

Thanks. Great board by the way. Having fun with it. You are the one that made it right?

That's right, macetech and macegr are one and the same :)