Skip to main content
Participant
October 3, 2012
Answered

SOUND_COMPLETE event trigger not working properly. Please help.

  • October 3, 2012
  • 1 reply
  • 733 views

I know SOUND_COMPLETE event must be put after channel.play(). I don`t know why it doesn`t work. It only works if I play song in the channel but not songOut. The matter is if I put song in the channel the equalizer won`t work even if I add SampleDataEvent to it. Please help me.

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 ;

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();

}

}

This topic has been closed for replies.
Correct answer kglad

use:

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 ;

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{

channel = song.play();

channel.addEventListener(Event.SOUND_COMPLETE, checkTiming);

song.addEventListener(SampleDataEvent.SAMPLE_DATA, sampleData);


}

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();

}

}

and you'll need a crossdomain permissions file if your sound is loading from another domain.

1 reply

kglad
Community Expert
kgladCommunity ExpertCorrect answer
Community Expert
October 3, 2012

use:

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 ;

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{

channel = song.play();

channel.addEventListener(Event.SOUND_COMPLETE, checkTiming);

song.addEventListener(SampleDataEvent.SAMPLE_DATA, sampleData);


}

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();

}

}

and you'll need a crossdomain permissions file if your sound is loading from another domain.

Dorw123Author
Participant
October 4, 2012

But as I said if I use that the equalizer has no effect any more.