/*

ロボ喋る？

これもやはり曲掲示板５で投稿した、ある種の実験もの。

*/

System.OctaveRangeShift=1

~{あ}={
	Sub{o6 b}
	Sub{o6 g}
	Sub{o6 e}
	Sub{o6 d}
	Sub{o6 c}
	Sub{o5 b-}
	Sub{o5 g}
	Sub{o5 e}
	Sub{o5 c}
	Sub{o4 g}
	Sub{o4 c}//ここから上は倍音
	o3 c     //基音
}

~{い}={
	Sub{o5 e}
	Sub{o5 c}
	Sub{o4 g}
	Sub{o4 c}
	o3 c
}

~{う}={
	Sub{o6 e}
	Sub{o6 d}
	Sub{o6 c}
	Sub{o5 g}
	Sub{o5 e}
	Sub{o5 c}
	Sub{o4 g}
	Sub{o4 c}
	o3 c
}

~{え}={
	Sub{o5g}
	Sub{o5d}
	Sub{o5c}
	Sub{o4g}
	Sub{o4c}
	o3c
}

~{お}={
	Sub{o5 b-}
	Sub{o5 g}
	Sub{o5 e}
	Sub{o5 c}
	Sub{o4 g}
	Sub{o4 c}
	o3 c
}

#Pat1={あ}
#Pat2={い}
#Pat3={う}
#Pat4={え}
#Pat5={お}



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){ ん     }
	Case(7){ っ     }
	Default{ r; Print("Rest");}
	}
	
	State=Random(8);  //0〜7の範囲。
	Result=State;    //呼び出し側に値を返却してやる。
}


//------------------------------------------------------------------------------
//使用例
//

TR(0)
Time(1:1:0) ResetGS
Time(2:1:0) TrackSync

TR(1) CH(1) V(80) REV(0) @81,8
l12

[24
	v70 v.Random(50)
	StateLoop();	//呼び出し。
]

