I dont know why SOUND_COMPLETE event don
t 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();
}
}