Graphic spectrum

I’ve made a spectrum display with just 5 bars, but I can’t make it dynamic enough. Could anyone take a look at it?


import gs.TweenMax;
import gs.easing.*

var songsArry:Array = new Array("1.mp3", "2.mp3", "3.mp3", "4.mp3", "5.mp3", "6.mp3");
var defaultSong:uint = 0;
var currentSong:uint = defaultSong;

var song:Sound = new Sound();
var songChannel:SoundChannel; 
function loadedSong(e:Event):void {
	songChannel = e.target.play();
	songChannel.addEventListener(Event.SOUND_COMPLETE, songEnded);
};
function preloadSong(e:ProgressEvent):void {
	progressTF.text = e.target.bytesLoaded;
};
song.addEventListener(Event.COMPLETE, loadedSong);
song.addEventListener(ProgressEvent.PROGRESS, preloadSong);

song.load(new URLRequest("music/"+songsArry[defaultSong]));

function songEnded(e:Event):void {
	visdisplayUpdate.stop();
};

var displayUpdate:Number = .1;// seconds
var barHeight:Number = 30;
var visdisplayUpdate:Timer = new Timer(displayUpdate*1000);
var nrOfBars:int = 5;
var myByteArray:ByteArray = new ByteArray();
var channel:uint = 256; //256 just left, 512 l&r channel
var range:uint = Math.floor(channel/nrOfBars);

function updateVis(e:TimerEvent):void {
	SoundMixer.computeSpectrum(myByteArray, true);
	var i:uint;
	var average:Number = 0;
	for (i=0; i<channel;i++) {
		var barParam:Number = myByteArray.readFloat();
		if (i>0 && i<range) {
			average += barParam;
		} else if(i == range) {
			TweenMax.to(visualizerMC.bar0, .1, {height:(average/range)*barHeight+1, overwrite:1});
			average = 0;
		};
		if (i>range && i<range*2) {
			average += barParam;
		} else if(i == range*2) {
			TweenMax.to(visualizerMC.bar1, .1, {height:(average/range)*barHeight+1, overwrite:1});
			average = 0;
		};
		if (i>range*2 && i<range*3) {
			average += barParam;
		} else if(i == range*3) {
			TweenMax.to(visualizerMC.bar2, .1, {height:(average/range)*barHeight+1, overwrite:1});
			average = 0;			
		};
		if (i>range*3 && i<range*4) {
			average += barParam;
		} else if(i == range*4) {
			TweenMax.to(visualizerMC.bar3, .1, {height:(average/range)*barHeight+1, overwrite:1});
			average = 0;
		};
		if (i>range*4 && i<range*5) {
			average += barParam;
		} else if (i == range*5) {
			TweenMax.to(visualizerMC.bar4, .1, {height:(average/range)*barHeight+1, overwrite:1});
			average = 0;
		};
	};
};
visdisplayUpdate.addEventListener(TimerEvent.TIMER, updateVis);
visdisplayUpdate.addEventListener(TimerEvent.TIMER, tempVis);
visdisplayUpdate.start();

// this one is just for reference
var gr:Sprite = new Sprite();  
gr.x = 20;  
gr.y = 200;  
addChild(gr);  
var ba:ByteArray = new ByteArray();
function tempVis(e:TimerEvent):void {  	
  SoundMixer.computeSpectrum(ba, true);  	
  var i:int;  	
  gr.graphics.clear();  	
  gr.graphics.lineStyle(0, 0xFF0000);  	
  gr.graphics.beginFill(0xFF0000);	  	
  gr.graphics.moveTo(0, 0);  	
  var w:int = 1;  	
  for (i=0; i<256; i+=w) {
    var t:Number = ba.readFloat();  		
    var n:Number = (Math.abs(t) * 100);  		
    gr.graphics.drawRect(i, 0, w, -n);  	
  }  
}

Just add any mp3 to the music/ folder and name it “1.mp3”.

Sample: http://www.marcinbauer.com/work/spectrum/mp3.html
Source code in CS3.