差分発生行の前後
無視リスト:
コミット日時:
2009/09/02 22:11:32 (2 年前)
コミッタ:
keim
ログメッセージ:

サウンドライブラリ SiON ver0.5.7 更新 仕様拡張,バグフィックスなど

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/SiOPM/trunk/samples/SiONTenorion/Tenorion.as

    r3015 r3059  
    66    import org.si.sion.*; 
    77    import org.si.sion.events.*; 
    8     import org.si.sion.sequencer.SiMMLTrack; 
    98    import org.si.sion.utils.SiONPresetVoice; 
    109     
     
    1817         
    1918        // voices, notes and tracks 
    20         public var tracks:Vector.<SiMMLTrack> = new Vector.<SiMMLTrack>(16); 
    21         public var voices:Vector.<int>
    22         public var notes:Vector.<int>
     19        public var voices:Vector.<SiONVoice> = new Vector.<SiONVoice>(16); 
     20        public var notes :Vector.<int> = Vector.<int>([36,48,60,72, 43,48,55,60, 65,67,70,72, 77,79,82,84])
     21        public var length:Vector.<int> = Vector.<int>([ 1, 1, 1, 1,  1, 1, 1, 1,  4, 4, 4, 4,  4, 4, 4, 4])
    2322         
    2423        // beat counter 
     
    3029        // constructor 
    3130        function Tenorion() { 
    32             // set voices of "%6@0-4" from preset 
     31            var i:int; 
     32             
     33            // set voices from preset 
    3334            var percusVoices:Array = presetVoice["valsound.percus"]; 
    34             driver.setVoice(0, percusVoices[0]);  // bass drum 
    35             driver.setVoice(1, percusVoices[27]); // snare drum 
    36             driver.setVoice(2, percusVoices[16]); // close hihat 
    37             driver.setVoice(3, percusVoices[21]); // open hihat 
    38             driver.setVoice(4, presetVoice["valsound.bass18"]); // bas
     35            voices[0] = percusVoices[0];  // bass drum 
     36            voices[1] = percusVoices[27]; // snare drum 
     37            voices[2] = percusVoices[16]; // close hihat 
     38            voices[3] = percusVoices[22]; // open hihat 
     39            for (i=4; i<8; i++) voices[i] = presetVoice["valsound.bass18"]; // other
    3940             
    40             // notes and voices 
    41             notes  = Vector.<int>([36,48,60,72, 43,48,55,60, 65,67,70,72, 77,79,82,84]); 
    42             voices = Vector.<int>([ 0, 1, 2, 3,  4, 4, 4, 4,  4, 4, 4, 4,  4, 4, 4, 4]); 
    43              
    44             // listen click 
    45             driver.setTimerInterruption(1, _onTimerInterruption); 
     41            // listen 
    4642            driver.setBeatCallbackInterval(1); 
    4743            driver.addEventListener(SiONTrackEvent.BEAT, _onBeat); 
    48             driver.addEventListener(SiONEvent.STREAM_START, _onStreamStart); 
     44            driver.setTimerInterruption(1, _onTimerInterruption); 
    4945             
    5046            // control pad 
     
    5349 
    5450            // start streaming 
     51            beatCounter = 0; 
    5552            driver.play(); 
    56         } 
    57          
    58          
    59         // _onStreamStart (SiONEvent.STREAM_START) is called back first of all after SiONDriver.play(). 
    60         private function _onStreamStart(e:SiONEvent) : void 
    61         { 
    62             // create new controlable tracks and set voice 
    63             for (var i:int=0; i<16; i++) { 
    64                 tracks[i] = driver.sequencer.newControlableTrack(); 
    65                 tracks[i].setChannelModuleType(6, 0, voices[i]); 
    66             } 
    67             beatCounter = 0; 
    6853        } 
    6954         
     
    8166            var beatIndex:int = beatCounter & 15; 
    8267            for (var i:int=0; i<16; i++) { 
    83                 if (matrixPad.sequences[i] & (1<<beatIndex)) tracks[i].keyOn(notes[i]); 
     68                if (matrixPad.sequences[i] & (1<<beatIndex)) driver.noteOn(notes[i], voices[i], length[i]); 
    8469            } 
    8570            beatCounter++; 
     
    10691    function MatrixPad(stage:Stage) { 
    10792        super(new BitmapData(320, 320, false, 0)); 
    108         for (var i:int=0; i<256; i++) { 
     93        var i:int; 
     94        for (i=0; i<256; i++) { 
    10995            pt.x = (i&15)*20; 
    11096            pt.y = (i&240)*1.25; 
    11197            buffer.copyPixels(padOff, padOff.rect, pt); 
    11298            bitmapData.copyPixels(padOff, padOff.rect, pt); 
    113             sequences[i] = 0; 
    11499        } 
    115          
     100        for (i=0; i<16; i++) sequences[i] = 0; 
    116101        addEventListener("enterFrame", _onEnterFrame); 
    117102        stage.addEventListener("click",  _onClick); 
     
    138123    private function _onClick(e:Event) : void { 
    139124        if (mouseX>=0 && mouseX<320 && mouseY>=0 && mouseY<320) { 
    140             var track:int = 15-int(mouseY*0.05),  
    141                 beat :int = int(mouseX*0.05); 
     125            var track:int = 15-int(mouseY*0.05), beat:int = int(mouseX*0.05); 
    142126            sequences[track] ^= 1<<beat; 
    143127            pt.x = beat*20;