sion遊び

by Dorara
SiON遊び
とりあえず、HPに載ってるソースコードを読みながらSiONの
使い方を勉強しました。
live coding実装記念 2010.10.18
SiONでmmlは小文字じゃないといけない。
音を鳴らすために、
1.Driverを準備する
2.再生する音をコンパイル
3.SiONPresetVoiceでプリセット音を鳴らせる
4.play()しておいて、sequenceOnで再生する
複数音を出す為には、
1.mmlに複数の音を登録しておく
2.コンパイルした音を複数用意して同時に鳴らす
なんとなくわかったので、なんか曲作って終わる。
山手線、京浜東北線 発射メロディ(笑)
♥5 | Line 29 | Modified 2010-02-18 01:26:38 | MIT License
play

ActionScript3 source code

/**
 * Copyright Dorara ( http://wonderfl.net/user/Dorara )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/pCTZ
 */

// SiON遊び
//   とりあえず、HPに載ってるソースコードを読みながらSiONの
//   使い方を勉強しました。
//              live coding実装記念 2010.10.18


// SiONでmmlは小文字じゃないといけない。

//音を鳴らすために、
//  1.Driverを準備する
//  2.再生する音をコンパイル
//  3.SiONPresetVoiceでプリセット音を鳴らせる
//  4.play()しておいて、sequenceOnで再生する
//
//複数音を出す為には、
//  1.mmlに複数の音を登録しておく
//  2.コンパイルした音を複数用意して同時に鳴らす

//なんとなくわかったので、なんか曲作って終わる。
// 山手線、京浜東北線 発射メロディ(笑)

package {
    import flash.display.Sprite;
    import org.si.sion.*;
    import org.si.sion.utils.*;
    import com.bit101.components.*;
    import flash.events.MouseEvent;
    public class FlashTest extends Sprite {
   	    public var driver:SiONDriver = new SiONDriver();
     	//いろんな音を出すため
     	public var voices:SiONPresetVoice = new SiONPresetVoice();
     	public var voice:SiONVoice = voices["valsound.bell2"];
     
     	//メロディ
     	public var mainMel:SiONData;
     	public var subMel:SiONData;
     
        public function FlashTest() {
			var mml:String = "t115;";
			mml += "l8 [g>gag<c>g<e>g]2 <[g>gagbg<d>g]2 geg<ccceg<c4;";
			mml += "l8 grrrrrrr>grrrrrrr<grrrrrrr>grrrrrrr<crrrerrrgrrr;";
			mainMel = driver.compile(mml);
			//mainMel = driver.compile("t100 l8 cdefg4g4af<c>ag2");
        		//subMel = driver.compile("t100 l8 >c2e2f2c2");
        		new PushButton(this, 10, 20, "play", mml_play);
        		new PushButton(this, 150, 20, "stop", mml_stop);
        		driver.play();
        }
        
        private function mml_play(e:MouseEvent):void{
			driver.sequenceOn(mainMel);
			//driver.sequenceOn(mainMel, voice, 0, 0, 2);
			//driver.sequenceOn(subMel, voice, 0, 0, 2);
        }
		private function mml_stop(e:MouseEvent):void{
			driver.sequenceOff(0, 0, 0);
		}
    }
}

Forked