/*

スクリプトによる小さな実験

投稿テストを兼ねて、曲掲示板５に投稿したものを再掲載。

手軽に出来そうな範囲で、
何をやったらちょっと変わった事が出来るのかな・・・という、
そういう性質のものです。
真正面から真面目にやってたら時間が幾らあっても足りませんので。

*/

//パターン。
//簡略化のために単音にしてある。(別に単音でなくとも良い)
#Pat1={c}
#Pat2={d}
#Pat3={e-}
#Pat4={f+}
#Pat5={g}
#Pat6={a}
#Pat7={b-}


//出力用の関数と対になっている。
Function StateLoop(){

	Int State;         //状態変数。
	State=Random(1,7); //初回実行用。値の範囲は1〜7。

	//状態がゼロでない限り繰り返す。
	While(State!=0){
		Print(State); //値を確認するため。
		State=OutPut(State);//状態によって出力が変わる。戻ってきた値で状態を更新する。
		If(State==0){ r; Print("Rest") ;}
	}
}


//出力用の関数。
Function OutPut(Int State){

	Switch(State){
	Case(1){ #Pat1; }
	Case(2){ #Pat2; }
	Case(3){ #Pat3; }
	Case(4){ #Pat4; }
	Case(5){ #Pat5; }
	Case(6){ #Pat6; }
	Case(7){ #Pat7; }
	Default{ r; Print("Rest");}
	}
	
	State=Random(8); //0〜7の範囲。
	Result=State;    //呼び出し側に値を返却してやる。
}


//------------------------------------------------------------------------------
//使用例
//

TR(0)
Time(1:1:0) ResetGM
Time(2:1:0) TrackSync

TR(1) CH(10) V(100)
l12
o3
[24
	v70 v.Random(50)
	StateLoop();	//呼び出し。
]

