Skip to content


Sound Spectrum Analyzer - Part II

So, with some base code from gotoandlearn.com I wanted to play around a little more with the sound spectrum.

Here is the main document class:

package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.filters.BitmapFilter;
    import flash.filters.BitmapFilterQuality;
    import flash.filters.GlowFilter;
	import flash.filters.BlurFilter;
	import flash.geom.Point;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.utils.ByteArray;
	import flash.media.SoundMixer;
	import flash.net.URLRequest;
	import flash.system.ApplicationDomain;
	import fl.controls.Button;

	public class Main extends Sprite
	{
		private var sp:Sprite = new Sprite();
		private var ba:ByteArray = new ByteArray();
		private var bmd:BitmapData = new BitmapData(700, 700, true, 0x000000);
		private var blur:BlurFilter = new BlurFilter(2,10,3);
		public var s:Sound = new Sound();
		private var channel:SoundChannel;
		private var isPlaying:Boolean;

		public function Main()
		{
			var isPlaying:Boolean = false;

			var ba:ByteArray = new ByteArray();
			addEventListener(Event.ENTER_FRAME, loop);

			var bm:Bitmap = new Bitmap(bmd);
			addChild(bm);

			var sp:Sprite = new Sprite();
			addChild(sp);

			// add the button
            var btn = new Button();
            btn.width = 300;
            btn.height = 30;
            btn.move ( 370, 650 );
            btn.label = "Play / Stop Toggle";
            addChild(btn);  

            btn.addEventListener(MouseEvent.CLICK, playSong);
		}

		private function loop(e:Event):void
		{
			sp.graphics.clear();
			sp.graphics.lineStyle(3, Math.random() * 0xFFFFFF);
			sp.graphics.moveTo(-1, 300);

			SoundMixer.computeSpectrum(ba);
			for(var i:uint=0; i<256; i++)
			{
				var num:Number = -ba.readFloat()*200 + 400;
				sp.graphics.lineTo(i*2, num);
			}

			bmd.draw(sp);
			bmd.applyFilter(bmd,bmd.rect,new Point(),blur);

			bmd.scroll(3,-10);
		}

		public function playSong(m:Event):void
		{
			if (!isPlaying)
			{
				// create a new sound
				var s:Sound = new Sound();
				s.load(new URLRequest("http://manewc.com/projects/flash/mp3/MagicCarpetRide.mp3"));

				// play the music
				channel = s.play();

				isPlaying = true;
			}
			else
			{
				// stop the music
				channel.stop();

				isPlaying = false;
			}
		}
	}
}

Share/Save/Bookmark

Posted in Actionscript 3, Audio.

0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.