In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

NoiseMaker

Get Adobe Flash player
by kappaLab 20 Dec 2008
package  
{
    
    import flash.display.Sprite
    import flash.display.Shape
    import flash.events.Event;
    import flash.filters.BlurFilter;
    import flash.filters.GlowFilter;
    import flash.media.SoundMixer;
    import flash.utils.ByteArray;

    import flash.events.SampleDataEvent;
    import flash.events.TimerEvent;
    import flash.media.Sound;
    import flash.utils.Timer;
    
    [SWF(backgroundColor=0x000000, frameRate=60)]

    public class NoiseMaker extends Sprite 
    {
        
        private var monitor:Vector.<Shape> = new Vector.<Shape>()
        
        public function NoiseMaker() 
        {   
            for (var i:int = 0; i < 256; i++) 
            {
                var s:Shape = new Shape()
                s.graphics.beginFill(0xFFFFFF * Math.random());
                s.graphics.drawCircle(0, 0, 20)
                //s.x = Math.sin(i) * (stage.stageWidth/2) + stage.stageWidth/2;
                //s.y = Math.cos(i) * stage.stageHeight/2 + stage.stageHeight/2;
                s.x = stage.stageWidth * i / 256
                s.y = stage.stageHeight/2
                monitor.push(s)
                addChild(s)
            }
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            filters = [new BlurFilter(5, 5)]
            
            var count:int = 0
            function setVol():void
            {
                count++
                
                if (count > 240) {
                    count = 1
                }
                

                
                if (count < 20) return;
                if (count % 20 == 0) {
                    volB = 2
                }
                if (count % 20 == 1
                    || count % 20 == 2
                    || count % 20 == 3
                    || count % 20 == 4
                    || count % 20 == 5
                    || count % 20 == 6) {
                    if(Math.random() > .5)
                    volB2 = 2
                }
                if (count < 40) return;

                if (count % 40 == 0) {
                    volP = 1
                }
                if (count % 40 == 5) {
                    volP2 = 1
                    volN = 1
                }
                
                if (count % 40 == 5
                    || count % 40 == 6
                    || count % 40 == 7
                    || count % 40 == 8
                    || count % 40 == 9
                    || count % 40 == 10) {
                    if(Math.random() > .5)
                    volN = 2
                    
                }
                
                if (count < 120) return;

                if (count % 120 == 0) {
                    volK2 = 1
                }
                if (count % 120 == 11
                    || count % 120 == 12
                    || count % 120 == 13
                    || count % 120 == 14
                    || count % 120 == 15
                    || count % 120 == 16) {
                    if(Math.random() > .3)
                    volK = 1
                }
                if (count % 120 == 11
                    || count % 120 == 12
                    || count % 120 == 13
                    || count % 120 == 14
                    || count % 120 == 15
                    || count % 120 == 16) {
                    if(Math.random() > .1)
                    volK3 = 1
                }
                if (count % 120 == 14
                    || count % 120 == 15
                    || count % 120 == 16
                    || count % 120 == 17
                    || count % 120 == 18
                    || count % 120 == 19) {
                    if(Math.random() > .1)
                    volK2 = 1
                    volP  = 1
                }

            }
            
            var volB:Number  = 0
            var volB2:Number = 0
            var volK:Number  = 0
            var volR:Number  = 0
            var volP:Number  = 0
            var volP2:Number  = 0
            var volN:Number  = 0
            var volN2:Number = 0
            var volK2:Number  = 0
            var volK3:Number  = 0
            
            var mySound:Sound = new Sound();
            function gen(e:SampleDataEvent):void {
                
                setVol()
                
                for ( var c:int = 0; c < 2048; c++ ) {
                    
                    var i:Number = Number(c + e.position)
                    var arr:Vector.<Number> = new Vector.<Number>()
                    
                    var bass:Number = 0;
                    volB += (0 - volB) * .0001;
                    bass = sine(i,60);
                    bass *=  volB
                    arr.push(bass)
                    
                    var bass2:Number = 0;
                    volB2 += (0 - volB2) * .0008;
                    bass2 = sine(i,20) ;
                    bass2 *=  volB2;
                    arr.push(bass2)
                    
                    var kick:Number = 0;
                    volK += (0 - volK) * .0001;
                    kick = triangle(i, 60);
                    kick = (kick < .1)?0:kick;
                    kick *=  (volK > .5)?1:volK; 
                    arr.push(kick)
                    
                    var kick2:Number = 0;
                    volK2 += (0 - volK2) * .0008;
                    kick2 =  square(i, .5) + square(i-1, 5) + noise();
                    kick2 *=  volK2                     
                    arr.push(kick2)
                    
                    var kick3:Number = 0;
                    volK3 += (0 - volK3) * .0006;
                    kick3 =  triangle(i, 2) + square(i,1)
                    kick3 *=  volK3                 
                    arr.push(kick3)
                    
                    var piano:Number = 0;
                    volP += (0 - volP) * .0001;
                    piano = sine(i,2.5)
                    piano *=  volP
                    arr.push(piano)
                    
                    var piano2:Number = 0;
                    volP2 += (0 - volP2) * .0001;
                    piano2 = sine(i,2.75)
                    piano2 *=  volP2
                    arr.push(piano2)
                    
                    var nis:Number = 0
                    volN += (0 - volN) * .0005;
                    nis = noise()
                    nis *= volN;
                    arr.push(nis)
                    
                    var nis2:Number = 0
                    volN2 += (0 - volN2) * .001 ;
                    nis2 = noise() + square(i,.5)
                    nis2 *= volN2;
                    arr.push(nis2)

                    var smpl:Number = 0
                    for each (var p:Number in arr) {
                        smpl += p
                    }
                    e.data.writeFloat(smpl);
                    e.data.writeFloat(smpl);
                }
            }

            mySound.addEventListener(SampleDataEvent.SAMPLE_DATA,gen);
            mySound.play();            
            
        }
        
        private function onEnterFrame(e:Event):void 
        {
            var bytes:ByteArray = new ByteArray();
			SoundMixer.computeSpectrum(bytes, false, 0);
			
			if (bytes.length == 1) return
			//trace(bytes.readFloat())
			bytes.position = 0
			
			for (var i:int = 0; i < 256 ; i++ ){
				var sample:Number = bytes.readFloat()
				monitor[i].scaleX = sample * 1
				monitor[i].scaleY = sample * 1
			}
        }
        private function sine(i:Number,f:Number):Number 
        {
            var smpl:Number = Math.sin(i / Math.PI / f);
            return smpl
        }
        private function square(i:Number, f:Number):Number 
        {
            var smpl:Number = Math.sin(i/Math.PI/f);
            smpl = (smpl > 0)?1: -1;
            return smpl
        }
        private function saw(i:Number,f:Number):Number 
        {
            f *= 25
            var smpl:Number = 1 - (i % f) / f * 2;
            return smpl
        }
        private function triangle(i:Number,f:Number):Number 
        {
            f *= 25
            var smpl:Number =Math.abs(((i) % f) / f - .5) * 4 - 1;
            return smpl
        }
        private function noise():Number
        {
            return Math.random() * 2 - 1;
        }
    }
    
}