Dynamic sound generation test ※音が出ます terra1119 forked:1favorite:2lines:100license : MIT License modified : 2010-03-07 01:49:27 Embed Tweet package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.Event; import flash.events.SampleDataEvent; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.display.DisplayObjectContainer; import flash.text.TextField; import flash.filters.BlurFilter; [SWF(width="550", height="400", frameRate="30", backgroundColor="#000000")] public class TestSynthe extends Sprite { private var phase:Number=0; private var freq:Number=440; private const PI2:Number=Math.PI*2; private var soundChannelObject:SoundChannel= new SoundChannel(); private var soundTr:SoundTransform=new SoundTransform(); private var text_field:TextField = new TextField(); private var isPlaying:Boolean=true; private var ball:Sprite; private var blurObj:BlurFilter; public function TestSynthe() { var soundObj:Sound = new Sound(); soundObj.addEventListener(SampleDataEvent.SAMPLE_DATA,onSampleData); stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler); stage.addEventListener(MouseEvent.CLICK,clickHandler); soundChannelObject=soundObj.play(); addChild(text_field); text_field.border=true; text_field.background=true; text_field.backgroundColor=0xFFFFFF; text_field.width=120; text_field.height=20; text_field.x=stage.stageWidth-text_field.width-10; text_field.y=stage.stageHeight-text_field.height-10; textSet(); } private function mouseMoveHandler(e:MouseEvent):void { freq=mouseY*2+55; textSet(); if (isPlaying) { createBall(); } } private function clickHandler(e:MouseEvent):void { isPlaying=! isPlaying; if (! isPlaying) { soundTr.volume=0; soundChannelObject.soundTransform=soundTr; } else { soundTr.volume=1; soundChannelObject.soundTransform=soundTr; } } private function onSampleData(e:SampleDataEvent):void { var smpl:Number; var w:Number=PI2*freq/44100; var latency:Number=e.position/44.1-soundChannelObject.position; for (var i:int = 0; i < 4096; ++i) { phase+=w; if (phase>PI2) { phase-=PI2; } smpl=Math.sin(phase); e.data.writeFloat(smpl); e.data.writeFloat(smpl); } } private function textSet():void { var str:String=String(freq); text_field.text="Frequency="+str+"Hz"; } private function createBall():void { blurObj=new BlurFilter(); blurObj.blurX=2; blurObj.blurY=2; ball=new Sprite(); addChild(ball); ball.graphics.beginFill(Math.random()*0xFFFFFF); ball.graphics.drawCircle(mouseX,mouseY,freq/10); ball.graphics.endFill(); ball.blendMode="add"; ball.filters=[blurObj]; ball.addEventListener(Event.ENTER_FRAME,efHandler); //ball.addEventListener(MouseEvent.CLICK,clickHandler) } private function efHandler(e:Event):void { var targetSprite:Sprite=e.target as Sprite; targetSprite.alpha-=0.15; blurObj.blurX+=5; blurObj.blurY+=5; if (targetSprite.alpha<0) { targetSprite.removeEventListener(Event.ENTER_FRAME,efHandler); removeChild(targetSprite); targetSprite=null; } targetSprite.filters=[blurObj]; } } } Code Fullscreen Preview Fullscreen smallwind191.. tjoen Dynamic sound blurY blurX volume SampleDataEvent.ENTER_FRAME SoundTransform alpha target mouseY height blendMode width addEventListener filters position backgroundColor SampleDataEvent.SAMPLE_DATA border SampleDataEvent background mouseX sort new page view favorite forked pv915 forked from: Dynamic sound gen.. terra1119 forked:2 favorite:3lines:101 (diff:26)