※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

 notice: Flash editor updated! Join the development! Thanks to MiniBuilder


FORKED
  1. // forked from keim_at_Si's SiON Tenorion
  2. // SiON TENORION for v0.57
  3. package {
  4.     import flash.display.*;
  5.     import flash.events.*;
  6.     import flash.text.TextField;
  7.     import org.si.sion.*;
  8.     import org.si.sion.events.*;
  9.     import org.si.sion.utils.SiONPresetVoice;
  10.     
  11.     [SWF(backgroundColor="#000000")]
  12.     public class Tenorion extends Sprite {
  13.         // driver
  14.         public var driver:SiONDriver = new SiONDriver();
  15.         
  16.         // preset voice
  17.         public var presetVoice:SiONPresetVoice = new SiONPresetVoice();
  18.         
  19.         // voices, notes and tracks
  20.         public var voices:Vector.<SiONVoice> = new Vector.<SiONVoice>(16);
  21.         public var notes :Vector.<int> = Vector.<int>([36,48,60,7243,48,55,6065,67,70,7277,79,82,84]);
  22.         public var length:Vector.<int> = Vector.<int>([ 1111,  1111,  4444,  4444]);
  23.         
  24.         // beat counter
  25.         public var beatCounter:int;
  26.         
  27.         // control pad
  28.         public var matrixPad:MatrixPad;
  29.         
  30.         // constructor
  31.         function Tenorion() {
  32.             var i:int;
  33.             
  34.             // set voices from preset
  35.             var percusVoices:Array = presetVoice["valsound.percus"];
  36.             voices[0] = percusVoices[0];  // bass drum
  37.             voices[1] = percusVoices[27]; // snare drum
  38.             voices[2] = percusVoices[16]; // close hihat
  39.             voices[3] = percusVoices[22]; // open hihat
  40.             for (i=4; i<8;  i++) voices[i] = presetVoice["valsound.bass18"];  // bass
  41.             for (i=8; i<16; i++) voices[i] = presetVoice["valsound.piano11"]; // e.piano            
  42.             // listen
  43.             driver.setBeatCallbackInterval(1);
  44.             driver.addEventListener(SiONTrackEvent.BEAT, _onBeat);
  45.             driver.setTimerInterruption(1, _onTimerInterruption);
  46.             
  47.             // control pad
  48.             with(addChild(matrixPad = new MatrixPad(stage))) {
  49.                 x = y = 72;
  50.             }
  51.             // start streaming
  52.             beatCounter = 0;
  53.             driver.play();
  54.         }
  55.         
  56.         
  57.         // _onBeat (SiONTrackEvent.BEAT) is called back in each beat at the sound timing.
  58.         private function _onBeat(e:SiONTrackEvent) : void 
  59.         {
  60.             matrixPad.beat(e.eventTriggerID & 15);
  61.         }
  62.         
  63.         
  64.         // _onTimerInterruption (SiONDriver.setTimerInterruption) is called back in each beat at the buffering timing.
  65.         private function _onTimerInterruption() : void
  66.         {
  67.             var beatIndex:int = beatCounter & 15;
  68.             for (var i:int=0; i<16; i++) {
  69.                 if (matrixPad.sequences[i] & (1<<beatIndex)) driver.noteOn(notes[i], voices[i], length[i]);
  70.             }
  71.             beatCounter++;
  72.         }
  73.     }
  74. }
  75. import flash.display.*;
  76. import flash.events.*;
  77. import flash.geom.*;
  78. class MatrixPad extends Bitmap {
  79.     public var sequences:Vector.<int> = new Vector.<int>(16);
  80.     private var canvas:Shape = new Shape();
  81.     private var buffer:BitmapData = new BitmapData(320320true0);
  82.     private var padOn:BitmapData  = _pad(0x303050, 0x6060a0);
  83.     private var padOff:BitmapData = _pad(0x303050, 0x202040);
  84.     private var pt:Point = new Point();
  85.     private var colt:ColorTransform = new ColorTransform(1,1,1,0.1)
  86.     
  87.     
  88.     function MatrixPad(stage:Stage) {
  89.         super(new BitmapData(320320false0));
  90.         var i:int;
  91.         for (i=0; i<256; i++) {
  92.             pt.x = (i&15)*20;
  93.             pt.y = (i&240)*1.25;
  94.             buffer.copyPixels(padOff, padOff.rect, pt);
  95.             bitmapData.copyPixels(padOff, padOff.rect, pt);
  96.         }
  97.         for (i=0; i<16; i++) sequences[i] = 0;
  98.         addEventListener("enterFrame", _onEnterFrame);
  99.         stage.addEventListener("click",  _onClick);
  100.     }
  101.     
  102.     
  103.     private function _pad(border:int, face:int) : BitmapData {
  104.         var pix:BitmapData = new BitmapData(2020false0);
  105.         canvas.graphics.clear();
  106.         canvas.graphics.lineStyle(1, border);
  107.         canvas.graphics.beginFill(face);
  108.         canvas.graphics.drawRect(111717);
  109.         canvas.graphics.endFill();
  110.         pix.draw(canvas);
  111.         return pix;
  112.     }
  113.     
  114.     
  115.     private function _onEnterFrame(e:Event) : void {
  116.         bitmapData.draw(buffer, null, colt);
  117.     }
  118.     
  119.     
  120.     private function _onClick(e:Event) : void {
  121.         if (mouseX>=0 && mouseX<320 && mouseY>=0 && mouseY<320) {
  122.             var track:int = 15-int(mouseY*0.05), beat:int = int(mouseX*0.05);
  123.             sequences[track] ^= 1<<beat;
  124.             pt.x = beat*20;
  125.             pt.y = (15-track)*20;
  126.             if (sequences[track] & (1<<beat)) buffer.copyPixels(padOn, padOn.rect, pt);
  127.             else buffer.copyPixels(padOff, padOff.rect, pt);
  128.         }
  129.     }
  130.     
  131.     
  132.     public function beat(beat16th:int) : void {
  133.         for (pt.x=beat16th*20, pt.y=0; pt.y<320; pt.y+=20) bitmapData.copyPixels(padOn, padOn.rect, pt);
  134.     }
  135. }
noswf
  1. // forked from keim_at_Si's SiON Tenorion
  2. // SiON TENORION for v0.57
  3. package {
  4.     import flash.display.*;
  5.     import flash.events.*;
  6.     import flash.text.TextField;
  7.     import org.si.sion.*;
  8.     import org.si.sion.events.*;
  9.     import org.si.sion.utils.SiONPresetVoice;
  10.     
  11.     [SWF(backgroundColor="#000000")]
  12.     public class Tenorion extends Sprite {
  13.         // driver
  14.         public var driver:SiONDriver = new SiONDriver();
  15.         
  16.         // preset voice
  17.         public var presetVoice:SiONPresetVoice = new SiONPresetVoice();
  18.         
  19.         // voices, notes and tracks
  20.         public var voices:Vector.<SiONVoice> = new Vector.<SiONVoice>(16);
  21.         public var notes :Vector.<int> = Vector.<int>([36,48,60,7243,48,55,6065,67,70,7277,79,82,84]);
  22.         public var length:Vector.<int> = Vector.<int>([ 1111,  1111,  4444,  4444]);
  23.         
  24.         // beat counter
  25.         public var beatCounter:int;
  26.         
  27.         // control pad
  28.         public var matrixPad:MatrixPad;
  29.         
  30.         // constructor
  31.         function Tenorion() {
  32.             var i:int;
  33.             
  34.             // set voices from preset
  35.             var percusVoices:Array = presetVoice["valsound.percus"];
  36.             voices[0] = percusVoices[0];  // bass drum
  37.             voices[1] = percusVoices[27]; // snare drum
  38.             voices[2] = percusVoices[16]; // close hihat
  39.             voices[3] = percusVoices[22]; // open hihat
  40.             for (i=4; i<8;  i++) voices[i] = presetVoice["valsound.bass18"];  // bass
  41.             for (i=8; i<16; i++) voices[i] = presetVoice["valsound.piano11"]; // e.piano            
  42.             // listen
  43.             driver.setBeatCallbackInterval(1);
  44.             driver.addEventListener(SiONTrackEvent.BEAT, _onBeat);
  45.             driver.setTimerInterruption(1, _onTimerInterruption);
  46.             
  47.             // control pad
  48.             with(addChild(matrixPad = new MatrixPad(stage))) {
  49.                 x = y = 72;
  50.             }
  51.             // start streaming
  52.             beatCounter = 0;
  53.             driver.play();
  54.         }
  55.         
  56.         
  57.         // _onBeat (SiONTrackEvent.BEAT) is called back in each beat at the sound timing.
  58.         private function _onBeat(e:SiONTrackEvent) : void 
  59.         {
  60.             matrixPad.beat(e.eventTriggerID & 15);
  61.         }
  62.         
  63.         
  64.         // _onTimerInterruption (SiONDriver.setTimerInterruption) is called back in each beat at the buffering timing.
  65.         private function _onTimerInterruption() : void
  66.         {
  67.             var beatIndex:int = beatCounter & 15;
  68.             for (var i:int=0; i<16; i++) {
  69.                 if (matrixPad.sequences[i] & (1<<beatIndex)) driver.noteOn(notes[i], voices[i], length[i]);
  70.             }
  71.             beatCounter++;
  72.         }
  73.     }
  74. }
  75. import flash.display.*;
  76. import flash.events.*;
  77. import flash.geom.*;
  78. class MatrixPad extends Bitmap {
  79.     public var sequences:Vector.<int> = new Vector.<int>(16);
  80.     private var canvas:Shape = new Shape();
  81.     private var buffer:BitmapData = new BitmapData(320320true0);
  82.     private var padOn:BitmapData  = _pad(0x303050, 0x6060a0);
  83.     private var padOff:BitmapData = _pad(0x303050, 0x202040);
  84.     private var pt:Point = new Point();
  85.     private var colt:ColorTransform = new ColorTransform(1,1,1,0.1)
  86.     
  87.     
  88.     function MatrixPad(stage:Stage) {
  89.         super(new BitmapData(320320false0));
  90.         var i:int;
  91.         for (i=0; i<256; i++) {
  92.             pt.x = (i&15)*20;
  93.             pt.y = (i&240)*1.25;
  94.             buffer.copyPixels(padOff, padOff.rect, pt);
  95.             bitmapData.copyPixels(padOff, padOff.rect, pt);
  96.         }
  97.         for (i=0; i<16; i++) sequences[i] = 0;
  98.         addEventListener("enterFrame", _onEnterFrame);
  99.         stage.addEventListener("click",  _onClick);
  100.     }
  101.     
  102.     
  103.     private function _pad(border:int, face:int) : BitmapData {
  104.         var pix:BitmapData = new BitmapData(2020false0);
  105.         canvas.graphics.clear();
  106.         canvas.graphics.lineStyle(1, border);
  107.         canvas.graphics.beginFill(face);
  108.         canvas.graphics.drawRect(111717);
  109.         canvas.graphics.endFill();
  110.         pix.draw(canvas);
  111.         return pix;
  112.     }
  113.     
  114.     
  115.     private function _onEnterFrame(e:Event) : void {
  116.         bitmapData.draw(buffer, null, colt);
  117.     }
  118.     
  119.     
  120.     private function _onClick(e:Event) : void {
  121.         if (mouseX>=0 && mouseX<320 && mouseY>=0 && mouseY<320) {
  122.             var track:int = 15-int(mouseY*0.05), beat:int = int(mouseX*0.05);
  123.             sequences[track] ^= 1<<beat;
  124.             pt.x = beat*20;
  125.             pt.y = (15-track)*20;
  126.             if (sequences[track] & (1<<beat)) buffer.copyPixels(padOn, padOn.rect, pt);
  127.             else buffer.copyPixels(padOff, padOff.rect, pt);
  128.         }
  129.     }
  130.     
  131.     
  132.     public function beat(beat16th:int) : void {
  133.         for (pt.x=beat16th*20, pt.y=0; pt.y<320; pt.y+=20) bitmapData.copyPixels(padOn, padOn.rect, pt);
  134.     }
  135. }
noswf
  1. // forked from keim_at_Si's SiON Tenorion
  2. // SiON TENORION for v0.57
  3. package {
  4.     import flash.display.*;
  5.     import flash.events.*;
  6.     import flash.text.TextField;
  7.     import org.si.sion.*;
  8.     import org.si.sion.events.*;
  9.     import org.si.sion.utils.SiONPresetVoice;
  10.     
  11.     [SWF(backgroundColor="#000000")]
  12.     public class Tenorion extends Sprite {
  13.         // driver
  14.         public var driver:SiONDriver = new SiONDriver();
  15.         
  16.         // preset voice
  17.         public var presetVoice:SiONPresetVoice = new SiONPresetVoice();
  18.         
  19.         // voices, notes and tracks
  20.         public var voices:Vector.<SiONVoice> = new Vector.<SiONVoice>(16);
  21.         public var notes :Vector.<int> = Vector.<int>([36,48,60,7243,48,55,6065,67,70,7277,79,82,84]);
  22.         public var length:Vector.<int> = Vector.<int>([ 1111,  1111,  4444,  4444]);
  23.         
  24.         // beat counter
  25.         public var beatCounter:int;
  26.         
  27.         // control pad
  28.         public var matrixPad:MatrixPad;
  29.         
  30.         // constructor
  31.         function Tenorion() {
  32.             var i:int;
  33.             
  34.             // set voices from preset
  35.             var percusVoices:Array = presetVoice["valsound.percus"];
  36.             voices[0] = percusVoices[0];  // bass drum
  37.             voices[1] = percusVoices[27]; // snare drum
  38.             voices[2] = percusVoices[16]; // close hihat
  39.             voices[3] = percusVoices[22]; // open hihat
  40.             for (i=4; i<8;  i++) voices[i] = presetVoice["valsound.bass18"];  // bass
  41.             for (i=8; i<16; i++) voices[i] = presetVoice["valsound.piano11"]; // e.piano            
  42.             // listen
  43.             driver.setBeatCallbackInterval(1);
  44.             driver.addEventListener(SiONTrackEvent.BEAT, _onBeat);
  45.             driver.setTimerInterruption(1, _onTimerInterruption);
  46.             
  47.             // control pad
  48.             with(addChild(matrixPad = new MatrixPad(stage))) {
  49.                 x = y = 72;
  50.             }
  51.             // start streaming
  52.             beatCounter = 0;
  53.             driver.play();
  54.         }
  55.         
  56.         
  57.         // _onBeat (SiONTrackEvent.BEAT) is called back in each beat at the sound timing.
  58.         private function _onBeat(e:SiONTrackEvent) : void 
  59.         {
  60.             matrixPad.beat(e.eventTriggerID & 15);
  61.         }
  62.         
  63.         
  64.         // _onTimerInterruption (SiONDriver.setTimerInterruption) is called back in each beat at the buffering timing.
  65.         private function _onTimerInterruption() : void
  66.         {
  67.             var beatIndex:int = beatCounter & 15;
  68.             for (var i:int=0; i<16; i++) {
  69.                 if (matrixPad.sequences[i] & (1<<beatIndex)) driver.noteOn(notes[i], voices[i], length[i]);
  70.             }
  71.             beatCounter++;
  72.         }
  73.     }
  74. }
  75. import flash.display.*;
  76. import flash.events.*;
  77. import flash.geom.*;
  78. class MatrixPad extends Bitmap {
  79.     public var sequences:Vector.<int> = new Vector.<int>(16);
  80.     private var canvas:Shape = new Shape();
  81.     private var buffer:BitmapData = new BitmapData(320320true0);
  82.     private var padOn:BitmapData  = _pad(0x303050, 0x6060a0);
  83.     private var padOff:BitmapData = _pad(0x303050, 0x202040);
  84.     private var pt:Point = new Point();
  85.     private var colt:ColorTransform = new ColorTransform(1,1,1,0.1)
  86.     
  87.     
  88.     function MatrixPad(stage:Stage) {
  89.         super(new BitmapData(320320false0));
  90.         var i:int;
  91.         for (i=0; i<256; i++) {
  92.             pt.x = (i&15)*20;
  93.             pt.y = (i&240)*1.25;
  94.             buffer.copyPixels(padOff, padOff.rect, pt);
  95.             bitmapData.copyPixels(padOff, padOff.rect, pt);
  96.         }
  97.         for (i=0; i<16; i++) sequences[i] = 0;
  98.         addEventListener("enterFrame", _onEnterFrame);
  99.         stage.addEventListener("click",  _onClick);
  100.     }
  101.     
  102.     
  103.     private function _pad(border:int, face:int) : BitmapData {
  104.         var pix:BitmapData = new BitmapData(2020false0);
  105.         canvas.graphics.clear();
  106.         canvas.graphics.lineStyle(1, border);
  107.         canvas.graphics.beginFill(face);
  108.         canvas.graphics.drawRect(111717);
  109.         canvas.graphics.endFill();
  110.         pix.draw(canvas);
  111.         return pix;
  112.     }
  113.     
  114.     
  115.     private function _onEnterFrame(e:Event) : void {
  116.         bitmapData.draw(buffer, null, colt);
  117.     }
  118.     
  119.     
  120.     private function _onClick(e:Event) : void {
  121.         if (mouseX>=0 && mouseX<320 && mouseY>=0 && mouseY<320) {
  122.             var track:int = 15-int(mouseY*0.05), beat:int = int(mouseX*0.05);
  123.             sequences[track] ^= 1<<beat;
  124.             pt.x = beat*20;
  125.             pt.y = (15-track)*20;
  126.             if (sequences[track] & (1<<beat)) buffer.copyPixels(padOn, padOn.rect, pt);
  127.             else buffer.copyPixels(padOff, padOff.rect, pt);
  128.         }
  129.     }
  130.     
  131.     
  132.     public function beat(beat16th:int) : void {
  133.         for (pt.x=beat16th*20, pt.y=0; pt.y<320; pt.y+=20) bitmapData.copyPixels(padOn, padOn.rect, pt);
  134.     }
  135. }
noswf
  1. // forked from keim_at_Si's SiON Tenorion
  2. // SiON TENORION for v0.57
  3. package {
  4.     import flash.display.*;
  5.     import flash.events.*;
  6.     import flash.text.TextField;
  7.     import org.si.sion.*;
  8.     import org.si.sion.events.*;
  9.     import org.si.sion.utils.SiONPresetVoice;
  10.     
  11.     [SWF(backgroundColor="#000000")]
  12.     public class Tenorion extends Sprite {
  13.         // driver
  14.         //public var driver:SiONDriver = new SiONDriver();
  15.         
  16.         // preset voice
  17.         public var presetVoice:SiONPresetVoice = new SiONPresetVoice();
  18.         
  19.         // voices, notes and tracks
  20.         public var voices:Vector.<SiONVoice> = new Vector.<SiONVoice>(16);
  21.         public var notes :Vector.<int> = Vector.<int>([36,48,60,7243,48,55,6065,67,70,7277,79,82,84]);
  22.         public var length:Vector.<int> = Vector.<int>([ 1111,  1111,  4444,  4444]);
  23.         
  24.         // beat counter
  25.         public var beatCounter:int;
  26.         
  27.         // control pad
  28.         public var matrixPad:MatrixPad;
  29.         
  30.         // constructor
  31.         function Tenorion() {
  32.             var i:int;
  33.             
  34.             // set voices from preset
  35.             var percusVoices:Array = presetVoice["valsound.percus"];
  36.             voices[0] = percusVoices[0];  // bass drum
  37.             voices[1] = percusVoices[27]; // snare drum
  38.             voices[2] = percusVoices[16]; // close hihat
  39.             voices[3] = percusVoices[22]; // open hihat
  40.             for (i=4; i<8;  i++) voices[i] = presetVoice["valsound.bass18"];  // bass
  41.             for (i=8; i<16; i++) voices[i] = presetVoice["valsound.piano11"]; // e.piano            
  42.             // listen
  43.             driver.setBeatCallbackInterval(1);
  44.             driver.addEventListener(SiONTrackEvent.BEAT, _onBeat);
  45.             driver.setTimerInterruption(1, _onTimerInterruption);
  46.             
  47.             // control pad
  48.             with(addChild(matrixPad = new MatrixPad(stage))) {
  49.                 x = y = 72;
  50.             }
  51.             // start streaming
  52.             beatCounter = 0;
  53.             driver.play();
  54.         }
  55.         
  56.         
  57.         // _onBeat (SiONTrackEvent.BEAT) is called back in each beat at the sound timing.
  58.         private function _onBeat(e:SiONTrackEvent) : void 
  59.         {
  60.             matrixPad.beat(e.eventTriggerID & 15);
  61.         }
  62.         
  63.         
  64.         // _onTimerInterruption (SiONDriver.setTimerInterruption) is called back in each beat at the buffering timing.
  65.         private function _onTimerInterruption() : void
  66.         {
  67.             var beatIndex:int = beatCounter & 15;
  68.             for (var i:int=0; i<16; i++) {
  69.                 if (matrixPad.sequences[i] & (1<<beatIndex)) driver.noteOn(notes[i], voices[i], length[i]);
  70.             }
  71.             beatCounter++;
  72.         }
  73.     }
  74. }
  75. import flash.display.*;
  76. import flash.events.*;
  77. import flash.geom.*;
  78. class MatrixPad extends Bitmap {
  79.     public var sequences:Vector.<int> = new Vector.<int>(16);
  80.     private var canvas:Shape = new Shape();
  81.     private var buffer:BitmapData = new BitmapData(320320true0);
  82.     private var padOn:BitmapData  = _pad(0x303050, 0x6060a0);
  83.     private var padOff:BitmapData = _pad(0x303050, 0x202040);
  84.     private var pt:Point = new Point();
  85.     private var colt:ColorTransform = new ColorTransform(1,1,1,0.1)
  86.     
  87.     
  88.     function MatrixPad(stage:Stage) {
  89.         super(new BitmapData(320320false0));
  90.         var i:int;
  91.         for (i=0; i<256; i++) {
  92.             pt.x = (i&15)*20;
  93.             pt.y = (i&240)*1.25;
  94.             buffer.copyPixels(padOff, padOff.rect, pt);
  95.             bitmapData.copyPixels(padOff, padOff.rect, pt);
  96.         }
  97.         for (i=0; i<16; i++) sequences[i] = 0;
  98.         addEventListener("enterFrame", _onEnterFrame);
  99.         stage.addEventListener("click",  _onClick);
  100.     }
  101.     
  102.     
  103.     private function _pad(border:int, face:int) : BitmapData {
  104.         var pix:BitmapData = new BitmapData(2020false0);
  105.         canvas.graphics.clear();
  106.         canvas.graphics.lineStyle(1, border);
  107.         canvas.graphics.beginFill(face);
  108.         canvas.graphics.drawRect(111717);
  109.         canvas.graphics.endFill();
  110.         pix.draw(canvas);
  111.         return pix;
  112.     }
  113.     
  114.     
  115.     private function _onEnterFrame(e:Event) : void {
  116.         bitmapData.draw(buffer, null, colt);
  117.     }
  118.     
  119.     
  120.     private function _onClick(e:Event) : void {
  121.         if (mouseX>=0 && mouseX<320 && mouseY>=0 && mouseY<320) {
  122.             var track:int = 15-int(mouseY*0.05), beat:int = int(mouseX*0.05);
  123.             sequences[track] ^= 1<<beat;
  124.             pt.x = beat*20;
  125.             pt.y = (15-track)*20;
  126.             if (sequences[track] & (1<<beat)) buffer.copyPixels(padOn, padOn.rect, pt);
  127.             else buffer.copyPixels(padOff, padOff.rect, pt);
  128.         }
  129.     }
  130.     
  131.     
  132.     public function beat(beat16th:int) : void {
  133.         for (pt.x=beat16th*20, pt.y=0; pt.y<320; pt.y+=20) bitmapData.copyPixels(padOn, padOn.rect, pt);
  134.     }
  135. }
noswf
  1. // forked from keim_at_Si's SiON Tenorion
  2. // SiON TENORION for v0.57
  3. package {
  4.     import flash.display.*;
  5.     import flash.events.*;
  6.     import flash.text.TextField;
  7.     import org.si.sion.*;
  8.     import org.si.sion.events.*;
  9.     import org.si.sion.utils.SiONPresetVoice;
  10.     
  11.     [SWF(backgroundColor="#ffffff")]
  12.     public class Tenorion extends Sprite {
  13.         // driver
  14.         public var driver:SiONDriver = new SiONDriver();
  15.         
  16.         // preset voice
  17.         public var presetVoice:SiONPresetVoice = new SiONPresetVoice();
  18.         
  19.         // voices, notes and tracks
  20.         public var voices:Vector.<SiONVoice> = new Vector.<SiONVoice>(16);
  21.         public var notes :Vector.<int> = Vector.<int>([36,48,60,7243,36,48,60,7236,48,60,7243,36]);
  22.         public var length:Vector.<int> = Vector.<int>([ 1111,  1111,  1111,  1111]);
  23.         
  24.         // beat counter
  25.         public var beatCounter:int;
  26.         
  27.         // control pad
  28.         public var matrixPad:MatrixPad;
  29.         
  30.         // constructor
  31.         function Tenorion() {
  32.             var i:int;
  33.             
  34.             // set voices from preset
  35.             var percusVoices:Array = presetVoice["valsound.percus"];
  36.           
  37.       voices[1] = percusVoices[0];  // bass drum
  38.             voices[2] = percusVoices[27]; // snare drum
  39.             voices[3] = percusVoices[16]; // close hihat
  40.             voices[4] = percusVoices[22]; // open hihat
  41.              voices[5] = percusVoices[0];  // bass drum
  42.             voices[6] = percusVoices[27]; // snare drum
  43.             voices[7] = percusVoices[16]; // close hihat
  44.             voices[8] = percusVoices[22]; // open hihat
  45.              voices[9] = percusVoices[0];  // bass drum
  46.             voices[10] = percusVoices[27]; // snare drum
  47.             voices[11] = percusVoices[16]; // close hihat
  48.             voices[12] = percusVoices[22]; // open hihat
  49.              voices[13] = percusVoices[0];  // bass drum
  50.             voices[14] = percusVoices[27]; // snare drum
  51.             voices[15] = percusVoices[16]; // close hihat
  52.             voices[16] = percusVoices[22]; // open hihat
  53.              voices[0] = percusVoices[0];  // bass drum
  54.             
  55.             
  56.             // listen
  57.             driver.setBeatCallbackInterval(1);
  58.             driver.addEventListener(SiONTrackEvent.BEAT, _onBeat);
  59.             driver.setTimerInterruption(1, _onTimerInterruption);
  60.             
  61.             // control pad
  62.             with(addChild(matrixPad = new MatrixPad(stage))) {
  63.                 x = y =  0;
  64.             }
  65.             // start streaming
  66.             beatCounter = 0;
  67.             driver.play();
  68.         }
  69.         
  70.         
  71.         // _onBeat (SiONTrackEvent.BEAT) is called back in each beat at the sound timing.
  72.         private function _onBeat(e:SiONTrackEvent) : void 
  73.         {
  74.             matrixPad.beat(e.eventTriggerID & 15);
  75.         }
  76.         
  77.         
  78.         // _onTimerInterruption (SiONDriver.setTimerInterruption) is called back in each beat at the buffering timing.
  79.         private function _onTimerInterruption() : void
  80.         {
  81.             var beatIndex:int = beatCounter & 15;
  82.             for (var i:int=0; i<16;  i++) {
  83.                 if (matrixPad.sequences[i] & (1<<beatIndex)) driver.noteOn(notes[i], voices[i], length[i]);
  84.             }
  85.             beatCounter++;
  86.         }
  87.     }
  88. }
  89. import flash.display.*;
  90. import flash.events.*;
  91. import flash.geom.*;
  92. class MatrixPad extends Bitmap {
  93.     public var sequences:Vector.<int> = new Vector.<int>(16);
  94.     private var canvas:Shape = new Shape();
  95.     private var buffer:BitmapData = new BitmapData(576120true0);
  96.     private var padOn:BitmapData  = _pad(0xFFFFFF, 0x4b7322);
  97.     private var padOff:BitmapData = _pad(0xFFFFFF,0xCCCCCC);
  98.     private var pt:Point = new Point();
  99.     private var colt:ColorTransform = new ColorTransform(1,1,1,0.1)
  100.     
  101.     
  102.     function MatrixPad(stage:Stage) {
  103.         super(new BitmapData(576120false0));
  104.         var i:int;
  105.         for (i=0; i<96; i++) {
  106.             pt.x = (i&15)*36;
  107.             pt.y = (i&240)*1.25;
  108.             buffer.copyPixels(padOff, padOff.rect, pt);
  109.             bitmapData.copyPixels(padOff, padOff.rect, pt);
  110.         }
  111.         for (i=0; i<16; i++) sequences[i] = 0;
  112.         addEventListener("enterFrame", _onEnterFrame);
  113.         stage.addEventListener("click",  _onClick);
  114.     }
  115.     
  116.     
  117.     private function _pad(border:int, face:int) : BitmapData {
  118.         var pix:BitmapData = new BitmapData(3620false0);
  119.         canvas.graphics.clear();
  120.         canvas.graphics.lineStyle(4, border);
  121.         canvas.graphics.beginFill(face);
  122.         canvas.graphics.drawRect(0036,20);
  123.         canvas.graphics.endFill();
  124.         pix.draw(canvas);
  125.         return pix;
  126.     }
  127.     
  128.     
  129.     private function _onEnterFrame(e:Event) : void {
  130.         bitmapData.draw(buffer, null, colt);
  131.     }
  132.     
  133.     
  134.     private function _onClick(e:Event) : void {
  135.         if (mouseX>=0 && mouseX<576 && mouseY>=0 && mouseY<120) {
  136.             var track:int = 15-int(mouseY*0.05), beat:int = int(mouseX*0.027);
  137.             sequences[track] ^= 1<<beat;
  138.             pt.x = beat*36;
  139.             pt.y = (15-track)*20;
  140.             if (sequences[track] & (1<<beat)) buffer.copyPixels(padOn, padOn.rect, pt);
  141.             else buffer.copyPixels(padOff, padOff.rect, pt);
  142.         }
  143.     }
  144.     
  145.     
  146.     public function beat(beat16th:int) : void {
  147.         for (pt.x=beat16th*36, pt.y=0; pt.y<120; pt.y+=20) bitmapData.copyPixels(padOn, padOn.rect, pt);
  148.     }
  149. }
noswf
Get Adobe Flash Player