RSS

Music Spectrum with AS3

Actionscript 3 | Posted on Feb 05 2010

Here’s the tutorial about how to create a music spectrum display from a sound file as3. Actionscript 3 has a new class called SoundMixer which gives you global sound control in the SWF file. It comes with the computeSpectrum method that takes a snapshot of the current sound wave and places it into the specified ByteArray object. The values are formatted as floating-point values, in the range -1.0 to 1.0. There are in total 512 values. Half of them for the right and left channel.

var url:String = "gongxi.mp3";
var request:URLRequest = new URLRequest(url);
var s:Sound = new Sound();
s.load(request);

var song:SoundChannel
var ba:ByteArray = new ByteArray();

var gr:Sprite = new Sprite();
gr.x = 20;
gr.y = 200;
addChild(gr);

song = s.play();
addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):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:uint = 2;
    for (i=0; i<512; i+=w) {
        var t:Number = ba.readFloat();
        var n:Number = (t * 100);
        gr.graphics.drawRect(i, 0, w, -n);
    }
}