﻿package local.display
{
	import flash.display.*;
	import flash.utils.*;
	
	public class MP3Equalizer extends MovieClip
	{
		private const BARS: Number = 10;
		
		private var maxHeight: Number;
		private var intvl: int;
		private var i: int;
		private var j: int;
		private var bars: Array;
		private var newH: Number;
		private var curH: Number;
		private var specVal: Number;
		
		public function MP3Equalizer() : void
		{
			maxHeight = height;
			intvl = int(256/BARS);
			
			bars = new Array(BARS);
			bars[0] = bar0;
			bars[1] = bar1;
			bars[2] = bar2;
			bars[3] = bar3;
			bars[4] = bar4;
			bars[5] = bar5;
			bars[6] = bar6;
			bars[7] = bar7;
			bars[8] = bar8;
			bars[9] = bar9;
		}
		
		public function show(spectrum: ByteArray) : void
		{
			var spectrum: ByteArray;
			visible = true;
			
			for (i = 0; i < BARS; i++)
			{
				spectrum.position = i*intvl;
				
				specVal = j = 0;
				while(j++ < BARS)
					specVal += spectrum.readUnsignedByte();
					
				newH = specVal / BARS / 256 * maxHeight;
				curH = bars[i].height;
				
				bars[i].height = newH > curH ? newH : curH + (newH - curH) / 5;
				bars[i].scaleX = 1;
			}
		}
	}
}