Hi,
Thanks for the help. In the meantime, I have been working on the code below. It works with the LEDs and the sound. The problem is, the sound is not quite a smooth as in the video. Any suggestions? I would really appreciate the help.

//Pitch follower and sequential LED lighter
//Plays a pitch and lights LEDs based on a changing analog input
//8-ohm speaker on digital pin 9
//====constants=====//
//const int NUM_READINGS=15;//raise this number to increase data smoothing for LEDs - original number
const int NUM_READINGS=60;//raise this number to increase data smoothing for LEDs
const int SENSE_LIMIT=15;//raise this number to decrease LED sensitivity (up to 1023 max)
const int LEDS=5;
const int LED_PINS[LEDS]={2, 3, 4, 5, 6};
const int LED_THRESHOLDS[LEDS]={5, 16, 27, 38, 50};//what value the reading should be for LED i to light
const int PROBE_PIN=5;//analog input for both LEDs and pitch following
//=====global variables=====//
//variables for smoothing
int gReadings[NUM_READINGS];//the readings from the analog input
int gIndex=0;//the index of the current reading
int gTotal=0;//the running total
//=====main=====//
void setup(){
Serial.begin(9600);
for(int i=0; i<LEDS; ++i) pinMode(LED_PINS[i], OUTPUT);
for(int i=0; i<NUM_READINGS; ++i) gReadings[i]=0;
}
void loop(){
int sensorReading=analogRead(PROBE_PIN);
//-----LEDs-----//
int val=constrain(sensorReading, 1, SENSE_LIMIT);//constrain between 1 and SENSE_LIMIT
val=map(val, 1, SENSE_LIMIT, 1, 1023);//remap the constrained value to a 1 to 1023 range
gTotal-=gReadings[gIndex];//subtract the oldest reading
gReadings[gIndex]=val;
gTotal+=gReadings[gIndex];//add the new reading to the total
++gIndex;
gIndex%=NUM_READINGS;
int average=gTotal/NUM_READINGS;
for(int i=0; i<LEDS; ++i) digitalWrite(LED_PINS[i], (average>LED_THRESHOLDS[i])?HIGH:LOW);
//-----pitch following-----//
//print the sensor reading so you know its range
//Serial.println(sensorReading);
Serial.println(average);
//map the analog input range
//to the output pitch range (523 - 650Hz)
//change the minimum and maximum input numbers below
//depending on the range your sensor's giving:
//int thisPitch=map(average, 400, 1000, 120, 1500); original numbers
int thisPitch=map(average, 5, 50, 523, 650);
//play the pitch:
if(average<LED_PINS[0]) noTone(9);
else tone(9, thisPitch);
//delay(1);//delay in between reads for stability
delay(0);//delay in between reads for stability
}