Tempo 120

// DTM=0
// プロ級=1
// 上手=2
// へたくそ=3
// 下手すぎ=4

Int RATE=1

System.TimeBase=768

Function BG(Str MML) {
	Str BUF=""
	Str FIRST=""
	Str ML=""
	Str M
	Str R
	Str FM
	Int C=0

	// ハノン用に追加
	MML=MML+">"+MML+"<"
	BUF=""
	R=""
	For(Int i=1; MID(MML, i, 1)!=""; i++) {
		M=MID(MML, i, 1)
//		Print("Count "+ C + " Str="+M)
		IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
			IF(C>0) {
				FIRST=ML
				ML=FM+""+M
				FM=""
			} ELSE {
				IF(RATE>0) {
					IF(RATE=1) {
						R=R+"r"+Random(100,512)
					} ELSE {
						IF(RATE=2) {
							R=R+"r"+Random(84,384)
						} ELSE {
							IF(RATE=3) {
								R=R+"r"+Random(45,384)
							} ELSE {
				　　	　		R=R+"r"+Random(30,192)
							}
						}
					}
				} ELSE {
					R=""
				}
				BUF=BUF+"Sub" + CHR(123)+R+ML+CHR(125)
				ML=""+M
			}
			C++
		} ELSE {
			IF(C>0) {
				ML=ML+""+M
			} ELSE {
				FM=FM+""+M
			}
		}
	}
	BUF=BUF+"Sub"+CHR(123)+R+ML+CHR(125)+FIRST
//	Print(BUF)
　　BUF
}


#HANON={
	v127
	o4l16q98
	[

		BG(c) BG(e) BG(f) BG(g) BG(a) BG(g) BG(f) BG(e)
		BG(d) BG(f) BG(g) BG(a) BG(b) BG(a) BG(g) BG(f)
		BG(e) BG(g) BG(a) BG(b)> BG(c)< BG(b) BG(a) BG(g)
		BG(f) BG(a) BG(b)> BG(c) BG(d) BG(c)< BG(b) BG(a)
		BG(g) BG(b)>BG(c) BG(d) BG(e) BG(d) BG(c)<BG(b)
		BG(a) > BG(c) BG(d) BG(e) BG(f) BG(e) BG(d) BG(c) <
		BG(b) > BG(d) BG(e) BG(f) BG(g) BG(f) BG(e) BG(d) <
		>
	]
	[
		<
		>BG(g) BG(e) BG(d) BG(c) < BG(b) > BG(c) BG(d) BG(e)
		BG(f) BG(d) BG(c) < BG(b) BG(a) BG(b) > BG(c) BG(d)
		BG(e) BG(c) < BG(b) BG(a) BG(g) BG(a) BG(b) > BG(c)
		BG(d) < BG(b) BG(a) BG(g) BG(f) BG(g) BG(a) BG(b)>
		BG(c) < BG(a) BG(g) BG(f) BG(e) BG(f) BG(g) BG(a)
		BG(b) BG(g) BG(f) BG(e) BG(d) BG(e) BG(f) BG(g)
		BG(a) BG(f) BG(e) BG(d) BG(c) BG(d) BG(e) BG(f)
	]
	BG(g) BG(e) BG(d) BG(c)< BG(b) > BG(c) BG(d) BG(e)
	BG(c2)
	r1
}

TR(1)
	#HANON
