NoiseMaker kappaLab forked:5favorite:11lines:215license : All rights reserved modified : 2008-12-20 09:42:16 Embed Tweet 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; } } } Code Fullscreen Preview Fullscreen gaziya kuroarizuka ibu4gin jat32 Assembler hacker_9cxyb.. fallen sadamitsu Kay no48 : SoundMixersound atsumo : sound SoundMixer sound push Shape TimerEvent.ENTER_FRAME filters Sound addEventListener scaleY scaleX play Math.random Math.abs Math.PI Math.sin length Vector int Number sort new page view favorite forked pv53 forked from: NoiseMaker fukt forked:0 favorite:0lines:215 (diff:8) pv148 forked from: NoiseMaker nov forked:1 favorite:0lines:74 (diff:219) pv347 forked from: NoiseMaker shinseki09 forked:1 favorite:0lines:215 (diff:1) pv179 forked from: NoiseMaker shinseki09 forked:0 favorite:0lines:215 (diff:1) pv542 forked from: NoiseMaker shinseki09 forked:2 favorite:2lines:215 (diff:1) tag: graphics line matrix