package { import flash.display.*; import flash.events.*; import flash.media.*; import gs.TweenLite; public class DynamicSound extends Sprite { private var $sound:Sound; private var noise:Number = 0; private var $audibleMax:Number = 0.2; private var $audibleMin:Number = 0; private var sampleDataArr:Array; private var position:Number=0; private var channel:SoundChannel; public var $pitch:Number; private var $volume:Number; private var $lastIndexedPitch:Number=0; public function DynamicSound():void { $volume = 0; $pitch = 0; $sound = new Sound(); $sound.addEventListener("sampleData", sampleEventHandler); channel = $sound.play(); } private function sampleEventHandler(e:SampleDataEvent):void { if (channel) { var transform:SoundTransform = new SoundTransform($volume, 0); channel.soundTransform = transform; } for(var i:uint=0; i<2048; i++) { noise += $pitch; e.data.writeFloat(Math.sin(noise)); e.data.writeFloat(Math.sin(noise)); e.data.writeFloat(Math.sin(1)); e.data.writeFloat(Math.sin(1)); } //trace(Math.sin(noise)) } public function set pitch(value:Number):void { TweenLite.to(this, .5, {$pitch:value * $audibleMax}); //$pitch = value * $audibleMax; //trace('pitch = '+$pitch); } public function get pitch():Number { return $pitch; } public function set lastIndexedPitch(value:Number):void { $lastIndexedPitch = value; //trace('pitch = '+$pitch); } public function get lastIndexedPitch():Number { return $lastIndexedPitch; } public function set volume(value:Number):void { $volume = value; } public function get volume():Number { return $volume; } } }