SOUND_COMPLETE event not triggering. Please help

I dont know why SOUND_COMPLETE event dont trigger. I put it after .play() method and nothing seems to happen. Please help

import flash.media.Sound;import flash.events.MouseEvent;
import fl.controls.Slider;
import fl.events.SliderEvent;
import flash.utils.ByteArray;
import flash.events.SampleDataEvent;
import flash.net.URLLoader;
import flash.events.Event;
import flash.net.URLRequest;
import flash.media.SoundChannel;
import Equalizer;
import flash.media.SoundTransform;




//////////////////////External Callers//////////////////
	ExternalInterface.addCallback("playStop",playStopCaller);
	ExternalInterface.addCallback("getPlaylist",getPlaylistCaller);
	//ExternalInterface.addCallback("eqChange",eqChangeCaller);




////////////////////////////////////////////////////////


////////////////////////Listeners ////////////////////////


addEventListener(Event.ENTER_FRAME, Update, false, 0, true);
addEventListener(Event.ENTER_FRAME, getPlaylistX, false, 0 ,true);
playBtn.addEventListener(MouseEvent.CLICK, playButtonHandler);
stopBtn.addEventListener(MouseEvent.CLICK, stopButtonHandler);
//////////////////////////////////////////////////////////


//////////////////includes//////////////////////


		var equalizer:Equalizer = new Equalizer();
		var eqVector:Vector.<Number> = new Vector.<Number>();
		eqVector[0] = 0;
		eqVector[1] = 0;
		eqVector[2] = 0;
		eqVector[3] = 0;
		eqVector[4] = 0;
		eqVector[5] = 0;
		eqVector[6] = 0;
		eqVector[7] = 0;
		eqVector[8] = 0;
		eqVector[9] = 0;
		eqVector[10] = 0;
		eqVector[11] = 0;
		eqVector[12] = 0;
		eqVector[13] = 0;
		eqVector[14] = 0;
		
	var ba:ByteArray ;
	var song:Sound;
	var songOut:Sound;
	var _samples:ByteArray;
	var _sampleBufferL:Vector.<Number>=new Vector.<Number>();
	var _sampleBufferR:Vector.<Number>=new Vector.<Number>();
	var volumeAdjust:SoundTransform = new SoundTransform();
	var playlistLength:Number = 0;
	var playlist:Array;
	var playTest:Array = new Array("media/sounds/test1.mp3","media/sounds/test2.mp3","media/sounds/test3.mp3");
	var channel:SoundChannel = new SoundChannel;
	channel.addEventListener(Event.SOUND_COMPLETE, checkTiming);
	const BUFFER_SIZE:int = 2048; // output buffer size 
	const MIN_SAFETY_BUFFER:int = 1024; // minimum collected input before output starts 


	var songName:String;
	var currentSong:Number = 0;
	var songUrl:URLRequest;


////////////////////////////////////////////////


function playStopCaller(t:String):void{
	if(t == "0"){
		stopSong();
	}
	else
		if(t == "1"){
			songName = new String();
			songName = playlist[currentSong];
			songUrl = new URLRequest(songName);
			playSong();
		}
}
function playButtonHandler(event:MouseEvent):void{
			songName = new String();
			songName = playlist[currentSong];
			songUrl = new URLRequest(songName);
			playSong();
}
function stopButtonHandler(event:MouseEvent):void{
	stopSong();
}


function playSong():void{


	volumeAdjust.volume = 0.5
	equalizer.preamp = 0.5;
	song = new Sound();
	song.addEventListener(Event.COMPLETE, loadCompleteSong);
	song.load(songUrl);
}
function stopSong():void{
	channel.stop();
	channel.removeEventListener(Event.SOUND_COMPLETE, checkTiming);
}


slider1.addEventListener(SliderEvent.CHANGE, slider1Handler);
slider2.addEventListener(SliderEvent.CHANGE, slider2Handler);
slider3.addEventListener(SliderEvent.CHANGE, slider3Handler);
slider4.addEventListener(SliderEvent.CHANGE, slider4Handler);
slider5.addEventListener(SliderEvent.CHANGE, slider5Handler);
slider6.addEventListener(SliderEvent.CHANGE, slider6Handler);
slider7.addEventListener(SliderEvent.CHANGE, slider1Handler);
slider8.addEventListener(SliderEvent.CHANGE, slider2Handler);
slider9.addEventListener(SliderEvent.CHANGE, slider3Handler);
slider10.addEventListener(SliderEvent.CHANGE, slider4Handler);
slider11.addEventListener(SliderEvent.CHANGE, slider5Handler);
slider12.addEventListener(SliderEvent.CHANGE, slider6Handler);
slider13.addEventListener(SliderEvent.CHANGE, slider4Handler);
slider14.addEventListener(SliderEvent.CHANGE, slider5Handler);
slider15.addEventListener(SliderEvent.CHANGE, slider6Handler);
volSlider.addEventListener(SliderEvent.CHANGE, volSliderHandler);


function slider1Handler(event:SliderEvent):void{
	eqVector[0] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider2Handler(event:SliderEvent):void{
	eqVector[1] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider3Handler(event:SliderEvent):void{
	eqVector[2] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider4Handler(event:SliderEvent):void{
	eqVector[3] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider5Handler(event:SliderEvent):void{
	eqVector[4] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider6Handler(event:SliderEvent):void{
	eqVector[5] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider7Handler(event:SliderEvent):void{
	eqVector[6] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider8Handler(event:SliderEvent):void{
	eqVector[7] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider9Handler(event:SliderEvent):void{
	eqVector[8] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider10Handler(event:SliderEvent):void{
	eqVector[9] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider11Handler(event:SliderEvent):void{
	eqVector[10] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider12Handler(event:SliderEvent):void{
	eqVector[11] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider13Handler(event:SliderEvent):void{
	eqVector[13] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider14Handler(event:SliderEvent):void{
	eqVector[14] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function slider15Handler(event:SliderEvent):void{
	eqVector[15] = Number(event.value)/100;
	equalizer.eqGains = eqVector;
}
function volSliderHandler(event:SliderEvent):void{
	volumeAdjust.volume = event.value/100;
	channel.soundTransform = volumeAdjust;
}


function sampleData(event:SampleDataEvent):void{
			_samples = new ByteArray();
			var len:Number = song.extract(_samples, BUFFER_SIZE),
			i:int=0,
			l:Number,
			r:Number;
			
			
			if ( len < BUFFER_SIZE ) {
				len += song.extract(_samples,BUFFER_SIZE-len,0);
			}
			_samples.position = 0;
			while (i < BUFFER_SIZE) {
				l = equalizer.applyFilter(_samples.readFloat());
				r = equalizer.applyFilter(_samples.readFloat());
				event.data.writeFloat(l);
				event.data.writeFloat(r);
				i++;
			}
}




function loadCompleteSong(event: Event):void{
	songOut = new Sound();
	
	songOut.addEventListener(SampleDataEvent.SAMPLE_DATA, sampleData);
	
	channel = songOut.play();
	channel.addEventListener(Event.SOUND_COMPLETE, checkTiming);
}
function Update($e:Event):void
{
	ba = new ByteArray();
	
	SoundMixer.computeSpectrum(ba,true);
	var eq1:Number = 0;
	var eq2:Number = 0;
	var eq3:Number = 0;
	var eq4:Number = 0;
	var eq5:Number = 0;
	var eq6:Number = 0;
	var eq7:Number = 0;
	var eq8:Number = 0;
	for(var i = 0;i<64;i++){
		eq1+= ba*;
	}
	for( i = 64;i<128;i++){
		eq2+= ba*;
	}
	for( i = 128;i<192;i++){
		eq3+= ba*;
	}
	for( i = 192;i<256;i++){
		eq4+= ba*;
	}
	for( i = 256;i<320;i++){
		eq5+= ba*;
	}
	for( i = 320;i<384;i++){
		eq6+= ba*;
	}
	for( i = 384;i<448;i++){
		eq7+= ba*;
	}
	for( i = 448;i<512;i++){
		eq8+= ba*;
	}
	if(eq1/64 < 100){
		var fxNr1:Number = eq1/64;
	}
	else
		fxNr1 = 100;
	if(eq2/64 < 100){
		var fxNr2:Number = eq2/64;
	}
	else
		fxNr2 = 100;
	if(eq3/64 < 100){
		var fxNr3:Number = eq3/64;
	}
	else
		fxNr3 = 100;
	if(eq4/64 < 100){
		var fxNr4:Number = eq4/64;
	}
	else
		fxNr4 = 100;
	if(eq5/64 < 100){
		var fxNr5:Number = eq5/64;
	}
	else
		fxNr5 = 100;
	if(eq6/64 < 100){
		var fxNr6:Number = eq6/64;
	}
	else
		fxNr6 = 100;
	if(eq7/64 < 100){
		var fxNr7:Number = eq7/64;
	}
	else
		fxNr7 = 100;
	if(eq8/64 < 100){
		var fxNr8:Number = eq8/64;
	}
	else
		fxNr8 = 100;


	
	var eqz1:Number = Math.abs(Math.round(fxNr1));
	var eqz2:Number = Math.abs(Math.round(fxNr2));
	var eqz3:Number = Math.abs(Math.round(fxNr3));
	var eqz4:Number = Math.abs(Math.round(fxNr4));
	var eqz5:Number = Math.abs(Math.round(fxNr5));
	var eqz6:Number = Math.abs(Math.round(fxNr6));
	var eqz7:Number = Math.abs(Math.round(fxNr7));
	var eqz8:Number = Math.abs(Math.round(fxNr8));


ExternalInterface.call("as3_getEq",eqz1,eqz2,eqz3,eqz4,eqz5,eqz6,eqz7,eqz8);
}
function getPlaylistCaller(x:Array){
	playlist = x;
	var playlistLength = playlist.length;
}
function getPlaylistX(event):void{
	playlist = playTest;
	playlistLength = playlist.length;
	trace(playlist.length);
}
nextBtn.addEventListener(MouseEvent.CLICK,nextSongHandler);
prevBtn.addEventListener(MouseEvent.CLICK,prevSongHandler);


function nextSongHandler(event:MouseEvent):void{
	if(currentSong < playlistLength-1){
		currentSong++;
		songName = new String();
		songName = playlist[currentSong];
		songUrl = new URLRequest(songName);
		stopSong();
		playSong();
	}
	else
		if(currentSong == playlistLength - 1){
			currentSong = 0;
			songName = new String();
			songName = playlist[currentSong];
			songUrl = new URLRequest(songName);
			stopSong();
			playSong();
		}
}
function prevSongHandler(event:MouseEvent):void{
	if(currentSong > 0){
		currentSong--;
		songName = new String();
		songName = playlist[currentSong];
		songUrl = new URLRequest(songName);
		stopSong();
		playSong();
	}
	else
		if(currentSong == 0){
			currentSong = playlistLength - 1;
			songName = new String();
			songName = playlist[currentSong];
			songUrl = new URLRequest(songName);
			stopSong();
			playSong();
		}
}
function checkTiming(event:Event):void{
		ExternalInterface.call("console.log","intra aici.");
		channel.removeEventListener(Event.SOUND_COMPLETE, checkTiming);
		if(currentSong < playlistLength-1){
			currentSong++;
			songName = new String();
			songName = playlist[currentSong];
			songUrl = new URLRequest(songName);
			stopSong();
			playSong();
		}
		else
			if(currentSong == playlistLength - 1){
				currentSong = 0;
				songName = new String();
				songName = playlist[currentSong];
				songUrl = new URLRequest(songName);
				stopSong();
				playSong();
			}
}