// Sample for event trigger package { import flash.display.*; import flash.events.*; import org.si.sion.*; import org.si.sion.events.*; public class EventTrigger2 extends Sprite { // driver public var driver:SiONDriver = new SiONDriver(); // MML data public var mainMelody:SiONData; // shape displays key of tracks public var keyShapes:Array; // constructor function main() { // compile with event trigger command (%t) var mml:String = "t100;"; mml += "%3@8 l8 [ccggaag4 ffeeddc4 | [ggffeed4]2 ]2;"; mml += "%3@8 l4 [o4ccfc >ggg< ];" mml += "%3@8 l4 r8 [o4 ggag dgdg | gggg gggd ];" mainMelody = driver.compile(mml); // listen triggers driver.addEventListener(SiONEvent.STREAM_START, _onStreamStart); driver.addEventListener(SiONTrackEvent.NOTE_ON_FRAME, _onNoteOn); driver.addEventListener(SiONTrackEvent.NOTE_OFF_FRAME, _onNoteOff); keyShapes = [_keyShape(0), _keyShape(1), _keyShape(2)]; // play main melody driver.play(mainMelody); } // This event dispatched when ther streming starts. private function _onStreamStart(e:SiONEvent) : void { var i:int; var imax:int = driver.sequencer.tracks.length; // <= same as driver.trackCount // set event trigger on all tracks. you can access them by driver.sequencer.tracks[]. // but the driver.sequencer.tracks[] is available only after driver.play(). for (i=0; i