Vu meter problem

Hi, i wanted to make a vu meter and make a servo react to it once it is completely silent.
The vu meter part worked. But when i make the if statement for when its silent to go to a certain position it just goes crazy.
It seems like the value goes to 0 a lot even with the sound continuous.
I get the sound from my laptop with a simple audiojack and feed it to the arduino.

Do you think theres a way to fix this problem?

#include <Servo.h>
Servo servo; 
int led[10] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; 
int leftChannel = 0; 
int left, j;


void setup()
{
   pinMode(16,OUTPUT);
  servo.attach(16); 
for (j = 0; j < 10; j++)  
  pinMode(led[j], OUTPUT);

}

void loop()
{
left = analogRead(leftChannel);  

left = left / 3;    


  if (left == 0) 
   {
     { 
      servo.write(0);  
     }
  
   for(j = 0; j < 10; j++)
     {
     digitalWrite(led[j], LOW);
     }
     
  }
  
  else
  {
    { 
      servo.write(180);  
     }
   
   for (j = 0; j < left; j++) // turn on the leds up to the volume level
    {
     digitalWrite(led[j], HIGH);
    }
    
    for(j = j; j < 10; j++)  // turn off the leds above the voltage level
     {
      digitalWrite(led[j], LOW);
     }
  }
}

If you want just loudness you will want a low-pass filter. You can do it in software by averaging samples together:

const int smoothing = 10;

left = (analogRead(leftChannel) + (left * (smoothing-1)) / smoothing

Set smoothing to higher numbers to filter out the fast swings more.

Do you have an example for me for the filter because i cant find anything on the web yet.
Ill explain what im doing a bit further. When the audio drops to 0 it drops an curtain via a hook.
So i only have on chance to do it. But i need it to be able to get to 0. Im going to use a quite sensitive microphone so that part should be allright.
Allthough i have no idea if this problem will persist if i connect the microphone directly to the arduino instead of via the computer.
So in an ideal situation i wouldnt want to use a laptop in between.