root/as3/SiOPM/trunk/samples/Tutorials/CustomFader.as

リビジョン 2989, 3.3 kB (コミッタ: keim, コミット時期: 3 年 前)

サウンドライブラリ SiON ver0.5.6 更新 物理音源追加,サンプル追加,waveColor追加,アルペジェータ追加,その他色々

Line 
1 // Sample for custom fader.
2 package {
3     import flash.display.Sprite;
4     import flash.events.*;
5     import org.si.sion.*;
6     import org.si.sion.events.*;
7     import org.si.sion.utils.Fader;
8     import org.si.sion.utils.SiONPresetVoice;
9     import org.si.sion.effector.SiCtrlFilterLowPass;
10    
11    
12     public class CustomFader extends Sprite {
13         // driver
14         public var driver:SiONDriver = new SiONDriver();
15        
16         // preset voice
17         public var presetVoice:SiONPresetVoice = new SiONPresetVoice();
18        
19         // voice for sampler "%10"
20         public var samplerVoice:SiONVoice = new SiONVoice(10);
21        
22         // MML data
23         public var drumLoop:SiONData;
24
25         // Custom fader
26         public var lpfFader:Fader = new Fader();
27        
28         // low pass filter effector
29         public var lpf:SiCtrlFilterLowPass = new SiCtrlFilterLowPass();
30        
31        
32         // constructor
33         function CustomFader() {
34             // compile mml.
35             drumLoop = driver.compile("%6@0o3l8$c2cc.c.; %6@1o3$rcrc; %6@2v8l16$[crccrrcc]; %6@3v8o3$[rc8r8]")
36            
37             // set voices of "%6@0-3" from preset
38             var percusVoices:Array = presetVoice["valsound.percus"];
39             drumLoop.setVoice(0, percusVoices[0]);  // bass drum
40             drumLoop.setVoice(1, percusVoices[27]); // snare drum
41             drumLoop.setVoice(2, percusVoices[16]); // close hihat
42             drumLoop.setVoice(3, percusVoices[21]); // open hihat
43            
44             // listen click
45             driver.addEventListener(SiONEvent.STREAM_START, _onStreamStart);
46             driver.addEventListener(SiONEvent.STREAM, _onStream);
47             stage.addEventListener("click", _onClick);
48            
49             // set parameters of low pass filter
50             lpf.initialize();
51             lpf.control(1, 0.5);
52            
53             // connect low pass filter on slot0.
54             driver.effector.initialize();
55             driver.effector.connect(0, lpf);
56            
57             // play with an argument of resetEffector = false.
58             driver.play(drumLoop, false);
59         }
60        
61        
62         private function _onClick(e:Event) : void
63         {
64             // start custom fade with 10[sec] if the fader is inactive.
65             // The "10 * 44100 / 2048" calculates callbacking count of _onStream in 10 seconds.
66             if (!lpfFader.isActive) lpfFader.setFade(_fadeLPF, 1, 0, 10 * 44100 / 2048);
67         }
68        
69        
70         private function _onStreamStart(e:SiONEvent) : void
71         {
72             // start custom fade with 5[sec].
73             // The "5 * 44100 / 2048" calculates callbacking count of _onStream in 5 seconds.
74             lpfFader.setFade(_fadeLPF, 0, 1, 5 * 44100 / 2048);
75         }
76        
77        
78         private function _onStream(e:SiONEvent) : void
79         {
80             // execute fader in each streaming timing
81             if (lpfFader.execute()) {
82                 // Fader.execute() returns true when the fading achieves to the end.
83                 // and stop if the fader is decrement.
84                 if (!lpfFader.isIncrement) driver.stop();
85             }
86         }
87        
88        
89         // fading callback
90         private function _fadeLPF(v:Number) : void
91         {
92             // change filters cutoff
93             lpf.control(v, 0.5);
94         }
95     }
96 }
97
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。