SiON Test SiON Test http://wonderfl.net/c/f5eXから音を借りてきた shohei909 forked:1favorite:6lines:174license : MIT License modified : 2010-07-20 09:14:38 Embed Tweet //SiON Test //http://wonderfl.net/c/f5eXから音を借りてきた package { import flash.events.Event; import flash.display.Sprite; import org.si.sion.events.*; import org.si.sound.events.*; public class FlashTest extends Sprite { private var sion:SiON = new SiON(); private var count:int = 0; private var color:uint = 0xFF000000; private var whiteOut:Boolean = false; private var soundMap:SoundMap = new SoundMap(); public function FlashTest() { // write as3 code here.. addChild(soundMap); sion.dm.addEventListener(SoundObjectEvent.ENTER_FRAME , onFrame); sion.addEventListener(SiONTrackEvent.BEAT, onBeat); sion.addEventListener(SiONTrackEvent.NOTE_ON_FRAME, onNote); sion.dm.addEventListener(SoundObjectEvent.ENTER_FRAME , soundMap.dram); sion.bs.addEventListener(SoundObjectEvent.ENTER_FRAME , soundMap.bass); sion.start(); } private function onBeat(e:SiONEvent):void{ sion.measure = ++count; if(count==80){sion.end()} if(count==100){sion.start();count=0;whiteOut=false} } private function onNote(e:SiONEvent):void{ whiteOut=true; } private function onFrame(e:Event):void{ if(whiteOut){ if(color<0xFFFFFFFF){color+=0x30303;soundMap.whiteOut(color)} }else{ if(color>0xFF000000){color-=0x30303;soundMap.whiteOut(color)} } } } } import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Point; import flash.events.Event; import flash.display.*; //---------------------------------------- SiON import org.si.sion.*; import org.si.sion.events.*; import org.si.sion.effector.*; import org.si.sion.sequencer.*; import org.si.sound.*; import org.si.sound.events.*; import org.si.sound.synthesizers.*; import org.si.sound.patterns.*; class SiON extends SiONDriver { public var bs:BassSequencer = new BassSequencer("o3C", 15); public var dm:DrumMachine = new DrumMachine(0,0,0,2,2,2); private var back:SiONData, fill:SiONData, fill2:SiONData; private var analogSynth:AnalogSynth = new AnalogSynth(); function SiON() : void { super(); setVoice(0, new SiONVoice(5,2,63,63,-10,0,2,20)); back = compile("#EFFECT1{delay312,30,1};%5@0,40@v64,32q1s24$o6b-r2.;"); fill = compile("#A=o7[crgrfrcrgrfcrgfr];r1^1%6@0l16@v32,16q8$A(7)A(5);%2@f0,2,16q8s20@0,10%t1,1,0c1^1^8;%2q0s32l16v4[cc(]16;@v128%5@5q0s32,-128o3$c;");//) fill2= compile("#A=o7[drargrdrargaragr];%6@0l16@v16,8q8$AA"); bpm = 132; setSamplerData(0, render("%2@v128q0s32o4g16")); setSamplerData(1, render("#A=%6@0q0s20o3c*<<<g;A;kt7A")); setSamplerData(37, render("%6@0o7q8l64cb-f")); setSamplerData(39, render("%6@0o7q8l64gcd")); setSamplerData(88, render("%6@0o4q8l32g*<<g")); setSamplerData(90, render("%6@0o4q8l32f*<<f")); addEventListener(SiONEvent.STREAM_STOP, _onStreamStop); dm.volume = 0.6; bs.synthesizer = analogSynth; bs.volume = 0.6; analogSynth.setVCAEnvelop(0, 0.3, 0.7, 0.2); analogSynth.setVCFEnvelop(0.4, 0.3, 0.1, 0.6, 0.7); } public function set measure(m:int) : void { switch (m) { case 3: dm.bass.mute = false; break; case 6: dm.hihat.mute = false; break; case 9: bs.mute = false; bs.fadeIn(4); break; case 12: bpm = 105; break; case 15: bpm = 110; analogSynth.setVCFEnvelop(0.45, 0.3, 0.1, 0.6, 0.75); break; case 18: bpm = 115; analogSynth.setVCFEnvelop(0.5, 0.3, 0.1, 0.6, 0.8); break; case 21: bpm = 120; analogSynth.setVCFEnvelop(0.55, 0.3, 0.1, 0.6, 0.85); break; case 24: bpm = 125; analogSynth.setVCFEnvelop(0.6, 0.3, 0.1, 0.6, 0.85); break; case 27: bpm = 132; dm.snare.mute = false; dm.hihatPatternNumber = 2; break; case 35: sequenceOn(fill, null, 0, 0, 16); break; case 43: sequenceOn(fill2, null, 0, 0, 16); break; } } public function start() : void { bpm = 100; fadeIn(4); play(back); dm.snarePatternNumber = 0; dm.hihatPatternNumber = 13; dm.snare.mute = true; dm.hihat.mute = true; dm.bass.mute = true; bs.mute = true; dm.play(); bs.play(); } public function end() : void { fadeOut(8); } public function se(i:int, pan:int=0, len:int=0, qnt:int=1) : void { var t:SiMMLTrack = playSound(i, len, 0, qnt); t.effectSend1 = 32; t.pan = pan; } private function _onStreamStop(e:SiONEvent) : void { bs.stop(); dm.stop(); } } //背景 class SoundMap extends Bitmap{ public static var W:int = 465; public static var H:int = 465; public var defaultMap:BitmapData = new BitmapData(W,H,false,0x000000); private var hihatShape:Shape; private var bassDramShape:Shape; private var snareShape:Shape; private var bassShape:Shape; public function SoundMap():void{ super( new BitmapData(W,H,false,0x000000) ); addEventListener("enterFrame",enterFrame); //ハイハット hihatShape= new Shape(); hihatShape.graphics.beginFill(0x2244444,1); hihatShape.graphics.drawCircle(0,0,40); //バスドラム bassDramShape= new Shape(); bassDramShape.graphics.beginFill(0x444444,1); bassDramShape.graphics.drawRoundRect(-50,-50,100,100,30,30); //スネア snareShape= new Shape(); snareShape.graphics.beginFill(0x444444,1); snareShape.graphics.drawCircle(0,0,260); //バスシークエンサー bassShape= new Shape(); bassShape.graphics.beginFill(0x442222,1); bassShape.graphics.drawRect(50,50,50,50); } private function enterFrame(e:Event):void{ bitmapData.merge(defaultMap,defaultMap.rect,new Point(),40,40,40,40); } public function dram(e:SoundObjectEvent):void{ var obj:DrumMachine = e.soundObject as DrumMachine; var t:int = Math.floor(obj.gateTime*16); if(obj.mute == false){ if(obj.hihat.mute == false && obj.hihat.velocity >=1){ bitmapData.draw(hihatShape,new Matrix(1,0,0,1,W*Math.random(),H*Math.random()),new ColorTransform(1,1,1,obj.volume)); } if(obj.bass.mute == false && obj.bass.velocity >=1){ bitmapData.draw(bassDramShape,new Matrix(1,0,0,1,W/2,H/2),new ColorTransform(1,1,1,obj.volume)); } if(obj.snare.mute == false && obj.snare.velocity >=1){ bitmapData.draw(snareShape,new Matrix(1,0,0,1,W*Math.random(),H*Math.random()),new ColorTransform(1,1,1,obj.volume) ); } } } public function bass(e:SoundObjectEvent):void{ var obj:BassSequencer = e.soundObject as BassSequencer; var seq:Sequencer = obj.sequencer; if(obj.mute == false && seq.velocity >= 100){ var mtr:Matrix = new Matrix(); var scale:Number = seq.note/30; mtr.rotate(seq.frameCount/5*Math.PI); mtr.scale(scale,scale); mtr.translate(W/2,H/2); bitmapData.draw(bassShape,mtr,new ColorTransform(1,1,1,seq.velocity/255)); } } public function whiteOut(color:uint):void{ defaultMap.fillRect(defaultMap.rect,color); } } Code Fullscreen Preview Fullscreen yabuchany tjoen tkinjo siouxcitizen.. aobyrne : effectorscoresionsion-score Nyarineko : イカス! effector score sion sion-score color Shape fill draw merge drawRoundRect stop play rect Event.ENTER_FRAME fillRect start drawCircle drawRect addEventListener beginFill BitmapData Math.floor Bitmap Event sort new page view favorite forked pv425 SiON Test 2 shohei909 forked:0 favorite:0lines:116 (diff:255)