Here’s a new experiment.
It uses the computeSpectrum method together with a simple particles class i wrote.
I think the effect is graphically very satisfing and personally cannot stop to look at it.
The song is “Aria regina della notte” from Mozart’s “Flauto Magico”.
Tomorrow I’ll post code and sources of this.
Hope you’ll be hypnothized from this as I am.

The picture is not well explaining, you must see this in action.
EDIT:
Ok, sorry for the late but here we are with the source code:
Download the SimpleParticleGenerator and SimpleParticle class zipped togheter, then just use this code to build the equalizer.
I release the code just now because I wanted to wrap the main code in a class too, and maybe add some methods to scale it like a component, but I realized it’s totally unuseful for few lines of code, and I don’t wanna loose the fun part in the experiment.
I promise that from now I will be faster to release the source code
// Author: Pierluigi Pesenti // Web: http://blog.oaxoa.com import flash.media.Sound; import flash.net.URLRequest; import flash.media.SoundMixer; import flash.utils.ByteArray; import flash.events.*; import flash.display.Sprite; import flash.filters.GlowFilter; import com.oaxoa.fx.SimpleParticleGenerator; import com.oaxoa.components.FrameRater; var req:URLRequest=new URLRequest("mozart.mp3"); var sound:Sound=new Sound(req); var ba:ByteArray=new ByteArray(); var samples:uint=32; var offset:uint=256/samples; // create a sprite and add 1*samples istances of the SimpleParticleGenerator class var _holder:Sprite=new Sprite(); for(var i:uint=0; i<samples; i++) { var pg:SimpleParticleGenerator=new SimpleParticleGenerator(); pg.y=252; pg.x=15+i*offset*2; pg.angleDeg=-90; _holder.addChild(pg); } // add the holder sprite and start music addChild(_holder); sound.play(); // listener for frame based animation addEventListener(Event.ENTER_FRAME, onframe); // some fancy glow filter // the glow filter is added to the holder sprite // and not to the single particle for two reasons // a lot of speed gain, and visually better blend result var glow:GlowFilter=new GlowFilter(); glow.color=0xFFAA00; _holder.filters=[glow]; // at every frame function onframe(event:Event):void { // compoute sound specturm SoundMixer.computeSpectrum(ba, true); var count:uint=0; //for every generator // with a 0-256 range only the left channel is sampled // you can easily goto from 256 to 512 for the right or sample both and average value for (var i:uint=0; i<256; i+=offset) { var t:Number=ba.readFloat(); var n:Number=t*20; var g=_holder.getChildAt(count); // set the particles speed at a value of n // n = the sound peak * 20 to raise the effect g.speed=n; count++; } } //add frame rate meter var fr:FrameRater=new FrameRater(0xffFFFF, false, true, 0x0099ff); addChild(fr);
Expect more equalizing fun.



















This blog is about actionscript 3, Flex and Adobe AIR developing and fun.
I am Pierluigi Pesenti (aka Panta) and here I post my experiments and classes done in my little spare time.
Hope You'll enjoy it and leave some comment. Also don't forget to subscribe to my feed if you want to keep updated about new posts.
