// ドビュッシー 月の光
//////////////////////
Int DY=1			// 奨励音源ならこのまま、それ以外なら0、ただし0の場合サウンドフォントによっては音抜けします
Int DEBUG=0			// 1=メトロノーム 2=雑音付き
Int KEY=0			// 移調
Int TEMPORATIO=100	// テンポを%で変化させる 70%以下にしてはならない
Int TINY=0			// MIDIを軽くする TWM2時必須
Int IGNORETEMPO=0		// テンポ変化を無効にする
// Tempo 65
Int TEMPODIFF=0		// テンポ差分 -5以下にしてはならない
Int LOOP=2			// ループ回数
System.RandomSeed=16384	// 毎回同じ乱数を出す 発音タイミングと音量とペダルのリリースが乱数

IF(TINY=1) {
	Expression.Frequency(2);
	Modulation.Frequency(8);
	System.TimeBase=96
} ELSE {
	Expression.Frequency(1);
	Modulation.Frequency(1);
	System.TimeBase=6144
}


///////////////////////////////////////////////////////////////////////////////
// title:        "tempo.h" ver 1.1
// description:  TempoChange非互換高機能テンポチェンジ機能インクルードファイル(2015/05/28)
// keywords:     SAKURA Function     by ななこっち★ @nanakochi123456
// HP:           http://nano.daiba.cx/
///////////////////////////////////////////////////////////////////////////////
// tempo.h デバッグ機能付きテンポチェンジ
// (サクラに TempoChange がありますが、その高機能版です)
//
// Include前に、以下の変数を定義して下さい。
//
// ・Int DEBUG=0 // 1 でメトロノームがなります、2 でテンポチェンジ時にうるさい雑音が鳴ります
//  (メトロノームは10000小節で終了します、4/4 を前提に作成されています。)
//
// ・Int TEMPORATIO
//  ベーステンポの割合を%で設定します。(100がデフォルト。)
//
// ・Int TEMPODIFF
//  ベーステンポを設定して、外部よりテンポを制御したい場合、TEMPODIFF に 整数値 (-~+)を設定します。
//
// ・Int IGNORETEMPO
//  IGNORETEMPO=1 にすると、テンポチェンジを無効にします。
//
// #METORONOMEMML
//  メトロノームのリズムMMLを設定できます。3拍子にする時等使用します。
//  (M=表拍、m=裏拍)
//
//  ※テンポチェンジは、専用のトラックを作成することをお勧めします。
///////////////////////////////////////////////////////////////////////////////
// Function TmpChange(tempo, len)
// テンポをチェンジします。
// 前のテンポは自動的に読み込まれます
// 即時チェンジする場合には、lenを 0 にします。
// それ以外は、!2 !4. 等を指定します。
//
// Function TmpChangeR(tempo, len)
// テンポをチェンジして、len分の休符を置きます。
///////////////////////////////////////////////////////////////////////////////
// テストするときは、以下のコメントを全て外してください。
//Int TEST=1
//Int DEBUG
//Int TEMPORATIO=100
//Int IGNORETEMPO=0
//Int TEMPODIFF=0
///////////////////////////////////////////////////////////////////////////////

#METORONOMEMML={M8m8m8 m8m8m8 m8m8m8}

IF(#METORONOMEMML="") {
	#METORONOMEMML={M4m4m4m4}
}

IF(TEST=1) {
	DEBUG=2
	Tempo 200
}

IF(DEBUG>=1) {
	IF(DEBUG=2) {
		#DEBUGMML1={Sub{@1v90V(127)'v50o5do6fo7a#o8d'}}
		#DEBUGMML2={Sub{@1v90V(127)'v50o5co6eo7g#o8c'}}
		#DEBUGMML3={Sub{@1v127V(127)'v80o4cdefgabo6cdefgab'}}
	}
	TR(10)
		$M{n(MetronomeBell),}
		$m{n(MetronomeClick),}
		[10000
			Rythm{#METORONOMEMML}
		]
}
Function TmpChangeR(tempo, len) {
	TmpChange(tempo, len)
	r%(len)
}

Function TmpChange(tempo, len) {
	IF(len=0) {
		IF(DEBUG=2) {
			#DEBUGMML1
		}
	} ELSE {
		IF(DEBUG=2) {
			#DEBUGMML2
		}
	}

	IF(len=0) {
		IF(!(IGNORETEMPO<>1)) {
			IF(TEMPORATIO=0) {
				Tempo=tempo+TEMPODIFF
			} ELSE {
				Tempo=(tempo*TEMPORATIO)/100+TEMPODIFF
			}
		}
	} ELSE {
		IF(!(IGNORETEMPO<>1)) {
			Int TT1=Tempo
			Int TT2
			IF(TEMPORATIO=0) {
				TT2=tempo+TEMPODIFF
			} ELSE {
				TT2=(tempo*TEMPORATIO)/100+TEMPODIFF
			}
			Int TTDIFF=(TT2 - TT1)
			Int TTSTEP=TTDIFF
			IF(TTSTEP < 0) {
				TTSTEP=-TTDIFF
			}
			Int TTR=len / TTSTEP
			For(Int I=1; I < TTSTEP; I++) {
				Sub {
					r%(I*TTR)
					IF(TTDIFF < 0) {
						TT1 = TT1 - 1;
					} ELSE {
						TT1 = TT1 + 1;
					}
					Tempo = TT1;
				}
			}
			Sub{
				r%(len)
				IF(TEMPORATIO=0) {
					Tempo=tempo+TEMPODIFF
				} ELSE {
					Tempo=tempo*TEMPORATIO/100+TEMPODIFF
				}
			}
		}
	}
}

IF(TEST=1) {
	TR(1)
		TmpChange(100,0)
		o5l8cdefgfed
		TmpChange(120,!2)
		o5l8cdefgfed
		TmpChange(160,!2)
		o5l8cdefgfed
		TmpChange(80,!2)
		o5l8cdefgfed
		TmpChange(50,!2)
		o5l8cdefgfed
		TmpChange(160,!4)
		o5l8cdefgfed
		TmpChange(50,!2)
		o5l8cdefgfedc1
}

///////////////////////////////////////////////////////////////////////////////
// title:        "loop.h" ver 1.0
// description:  Loopインクルードファイル(2015/06/02)
// keywords:     SAKURA Function     by ななこっち★ @nanakochi123456
// HP:           http://nano.daiba.cx/
///////////////////////////////////////////////////////////////////////////////
// loop.h 可変回数のループ
///////////////////////////////////////////////////////////////////////////////
// Function LoopPlay
// LoopPlay(mml string value[, loop count offset]) max 5 parms.
//
// Example
// Int LOOP=4
// Include(loop.h)
// #mml={
//    cde
// }
// LoopPlay(#mml)
// LoopPlay(#mml,#mml2,0)
///////////////////////////////////////////////////////////////////////////////
// テストする時は、以下のコメントを外してください。
//Int TEST=1
//Int LOOP=5
///////////////////////////////////////////////////////////////////////////////

Function LoopPlay(Str Mml1, Str Mml2, Int count) {
	Str _MML
	For (Int i = 1; i < LOOP + count; i++) {
		_MML=_MML + Mml1 + Mml2
	}
	_MML=_MML + Mml1
	_MML
}

IF(TEST=1) {
	曲名{"かえるの歌(test)"}
	作者{"ドイツ民謡"}
	#mmla={
		l4
		cdef
		edc4.r8
	}
	#mmlb={
		l4
		efga
		gfe4.r8
	}

	#mmlc={
		crcr
		crcr
		l8ccddeeff
		l4
		edc2
	}
	
	TR(1)
		o5
		@(Clarinet)
		q95
		#mmla
		LoopPlay(#mmlb,3)
		#mmlc

	TR(2)
		o6
		@(Violin)
		q95
		[2 r1]
		#mmla
		LoopPlay(#mmlb,2)
		#mmlc

	TR(3)
		o4
		q95
		@(FrenchHorn)
		[4 r1]
		#mmla
		LoopPlay(#mmlb,1)
		#mmlc

	TR(4)
		o3
		q95
		@(Contrabass)
		[6 r1]
		#mmla
		LoopPlay(#mmlb,0)
		#mmlc

	TR(5)
		o3
		q95
		@(Timpani)
		[8 r1]
		#mmla
		LoopPlay(#mmlb,-1)
		#mmlc

}

///////////////////////////////////////////////////////////////////////////////
// title:        "rnd.h" ver 1.00
// description:  単音、和音、ドラムをランダムな音量とタイミングで演奏するインクルードファイル(2017/02/06)
// keywords:     SAKURA Function     by ななこっち★ @nanonano773
// License:      GPL3
///////////////////////////////////////////////////////////////////////////////
// rnd.h メロディー、和音、ドラムをランダムなタイミングで演奏する
///////////////////////////////////////////////////////////////////////////////
// 詳細の取扱説明書は、ファイル下部へ
//
// Function RMDINIT(rmin, rmax, vmin, vmax)
// 休符乱数値の最小値、最大値、最小、最大音量設定する。両方0にすると、同一タイミングで演奏します。
// 
// Function RMDR(rmin, rmax)
// 休符乱数値の最小値、最大値の設定のみする
//
// Function RNDV(rmin, rmax)
// 音量乱数値の最小値、最大値の設定のみする。
// 同一の値を設定を両方に行うと、固定音量となる。
// rmaxを省略すると、rmin、rmax共に加算、または減算を行なう
//
// rmin, rmaxは与える休符値、vmin, vmaxは与える音量値
// Function RMD(mml)
// ランダムに演奏したいメロディーのMMLを入力する
// Function RMDENABLE(1 or 0)
// メロディーランダム演奏機能を有効/無効にする
///////////////////////////////////////////////////////////////////////////////
// Function RCDINIT(rmin,rmax,vmin,vmax,vdif)
// 乱数値の最小値、最大値を設定する。両方0にすると、同一タイミングで演奏します。
// vmin,vmaxは音量の最小値、最大値
// vdifは音量増加値(マイナス値を指定すると減少値)
//
// Function RCD(mml)
// ランダムに演奏したい和音のMMLを入力する
// Function RCOT(mml)
// ランダムに演奏したい単音のMMLを入力すると、オクターブで演奏する。
// Function RCDENABLE(1 or 0)
// 和音ランダム演奏機能を有効/無効にする
// Function RCDR(rmin, rmax)
// Function RCDV(vmin, vmax)
//
// RCDをSRCDに置き換えた同名関数があります。ケースバイケースで使い分けられます。
//
// RDINIT(ドラム音量,randvフラグ,randrフラグ,BDロテートフラグ,SDロテートフラグ,シンバルロテートフラグ)
// RDV(Int V)
// RDCresc(Int V)
// RandV(Int MIN, Int MAX)
// RandR(Int MIN, Int MAX)
// SyncR()
// #RDRUMSET1
///////////////////////////////////////////////////////////////////////////////
// Example
// Include(rnd.h)
// TR(1)
//   RMDINIT(53,513,90,110)
//   l4 RMD(ceg)
//   RMDV(5)
//   l8 RMD(<b>fg)
//   RMDV(-5)
//   l8 RMD(ceg)
// TR(2)
//   RCDINIT(53,513)
//   l4 RCD(ceg)
//   l8 RCD(<b>fg)
//   RCDINIT(53,513,90,100)
//   l8 RCD(ceg)
// TR(10)
//   RDINIT(110,1,1,1,1,1)
//   #RDRUMSET1
//   l8 [4 Rythm {'bh'h'sh''bh''bh'h'sh'h}]
///////////////////////////////////////////////////////////////////////////////

Int RMD_RMIN=192
Int RMD_RMAX=768
Int RMD_VMIN=95
Int RMD_VMAX=100
Int RMD_CRESC=0
Int RMD_ENABLE=1

Int RCD_MIN=192
Int RCD_MAX=768
Int RCD_VMIN=-1
Int RCD_VMAX=-1
Int RCD_CRESC=0
Int RCD_TMIN=-1
Int RCD_TMAX=-1
Int RCD_ENABLE=1

Int SRCD_MIN=192
Int SRCD_MAX=768
Int SRCD_VMIN=-1
Int SRCD_VMAX=-1
Int SRCD_CRESC=0
Int SRCD_TMIN=-1
Int SRCD_TMAX=-1
Int SRCD_ENABLE=1

Int BDROTATE=0
Int SDROTATE=0
Int CYMROTATE=0

Int BDINIT=0
Int CYMINIT=0
Int SDINIT=0

Int RANDV=0
Int RANDR=0

Int RDVOL=127

Function RMDENABLE(Int FLG) {
	RMD_ENABLE=FLG
}

Function RMDINIT(Int RMIN, Int RMAX, Int VMIN, Int VMAX) {
	RMD_RMIN=RMIN
	RMD_RMAX=RMAX
	RMD_VMIN=VMIN
	RMD_VMAX=VMAX
	RMD_CRESC=0
}

Function RMDCresc(Str STEP) {
	RMD_CRESC=STEP
}

Function RMDR(Int RMIN, Int RMAX) {
	RMD_RMIN=RMIN
	RMD_RMAX=RMAX
}

Function RMDV(Int VMIN, Int VMAX) {
	IF(VMAX=0) {
		Int TMPMIN=RMD_VMIN
		Int TMPMAX=RMD_VMAX
		TMPMIN=TMPMIN+VMIN
		TMPMAX=TMPMAX+VMIN
		IF(TMPMIN < 0) {
			TMPMIN=0
		}
		IF(TMPMIN > 127) {
			TMPMAX=127
		}
		IF(TMPMAX < 0) {
			TMPMAX=0
		}
		IF(TMPMAX > 127) {
			TMPMAX=127
		}
		RMD_VMIN=TMPMIN
		RMD_VMAX=TMPMAX
	} ELSE {
		RMD_VMIN=VMIN
		RMD_VMAX=VMAX
	}
}

Function RMD(Str MML) {
	Str BUF=""
	Str FIRST=""
	Str ML=""
	Str M
	Str R
	Str VL
	Str RRMML
	Str RMML
	Str FM=""
	Int C=0
	Str LenStr
	Int TOKEN=0
	Int TO=0
	BUF=""
	R=""
	IF(RMD_ENABLE=0) {
		BUF=MML
	} ELSE {
		For(Int i=1; MID(MML, i, 1)!=""; i++) {
			M=MID(MML, i, 1)
			IF((ASC(M)>=48 && ASC(M)<=57) || M="r"||M="."||M="^") {
				IF(TO>=1) {
					LenStr=LenStr+M
				}
				ML=ML+M
			} ELSE {
				IF((ASC(M)>=97 && ASC(M)<=103)) {
					TOKEN++
					TO=1
					FM=RRMML+VL+ML+RMML
					IF(TOKEN>1) {
						C++
						IF(FM!="") {
							BUF=BUF+"Sub{"+FM+"}r"+LenStr
						}
						TOKEN=0
					} ELSE {
						BUF=BUF+ML
					}
					LenStr=""
					ML=M
					IF(RMD_RMAX>0) {
						R=Random(RMD_RMIN, RMD_RMAX)
						IF(Random(0,10)<5) {
							RRMML="r-"+R
							RMML="r"+R
						} ELSE {
							RRMML="r"+R
							RMML="r-"+R
						}
					}
					VL="v"+Random(RMD_VMIN, RMD_VMAX)
					RMDV(RMD_CRESC,0)
				} ELSE {
					ML=ML+M
					IF(TO=1) {
						TO=2
					}
					IF((ASC(M)>=97 && ASC(M)<=103) || M="r" || (ASC(M)>=48 && ASC(M)<=57) || M="." ||M="^"|| M="-"||M="#") {
					} ELSE {
						TO=0
					}
				}
			}
		}
		FM=RRMML+VL+ML+RMML
		IF(FM!="") {
			BUF=BUF+"Sub{"+FM+"}r"+LenStr
		}
	}
	BUF
}

Function RCDENABLE(Int FLG) {
	RCD_ENABLE=FLG
}

Function SRCDENABLE(Int FLG) {
	SRCD_ENABLE=FLG
}

Function RCDINIT(Int MIN, Int MAX, Int VMIN, Int VMAX, Int VDIF) {
	RCD_MIN=MIN
	RCD_MAX=MAX
	IF(VMIN<>0 && VMAX<>0) {
		RCD_VMIN=VMIN
		RCD_VMAX=VMAX
		RCD_CRESC=VDIF
	} ELSE {
		RCD_VMIN=-1
		RCD_VMAX=-1
		RCD_CRESC=0
	}
}

Function RCDR(Int RMIN, Int RMAX) {
	RCD_RMIN=RMIN
	RCD_RMAX=RMAX
}

Function RCDV(Int VMIN, Int VMAX) {
	RCD_CRESC=0
	IF(VMAX=0) {
		Int TMPMIN=RCD_VMIN
		Int TMPMAX=RCD_VMAX
		TMPMIN=TMPMIN+VMIN
		TMPMAX=TMPMAX+VMIN
		IF(TMPMIN < 0) {
			TMPMIN=0
		}
		IF(TMPMIN > 127) {
			TMPMAX=127
		}
		IF(TMPMAX < 0) {
			TMPMAX=0
		}
		IF(TMPMAX > 127) {
			TMPMAX=127
		}
		RCD_VMIN=TMPMIN
		RCD_VMAX=TMPMAX
	} ELSE {
		RCD_VMIN=VMIN
		RCD_VMAX=VMAX
	}
}

Function RCD(Str MML) {
	Str BUF=""
	Str FIRST=""
	Str ML=""
	Str M
	Str R
	Str FM
	Int C=0
	Str VL
	IF(RCD_ENABLE=0) {
		BUF="'" + MML + "'"
	} ELSE {
		RCD_TMIN=RCD_VMIN
		RCD_TMAX=RCD_VMAX

		BUF=""
		R=""
		For(Int i=1; MID(MML, i, 1)!=""; i++) {
			M=MID(MML, i, 1)
			IF(DEBUG=1||TEST=1) {
				Print("Count "+ C + " Str="+M)
			}
			IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
				C++
			  	IF(C<2) {
					FIRST=ML
					ML=FM+M
					FM=""
					IF(RCD_TMIN>=0 && RCD_TMAX>=0) {
						VL="v"+Random(RCD_TMIN, RCD_TMAX)
						RCD_TMIN=RCD_TMIN+RCD_CRESC
						RCD_TMAX=RCD_TMAX+RCD_CRESC
						IF(RCD_TMIN<0) { RCD_TMIN=0 }
						IF(RCD_TMIN>127) { RCD_TMIN=127 }
						IF(RCD_TMAX<0) { RCD_TMAX=0 }
						IF(RCD_TMAX>127) { RCD_TMAX=127 }
					} ELSE {
						VL=""
					}
					ML=VL+ML
				} ELSE {
					BUF=BUF+"Sub" + CHR(123)+R+ML+CHR(125)
					IF(RCD_MAX>0) {
						R=R+"r"+Random(RCD_MIN, RCD_MAX)
					}
					IF(RCD_TMIN>=0 && RCD_TMAX>=0) {
						VL="v"+Random(RCD_TMIN, RCD_TMAX)
						RCD_TMIN=RCD_TMIN+RCD_CRESC
						RCD_TMAX=RCD_TMAX+RCD_CRESC
						IF(RCD_TMIN<0) { RCD_TMIN=0 }
						IF(RCD_TMIN>127) { RCD_TMIN=127 }
						IF(RCD_TMAX<0) { RCD_TMAX=0 }
						IF(RCD_TMAX>127) { RCD_TMAX=127 }
					} ELSE {
						VL=""
					}
					ML=VL+M
				}
			} ELSE {
				IF(M="#"||M="+"||M="-") {
					ML=ML+M
				} ELSE {
					IF(C>0) {
						ML=ML+VL+M
					} ELSE {
						FM=FM+VL+M
					}
				}
			}
		}
		VL="Sub{r-96v"+Random(RMD_VMIN, RMD_VMAX)+"}"
		BUF=BUF+"Sub"+CHR(123)+R+ML+CHR(125)+FIRST+"r"
		IF(DEBUG=1 || TEST=1) {
			Print(BUF)
		}
	}
	BUF
}

Function ROCT(Str MML) {
	Str BUF=""
	Str FIRST=""
	Str ML=""
	Str M
	Str R
	Str FM
	Int C=0
	Str VL

	MML=MML + ">" + MML + "<"

	IF(RCD_ENABLE=0) {
		BUF="'" + MML + "'"
	} ELSE {
		RCD_TMIN=RCD_VMIN
		RCD_TMAX=RCD_VMAX

		BUF=""
		R=""
		For(Int i=1; MID(MML, i, 1)!=""; i++) {
			M=MID(MML, i, 1)
			IF(DEBUG=1||TEST=1) {
				Print("Count "+ C + " Str="+M)
			}
			IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
				C++
			  	IF(C<2) {
					FIRST=ML
					ML=FM+M
					FM=""
					IF(RCD_TMIN>=0 && RCD_TMAX>=0) {
						VL="v"+Random(RCD_TMIN, RCD_TMAX)
						RCD_TMIN=RCD_TMIN+RCD_CRESC
						RCD_TMAX=RCD_TMAX+RCD_CRESC
						IF(RCD_TMIN<0) { RCD_TMIN=0 }
						IF(RCD_TMIN>127) { RCD_TMIN=127 }
						IF(RCD_TMAX<0) { RCD_TMAX=0 }
						IF(RCD_TMAX>127) { RCD_TMAX=127 }
					} ELSE {
						VL=""
					}
					ML=VL+ML
				} ELSE {
					BUF=BUF+"Sub" + CHR(123)+R+ML+CHR(125)
					IF(RCD_MAX>0) {
						R=R+"r"+Random(RCD_MIN, RCD_MAX)
					}
					IF(RCD_TMIN>=0 && RCD_TMAX>=0) {
						VL="v"+Random(RCD_TMIN, RCD_TMAX)
						RCD_TMIN=RCD_TMIN+RCD_CRESC
						RCD_TMAX=RCD_TMAX+RCD_CRESC
						IF(RCD_TMIN<0) { RCD_TMIN=0 }
						IF(RCD_TMIN>127) { RCD_TMIN=127 }
						IF(RCD_TMAX<0) { RCD_TMAX=0 }
						IF(RCD_TMAX>127) { RCD_TMAX=127 }
					} ELSE {
						VL=""
					}
					ML=VL+M
				}
			} ELSE {
				IF(M="#"||M="+"||M="-") {
					ML=ML+M
				} ELSE {
					IF(C>0) {
						ML=ML+VL+M
					} ELSE {
						FM=FM+VL+M
					}
				}
			}
		}
		BUF=BUF+"Sub"+CHR(123)+R+ML+CHR(125)+FIRST+"r"
		IF(DEBUG=1 || TEST=1) {
			Print(BUF)
		}
	}
	BUF
}

Function SRCDINIT(Int MIN, Int MAX, Int VMIN, Int VMAX, Int VDIF) {
	SRCD_MIN=MIN
	SRCD_MAX=MAX
	IF(VMIN<>0 && VMAX<>0) {
		SRCD_VMIN=VMIN
		SRCD_VMAX=VMAX
		SRCD_CRESC=VDIF
	} ELSE {
		SRCD_VMIN=-1
		SRCD_VMAX=-1
		SRCD_CRESC=0
	}
}

Function SRCDR(Int RMIN, Int RMAX) {
	SRCD_RMIN=RMIN
	SRCD_RMAX=RMAX
}

Function SRCDV(Int VMIN, Int VMAX) {
	SRCD_CRESC=0
	IF(VMAX=0) {
		Int TMPMIN=SRCD_VMIN
		Int TMPMAX=SRCD_VMAX
		TMPMIN=TMPMIN+VMIN
		TMPMAX=TMPMAX+VMIN
		IF(TMPMIN < 0) {
			TMPMIN=0
		}
		IF(TMPMIN > 127) {
			TMPMAX=127
		}
		IF(TMPMAX < 0) {
			TMPMAX=0
		}
		IF(TMPMAX > 127) {
			TMPMAX=127
		}
		SRCD_VMIN=TMPMIN
		SRCD_VMAX=TMPMAX
	} ELSE {
		SRCD_VMIN=VMIN
		SRCD_VMAX=VMAX
	}
}

Function SRCD(Str MML) {
	Str BUF=""
	Str FIRST=""
	Str ML=""
	Str M
	Str R
	Str FM
	Int C=0
	Str VL

	SRCD_TMIN=SRCD_VMIN
	SRCD_TMAX=SRCD_VMAX

	IF(SRCD_ENABLE=0) {
		BUF="'" + MML + "'"
	} ELSE {
		BUF=""
		R=""
		For(Int i=1; MID(MML, i, 1)!=""; i++) {
			M=MID(MML, i, 1)
			IF(DEBUG=1||TEST=1) {
				Print("Count "+ C + " Str="+M)
			}
			IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
				C++
			  	IF(C<2) {
					FIRST=ML
					ML=FM+M
					FM=""
					IF(SRCD_TMIN>=0 && SRCD_TMAX>=0) {
						VL="v"+Random(SRCD_TMIN, SRCD_TMAX)
						SRCD_TMIN=SRCD_TMIN+SRCD_CRESC
						SRCD_TMAX=SRCD_TMAX+SRCD_CRESC
						IF(SRCD_TMIN<0) { SRCD_TMIN=0 }
						IF(SRCD_TMIN>127) { SRCD_TMIN=127 }
						IF(SRCD_TMAX<0) { SRCD_TMAX=0 }
						IF(SRCD_TMAX>127) { SRCD_TMAX=127 }
					} ELSE {
						VL=""
					}
					ML=VL+ML
				} ELSE {
					BUF=BUF+"Sub" + CHR(123)+R+ML+CHR(125)
					IF(SRCD_MAX>0) {
						R=R+"r"+Random(SRCD_MIN, SRCD_MAX)
					}
					IF(SRCD_TMIN>=0 && SRCD_TMAX>=0) {
						VL="v"+Random(SRCD_TMIN, SRCD_TMAX)
						SRCD_TMIN=SRCD_TMIN+SRCD_CRESC
						SRCD_TMAX=SRCD_TMAX+SRCD_CRESC
						IF(SRCD_TMIN<0) { SRCD_TMIN=0 }
						IF(SRCD_TMIN>127) { SRCD_TMIN=127 }
						IF(SRCD_TMAX<0) { SRCD_TMAX=0 }
						IF(SRCD_TMAX>127) { SRCD_TMAX=127 }
					} ELSE {
						VL=""
					}
					ML=VL+M
				}
			} ELSE {
				IF(M="#"||M="+"||M="-") {
					ML=ML+M
				} ELSE {
					IF(C>0) {
						ML=ML+VL+M
					} ELSE {
						FM=FM+VL+M
					}
				}
			}
		}
		BUF=BUF+"Sub"+CHR(123)+R+ML+CHR(125)+FIRST+"r"
		IF(DEBUG=1 || TEST=1) {
			Print(BUF)
		}
	}
	BUF
}

Function SROCT(Str MML) {
	Str BUF=""
	Str FIRST=""
	Str ML=""
	Str M
	Str R
	Str FM
	Int C=0
	Str VL

	MML=MML + ">" + MML + "<"
	IF(SRCD_ENABLE=0) {
		BUF="'" + MML + "'"
	} ELSE {
		SRCD_TMIN=SRCD_VMIN
		SRCD_TMAX=SRCD_VMAX

		BUF=""
		R=""
		For(Int i=1; MID(MML, i, 1)!=""; i++) {
			M=MID(MML, i, 1)
			IF(DEBUG=1||TEST=1) {
				Print("Count "+ C + " Str="+M)
			}
			IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
				C++
			  	IF(C<2) {
					FIRST=ML
					ML=FM+M
					FM=""
					IF(SRCD_TMIN>=0 && SRCD_TMAX>=0) {
						VL="v"+Random(SRCD_TMIN, SRCD_TMAX)
						SRCD_TMIN=SRCD_TMIN+SRCD_CRESC
						SRCD_TMAX=SRCD_TMAX+SRCD_CRESC
						IF(SRCD_TMIN<0) { SRCD_TMIN=0 }
						IF(SRCD_TMIN>127) { SRCD_TMIN=127 }
						IF(SRCD_TMAX<0) { SRCD_TMAX=0 }
						IF(SRCD_TMAX>127) { SRCD_TMAX=127 }
					} ELSE {
						VL=""
					}
					ML=VL+ML
				} ELSE {
					BUF=BUF+"Sub" + CHR(123)+R+ML+CHR(125)
					IF(SRCD_MAX>0) {
						R=R+"r"+Random(SRCD_MIN, SRCD_MAX)
					}
					IF(SRCD_TMIN>=0 && SRCD_TMAX>=0) {
						VL="v"+Random(SRCD_TMIN, SRCD_TMAX)
						SRCD_TMIN=SRCD_TMIN+SRCD_CRESC
						SRCD_TMAX=SRCD_TMAX+SRCD_CRESC
						IF(SRCD_TMIN<0) { SRCD_TMIN=0 }
						IF(SRCD_TMIN>127) { SRCD_TMIN=127 }
						IF(SRCD_TMAX<0) { SRCD_TMAX=0 }
						IF(SRCD_TMAX>127) { SRCD_TMAX=127 }
					} ELSE {
						VL=""
					}
					ML=VL+M
				}
			} ELSE {
				IF(M="#"||M="+"||M="-") {
					ML=ML+M
				} ELSE {
					IF(C>0) {
						ML=ML+VL+M
					} ELSE {
						FM=FM+VL+M
					}
				}
			}
		}
		BUF=BUF+"Sub"+CHR(123)+R+ML+CHR(125)+FIRST+"r"
		IF(DEBUG=1 || TEST=1) {
			Print(BUF)
		}
	}
	BUF
}

Function RDINIT(Int _RDVOL, Int _RANDV, Int _RANDR, Int _BDROTATE, Int _SDROTATE, Int _CYMROTATE) {
	RDVOL=_RDVOL
	RANDV=_RANDV
	RANDR=_RANDR
	BDROTATE=_BDROTATE
	SDROTATE=_SDROTATE
	CYMROTATE=_CYMROTATE
}

Function BassDrum(Int VO) {
	Int CC
	IF(BDROTATE=0) {
		CC=VO
	} ELSE {
		IF(BDINIT=0) {
			CC=BassDrum1
			BDINIT=1
		} ELSE {
				CC=BassDrum2
			BDINIT=0
		}
	}
	Result=CC
}

Function Snare(Int VO) {
	Int CC
	IF(SDROTATE=0) {
		CC=VO
	} ELSE {
		IF(SDINIT=0) {
			CC=Snare1
			SDINIT=1
		} ELSE {
				CC=Snare2
			SDINIT=0
		}
	}
	Result=CC
}

Function Cymbal(Int VO) {
	Int CC
	IF(CYMROTATE=0) {
		CC=VO
	} ELSE {
		IF(CYMINIT=0) {
			CC=CrashCymbal1
			CYMINIT=1
		} ELSE {
			CC=CrashCymbal2
			CYMINIT=0
		}
	}
	Result=CC
}

Function RDV(Int V) {
	RDVOL=V
}

Function RDCresc(Int V) {
	RDVOL=RDVOL+V
	IF(RDVOL>127) {
		RDVOL=127
	}
	IF(RDVOL<0) {
		RDVOL=0
	}
}

Function _RDV(Int V) {
	Int R=V
	R=R-(127-RDVOL)
	IF(R<0) {
		R=0
	}
	Result=R
}

Function RandV(Int MIN, Int MAX) {
	Str MML="v"
	IF(RANDV=0) {
		MML=MML+#STR(_RDV(MAX)
	} ELSE {
		MML=MML+Random(_RDV(MIN), _RDV(MAX))
	}
	MML
}

Str RMML
Function RandR(Int MIN, Int MAX) {
	Str MML
	IF(RANDR=1) {
		MML=MML+"r"
		RMML=RMML+"r"
		Int VALUE=Random(0,10)
		IF(VALUE<5) {
			MML=MML+"-"
		} ELSE {
			RMML=RMML+"-"
		}
		Str RAND=Random(MIN,MAX)
		MML=MML+RAND
		RMML=RMML+RAND
		MML
	}
}

Function SyncR() {
	Str MML=RMML
	RMML=""
	MML
}


#RDRUMSET1={
	// stick
	$k{Sub{RandR(800,1536) RandV(124,127) n(Sticks),16}r} //37

	// Bass Drum
	$B{Sub{RandR(800,1536) RandV(124,127) n(BassDrum(Kick2)),16}r}//35
	$b{Sub{RandR(800,1536) RandV(124,127) n(BassDrum(Kick1)),16}r}//36

	// Snare Drum
	$s{Sub{RandR(800,1536) RandV(120,127) n(Snare(Snare1)),16}r}//38
	$S{Sub{RandR(800,1536) RandV(120,127) n(Snare(Snare2)),16}r}//40

	// Toms
	$L{Sub{RandR(800,1536) RandV(123,127) n(LowTom2),16}r}//41
	$l{Sub{RandR(800,1536) RandV(123,127) n(LowTom1),16}r}//43
	$M{Sub{RandR(800,1536) RandV(123,127) n(MidTom2),16}r}//45
	$m{Sub{RandR(800,1536) RandV(123,127) n(MidTom1),16}r}//47
	$T{Sub{RandR(800,1536) RandV(123,127) n(HighTom2),16}r}//48
	$t{Sub{RandR(800,1536) RandV(123,127) n(HighTom1),16}r}//50

	// Hihat
	$p{Sub{RandR(800,1536) RandV(110,127) n(PedalHiHat),16}r}//44
	$h{Sub{RandR(800,1536) RandV( 65, 80) n(ClosedHiHat),16}r}//42
	$o{Sub{RandR(800,1536) RandV( 90,110) n(OpenHiHat),16}r}//46

	// Ride
	$r{Sub{RandR(800,1536) RandV(100,110) n(RideCymbal1),16}r}//51
	$R{Sub{RandR(800,1536) RandV(120,127) n(RideCymbal2),16}r}//59
	$P{Sub{RandR(800,1536) RandV(120,127) n(RideBell),16}r}//53

	// Cymbal
	$c{Sub{RandR(800,1536) RandV(120,127) n(Cymbal(CrashCymbal1)),16}r}//49
	$C{Sub{RandR(800,1536) RandV(120,127) n(Cymbal(CrashCymbal2)),16}r}//57

	// Splash
	$a{Sub{RandR(800,1536) RandV(120,127) n(SplashCymbal),16}r}//55
	$A{Sub{RandR(800,1536) RandV(120,127) n(ChineseCymbal),16}r}//52
}

/*
 ■ rnd.h

	名目上、CCライセンスは、表示-継承としましたが、
	コード部がメインなのでGPLライセンスを適用して下さい

	Includeフォルダに入れて使います
	rnd.hとリネーム後、サクラやTWのIncludeフォルダに入れて下さい

	-- 拡張子"h"が、何らかのソフトにより登録されている場合、
	"rnd.h.mml"等とリネームされることがあります

 	この場合、フォルダオプションの"登録されている拡張子は表示しない"
	のチェックを一時外し、リネームしてみて下さい --

 ■ 概要

	メロディーラインにごくわずかな休符を+/-につけたり、音量(ベロシティー)を
  範囲内でランダムに演奏させることで、リアルな演奏感をつけるものです。

 ■ 基本雛型
	Include(rnd.h)
	TR(1)
	  RMDINIT(53,513,90,110)
	  l4 RMD(ceg)
	  RMDV(5)
	  l8 RMD(<b>fg)
	  RMDV(-5)
	  l8 RMD(ceg)
	TR(2)
	  RCDINIT(53,513)
	  l4 RCD(ceg)
	  l8 RCD(<b>fg)
	  RCDINIT(53,513,90,100)
	  l8 RCD(ceg)

 ■ 関数 RMDINIT(rmin, rmax, vmin, vmax)
  RMD機能の初期化を行います。
	rmin : 休符の最小値 (1~System.TimeBaseの値)
	rmax : 休符の最大値 (1~System.TimeBaseの値)
	vmin : 音量の最小値 (0~127)
	vmax : 音量の最大値 (0~127)

 ■ 関数 RMD(mml)
  MMLを生演奏に近くなるように演奏をします。
  (ストトンは使えません)
  サポートしているMMLリスト
		c- c c# d- d d# e- e e# f- f f# g- g g# a- a a# b- b b#
		r . ^
		1 2 3 4 5 6 7 8 9 0
	※数値は一応サポートしていますが、長さがうまくいかない場合、
   前に l8 等をつけて対応して下さい。

  ※和音はサポートしていません。RCD系の関数を使用して下さい。

 ■ 関数 RMDR(rmin, rmax)
  RMD機能の休符値のみ設定します。
	rmin : 休符の最小値 (1~System.TimeBaseの値)
	rmax : 休符の最大値 (1~System.TimeBaseの値)

 ■ 関数 RMDV(vmin, vmax)
  RMD機能の音量値のみ設定します。
	vmin : 音量の最小値 (0~127)
	vmax : 音量の最大値 (0~127)

 ■ 関数 RMDCresc(cresc)
  ノートごとにcresc値の乱数音量値分を増量します。
  マイナス値を設定すると、減量します。
	cresc : 音量増減分 (-127~127)

 ■ 関数 RMDEnable(enabled)
  RMD機能を有効にします。初期値は1です。
  enabled : 1=有効、0=無効

 ■ 関数 RCDINIT(rmin,rmax,vmin,vmax,vdif)
  RCD機能の乱数値を設定する。
	rmin : 休符の最小値 (1~System.TimeBaseの値)
	rmax : 休符の最大値 (1~System.TimeBaseの値)
	vmin : 音量の最小値 (0~127)
	vmax : 音量の最大値 (0~127)
	vdif : 音量増加値(マイナスを設定すると減少値) (-127~127)

 ■ 関数 RCD(mml)
	和音のMMLを生演奏に近くなるように演奏をします。
	すでに「'~'」で囲まれているのと同等です。

  (ストトンは使えません)
  サポートしているMMLリスト
		c- c c# d- d d# e- e e# f- f f# g- g g# a- a a# b- b b#
		r . ^
		1 2 3 4 5 6 7 8 9 0
	※数値は一応サポートしていますが、長さがうまくいかない場合、
   前に l8 等をつけて対応して下さい。

  ※単音はサポートしていません。RMD系の関数を使用して下さい。

 ■ RCOT(mml)
  単音のMMLを入れると自動的に1オクターブ上の音と一緒に和音で生演奏に
  近くなるように演奏をします。

  (ストトンは使えません)
  サポートしているMMLリスト
		c- c c# d- d d# e- e e# f- f f# g- g g# a- a a# b- b b#
		r . ^
		1 2 3 4 5 6 7 8 9 0
	※数値は一応サポートしていますが、長さがうまくいかない場合、
   前に l8 等をつけて対応して下さい。

 ■ 関数 RCDR(rmin, rmax)
  RCD機能の休符値のみ設定します。
	rmin : 休符の最小値 (1~System.TimeBaseの値)
	rmax : 休符の最大値 (1~System.TimeBaseの値)

 ■ 関数 RCDV(vmin, vmax)
  RCD機能の音量値のみ設定します。
	vmin : 音量の最小値 (0~127)
	vmax : 音量の最大値 (0~127)

 ■ 関数 RCDEnable(enabled)
  RCD機能を有効にします。初期値は1です。
  enabled : 1=有効、0=無効

 ■ 関数 SRCDINIT(rmin,rmax,vmin,vmax,vdif)
  RCD機能(サブ)の乱数値を設定する。
	rmin : 休符の最小値 (1~System.TimeBaseの値)
	rmax : 休符の最大値 (1~System.TimeBaseの値)
	vmin : 音量の最小値 (0~127)
	vmax : 音量の最大値 (0~127)
	vdif : 音量増加値(マイナスを設定すると減少値) (-127~127)

 ■ 関数 SRCD(mml)
	和音のMMLを生演奏に近くなるように演奏をします。
	すでに「'~'」で囲まれているのと同等です。

  (ストトンは使えません)
  サポートしているMMLリスト
		c- c c# d- d d# e- e e# f- f f# g- g g# a- a a# b- b b#
		r . ^
		1 2 3 4 5 6 7 8 9 0
	※数値は一応サポートしていますが、長さがうまくいかない場合、
   前に l8 等をつけて対応して下さい。

  ※単音はサポートしていません。RMD系の関数を使用して下さい。

 ■ SRCOT(mml)
  単音のMMLを入れると自動的に1オクターブ上の音と一緒に和音で生演奏に
  近くなるように演奏をします。

  (ストトンは使えません)
  サポートしているMMLリスト
		c- c c# d- d d# e- e e# f- f f# g- g g# a- a a# b- b b#
		r . ^
		1 2 3 4 5 6 7 8 9 0
	※数値は一応サポートしていますが、長さがうまくいかない場合、
   前に l8 等をつけて対応して下さい。

 ■ 関数 SRCDR(rmin, rmax)
  RCD機能(サブ)の休符値のみ設定します。
	rmin : 休符の最小値 (1~System.TimeBaseの値)
	rmax : 休符の最大値 (1~System.TimeBaseの値)

 ■ 関数 SRCDV(vmin, vmax)
  RCD機能(サブ)の音量値のみ設定します。
	vmin : 音量の最小値 (0~127)
	vmax : 音量の最大値 (0~127)

 ■ 関数 SRCDEnable(enabled)
  RCD機能(サブ)を有効にします。初期値は1です。
  enabled : 1=有効、0=無効

 ■ RDINIT(rdvol,randv_flag,randr_flag,bdrotate,sdrotate,cymrotate)
	RD機能を初期化します。
	rdvol : ドラムの基本音量(0~127)
	randv_flag : ランダム音量フラグ 1=有効、0=無効
	randr_flag : ランダム休符フラグ 1=有効、0=無効
	bdrotate   : バスドラムロテートフラグ  1=有効、0=無効
  sdrotate   : スネアドラムロテートフラグ  1=有効、0=無効
  cymrotate  : シンバルロテートフラグ  1=有効、0=無効

 ■ RDV(vol)
  RD機能の基本音量を設定します(0~127)

 ■ RDCresc(vol)
  ノートごとに音量増をします。マイナス値を設定すると、減をします。 (0~127)

 ■ RandV(Int MIN, Int MAX)
	ドラム定義マクロ内で使用する音量乱数範囲設定関数
	MIN : 最小音量 (0~127)
	MAX : 最大音量 (0~127)

 ■ RandR(Int MIN, Int MAX)
	ドラム定義マクロ内で使用する休符乱数範囲設定関数
	MIN : 休符の最小値 (1~System.TimeBaseの値)
	MAX : 休符の最大値 (1~System.TimeBaseの値)

 ■ SyncR()
	通常使用することはありませんが、ドラムの乱数休符を強制的にクリアする関数

 ■ #RDRUMSET1
	既にRDVで定義してあるサンプルドラムセット
  以下に対応します。
		k : Sticks
		B : Kick2 / b : Kick1
		s : Snare1 / S : Snare2
		L : LowTom2 / l : LowTom1
		M : MidTom2 / m : MidTom2
		T : HighTom2 / t : HighTom1
		p : PedalHihat / h : ClosedHihat / o : OPenHihat
		r : RideCymbal1 / R : RideCymbal2 / P : RideBell
		c : CrashCYmbal1 / C : CrashCymbal2
		a : SplashCymbal / A : ChineseCymbal

 ■ ドラムセットの指定方法のサンプル
	$p{Sub{RandR(800,1536) RandV(110,127) n(PedalHiHat),16}r}
	$h{Sub{RandR(800,1536) RandV( 65, 80) n(ClosedHiHat),16}r}
	$o{Sub{RandR(800,1536) RandV( 90,110) n(OpenHiHat),16}r}

  このマクロで指定することで、通常通りのドラムマクロで演奏感をつけることができます。
  ※ただし、ドラムノート音の長さに依存するものは、16の数字を適時変更するか、
	 通常の方法でマクロを指定して下さい。

 ■ よりリアリティーある演奏にさせるためのコツ
  より細かいシステムクォンタイズ(System.TimeBase)にすることをおすすめします。
	最低でも System.TimeBase=192に設定するようにしましょう。

 ■ 現在わかってる問題
	MMLに数字を入れて長さを設定してもうまくいかないことがあります。
	その場合は、事前に、l8 等を設定して、長さを設定して下さい。

*/

#REV={
	IF(TWM2=1) {
		REV(50)
	}ELSE{
		REV(100)
	}
}

#R={
	RCDINIT(480,960)
	RMDINIT(320,960,90,110)
	SRCDINIT(112,144,90,110)
}

#R2={
	RCDINIT(480,960)
	RMDINIT(320,960)
	SRCDINIT(48,64)
}

#R3={
	RCDINIT(480,960)
	RMDINIT(320,960)
	SRCDINIT(16,24)
}

IF(DY=0) {
	#SSP={
		RMDCresc(0)
		RMDV(28,32)
		RCDV(28,32)
		SRCDV(28,32)
		Sub {RMD(r96)}
	}

	#SP={
		RMDCresc(0)
		RMDV(33,36)
		RCDV(33,36)
		SRCDV(33,36)
		Sub {RMD(r96)}
	}

	#PP={
		RMDCresc(0)
		RMDV(33,48)
		RCDV(33,48)
		SRCDV(33,48)
		Sub {RMD(r96)}
	}

	#PPS={
		RMDCresc(0)
		RMDV(40,56)
		RCDV(40,56)
		SRCDV(40,56)
		Sub {RMD(r96)}
	}

	#P={
		RMDCresc(0)
		RMDV(48,64)
		RCDV(48,64)
		SRCDV(48,64)
		Sub {RMD(r96)}
	}

	#PS={
		RMDCresc(0)
		RMDV(56,72)
		RCDV(56,72)
		SRCDV(56,72)
		Sub {RMD(r96)}
	}

	#M={
		RMDCresc(0)
		RMDV(64,80)
		RCDV(64,80)
		SRCDV(64,80)
		Sub {RMD(r96)}
	}

	#MS={
		RMDCresc(0)
		RMDV(72,88)
		RCDV(72,88)
		SRCDV(72,88)
		Sub {RMD(r96)}
	}

	#F={
		RMDCresc(0)
		RMDV(80,96)
		RCDV(80,96)
		SRCDV(80,96)
		Sub {RMD(r96)}
	}

	#FS={
		RMDCresc(0)
		RMDV(88,104)
		RCDV(88,104)
		SRCDV(88,104)
		Sub {RMD(r96)}
	}

	#FF={
		RMDCresc(0)
		RMDV(96,112)
		RCDV(96,112)
		SRCDV(96,112)
		Sub {RMD(r96)}
	}

	#FFS={
		RMDCresc(0)
		RMDV(104,120)
		RCDV(104,120)
		SRCDV(104,120)
		Sub {RMD(r96)}
	}

	#SF={
		RMDCresc(0)
		RMDV(112,127)
		RCDV(112,127)
		SRCDV(112,127)
		Sub {RMD(r96)}
	}

	#SSF={
		RMDCresc(0)
		RMDV(127,127)
		RCDV(127,127)
		SRCDV(127,127)
		Sub {RMD(r96)}
	}

} ELSE {
	#SSP={
		RMDCresc(0)
		RMDV(36,40)
		RCDV(36,40)
		SRCDV(36,40)
		Sub {RMD(r96)}
	}

	#SP={
		RMDCresc(0)
		RMDV(42,58)
		RCDV(42,58)
		SRCDV(42,58)
		Sub {RMD(r96)}
	}

	#PP={
		RMDCresc(0)
		RMDV(52,64)
		RCDV(52,64)
		SRCDV(52,64)
		Sub {RMD(r96)}
	}

	#PPS={
		RMDCresc(0)
		RMDV(56,72)
		RCDV(56,72)
		SRCDV(56,72)
		Sub {RMD(r96)}
	}

	#P={
		RMDCresc(0)
		RMDV(64,80)
		RCDV(64,80)
		SRCDV(64,80)
		Sub {RMD(r96)}
	}

	#PS={
		RMDCresc(0)
		RMDV(72,84)
		RCDV(72,84)
		SRCDV(72,84)
		Sub {RMD(r96)}
	}

	#M={
		RMDCresc(0)
		RMDV(80,92)
		RCDV(80,92)
		SRCDV(80,92)
		Sub {RMD(r96)}
	}

	#MS={
		RMDCresc(0)
		RMDV(84,96)
		RCDV(84,96)
		SRCDV(84,96)
		Sub {RMD(r96)}
	}

	#F={
		RMDCresc(0)
		RMDV(92,108)
		RCDV(92,108)
		SRCDV(92,108)
		Sub {RMD(r96)}
	}

	#FS={
		RMDCresc(0)
		RMDV(96,112)
		RCDV(96,112)
		SRCDV(96,112)
		Sub {RMD(r96)}
	}

	#FF={
		RMDCresc(0)
		RMDV(108,120)
		RCDV(108,120)
		SRCDV(108,120)
		Sub {RMD(r96)}
	}

	#FFS={
		RMDCresc(0)
		RMDV(112,124)
		RCDV(112,124)
		SRCDV(112,124)
		Sub {RMD(r96)}
	}

	#SF={
		RMDCresc(0)
		RMDV(120,127)
		RCDV(120,127)
		SRCDV(120,127)
		Sub {RMD(r96)}
	}

	#SSF={
		RMDCresc(0)
		RMDV(127,127)
		RCDV(127,127)
		SRCDV(127,127)
		Sub {RMD(r96)}
	}
}

Key(KEY)

TR(1)
	#REV

TR(2)
	#REV

TR(3)
	#REV

TR(4)
	#REV


曲名={"月の光「ベルガマスク組曲」より(打ち込み版)"}
作者={"ななこっち★ based by Claude Achille Debussy"}

拍子 9,8

#PEDALON={Sub {r24y64,127}}
#PEDALOFF={Sub{r-48 RandR(50,72) y64,0}}
//#PEDALOFF={Sub{r-32 y64,0 y64,0}}

//////////////////////////////////////////////////////
// MML

#PART1_16={
	TmpChangeR(35,0)TmpChangeR(65,!2.^4.)
	TmpChangeR(70,0)TmpChangeR(62,!2.^4.)
	TmpChangeR(70,0)TmpChangeR(75,!4.)TmpChangeR(60,!2.)
	TmpChangeR(72,0)TmpChangeR(65,!4.)TmpChangeR(65,!2.)
	TmpChangeR(75,0)TmpChangeR(100,!4.)TmpChangeR(75,!4.)TmpChangeR(70,0)r8TmpChangeR(60,0)r8TmpChangeR(75,0)r8
	TmpChangeR(90,0)TmpChangeR(100,!4.)TmpChangeR(70,0)r4.TmpChangeR(80,0)r4.
	TmpChangeR(85,0)TmpChangeR(100,!4.)TmpChangeR(90,!4.)TmpChangeR(70,!4.)
	TmpChangeR(80,0)TmpChangeR(85,!4.)TmpChangeR(100,0)TmpChangeR(30,!2.)
}

#PEDAL1={
	Sub {
		[4 #PEDALON r2.r4. #PEDALOFF]
		[4 #PEDALON r2. #PEDALOFF #PEDALON r4. #PEDALOFF]
	}
}

#PART1_1={
	o6 l8 q94 #R #PP #PEDAL1
	rr RMD(a-2f2)
	RMD(e-fe-2.^8)
	RMD(d-e-)Sub{RMD(d-6f6^6d-6^8)}r2.r
	RMD(cd-c2.^8)
	#PPS RMD(<b->c<b->e-<b-a-b-a-^)
	RMDCresc(-1)RMD(g-a-g-4.f4.^8)
	RMD(fg- fb-f e-fe-^)
	RMD(d-e-d-4.c4.)
}

#PART1_2={
	o6 l8 q94 #R #SP #PEDAL1
	rr RMD(f2d-2)
	RMD(cd-c2.^8)
	RMD(<b->c<b-2.^8)
	RMD(a-b-a-2.)
	RMD(g-2.g-4.)
	RMD(e-2.e-4.)
	RMD(d-2.^4.)
	RMD(<b-2.a-4.)
}

#PART1_3={
	o5 l8 q94 #R #SP #PEDAL1
	r l4^2.RCD(fa-)
	l2.^4.RCD(f#a)
	RCD(fa-)
	RCD(e-g-)
	l2.RCD(d-e-)l4.RCD(ce-)
	l2.RCD(<b->d-)l4.RCD(<a>c)<
	Sub{RMD(b-2.^4.)}RMD(a-2.g-4.)
	l2.RCD(fa-)Sub{RMD(e-6)#PPS RMD(<a-6^8>)}#SP RMD(g-4.)
}

#PART1_4={
	[8 r2.r4.]
}

#PART2_16={
	TmpChangeR(90,0)TmpChangeR(65,!4)TmpChangeR(45,0)r8TmpChangeR(55,0)r4.TmpChangeR(65,0)r4.
	TmpChangeR(70,0)TmpChangeR(60,!2.^4.)
	TmpChangeR(65,0)TmpChangeR(90,!4)TmpChangeR(60,!8)TmpChangeR(60,0)r4.TmpChangeR(65,0)r4.
	TmpChangeR(80,0)TmpChangeR(55,!2.)TmpChangeR(90,0)r4.
	TmpChangeR(90,0)TmpChangeR(40,!4.)TmpChangeR(60,0)TmpChangeR(70,!2.)
	TmpChangeR(85,0)TmpChangeR(60,!4.)TmpChangeR(40,!2.)
}

#PEDAL2={
	Sub{
		[6 #PEDALON r2.r4.#PEDALOFF]
	}
}

#PART2_1={
	o6 l8 q94 #R #PS #PEDAL2
	r4.RMDCresc(-2)RMD(a-4.f2)
	RMD(e-f e-2.^8)
	#PS RMDCresc(-4)RMD(d-e- a-4.f2)
	RMD(e-f e-4.d-2)
	#PS RCD(<d->d-)RCD(<e->e-) #M Sub{l6 RCD(<b->b-)l6^6 RCD(<a->a-) #PS l6^8 RCD(<f>f)}r2.
	RMDCresc(-2)l8rRMD(e-f)Sub{RMD(e-6d-6^6<b-6)}r2.
}

#PART2_2={
	o6 l8 q94 #R #SP #PEDAL2
	rl4RCD(<<fa->>)RMDCresc(-2)RMD(f4.d-2)
	l4^2.RCD(<g-b->)
	#PP r8 RMDCresc(-1)l8Sub{RMD(<a-4>)}RMD(<d-e->)l4.RCD(<a->d-)RCD(<f>d-)
	#SP r8l8 l4^2.RCD(<g-b->)
	r8RMD(<a-4>f2.)
	r8l4^2.RCD(<fb->)
}

#PART2_3={
	o3 l8 q94 #R #P #PEDAL2
	RMD(d-)rr r2.
	l2.RCD(g->d-<)r4.
	RCD(f>d-<)r4.
	RCD(g->d-<)r4.
	l2.^4.RMD(a-)
	RMD(b-)
}

#PART2_4={
	o5 l8 q94 #R #SP #PEDAL2
	rr l8^2.RCD(fa-)
	r8 <l4^2.SRCD(d-g-b->d-<)
	r8 l4RCD(fa-)>l4.RCD(d-f)<RCD(a->d-<)
	r8 l4^2.SRCD(d-g-b->d-<)
	r8 l4RCD(fb) l4.^8RCD(b>d-f<)r8r8
	r8 Sub{RMD(>e-4^6d-6^4.<)}l4^2.RCD(fb-)
}

Int TMPBAK

#PART3_16={
	TmpChangeR(20,0)TmpChangeR(90,!4.)TmpChangeR(80,!4.)TmpChangeR(70,!4.)
	TmpChangeR(60,!4.)TmpChangeR(50,0)r4.r8TmpChangeR(150,0)r4
	TmpChangeR(40,0)TmpChangeR(100,!4.)TmpChangeR(85,!4.)TmpChangeR(70,!4.)
	TmpChangeR(75,!4.)TmpChangeR(60,0)r4.TmpChangeR(80,0)r4.

	// l6がうまくはまらないのでテンポで調整
	#fix1={TMPBAK=Tempo TmpChangeR(999,0)r8 TmpChangeR(TMPBAK,0)}
	TmpChangeR(60,0)TmpChangeR(80,!2.)TmpChangeR(60,!4)#fix1
	TmpChangeR(70,0)TmpChangeR(110,!4.)TmpChangeR(80,!4.)TmpChangeR(60,!4.)
	TmpChangeR(73,0)TmpChangeR(100,!2.)TmpChangeR(65,!4)#fix1
	TmpChangeR(80,0)TmpChangeR(130,!4.)TmpChangeR(80,!4.)TmpChangeR(60,!4)TmpChangeR(300,0)r8
	TmpChangeR(60,0)TmpChangeR(80,!2.)TmpChangeR(60,!4)#fix1
	TmpChangeR(75,0)TmpChangeR(100,!4.)TmpChangeR(90,!4.)TmpChangeR(50,!4.)

	TmpChangeR(70,0)TmpChangeR(90,!2.)TmpChangeR(70,!4.)
	TmpChangeR(90,0)TmpChangeR(50,!2.)TmpChangeR(20,0)r8TmpChangeR(70,!4)
}

#PEDAL3={
	Sub{
		[2 #PEDALON r2.r4. r2.r4. #PEDALOFF]
		[6 #PEDALON r2.r4.#PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF #PEDALON r4. #PEDALOFF]
	}
}

#PART3_1={
	o7 l8 q94 #R #SP #PEDAL3
	// PART3_2とかRCDと共通できるようにした
	RMDCresc(1)Sub{l6 r l6^8 RMD(f)}r4. l8rRMD(e-)RMD(e-)RMD(e-)RMD(d-)RMD(d-)
	RMD(d-)RMD(c)RMD(c) Sub{l6RMD(c)RMD(d-)}r4.l4.RMD(<b->)
	#P RMDCresc(-1)Sub{l6 r l6^8 RMD(f)}r4. l8rRMD(g-)RMD(f)RMD(e-)RMD(f)RMD(e-)
	RMD(d-)RMD(e-)RMD(d-) Sub{l8rRMD(e-)}Sub{l6RMD(c)RMD(d-)}r4.Sub{l4.^6RMD(<b->)}r4.<

	#PP RMDCresc(1)Sub{l6 rRMD(g-)RMD(a-)RMD(>c<)RMD(b-)RMD(g-)}r2.r4.
	l8 rRMD(g-)RMD(g-) RMD(g-)RMD(g-)RMD(a-) l4.RMD(g-)
	Sub{l6 rRMD(g-)RMD(a-)RMD(>d-<)RMD(b-)RMD(g-)}r2.r4.
	l8 rRMD(g-)RMD(g-) RMD(g-)RMD(g-)RMD(a-) l4.RMD(g-)
	#M Sub{l6 rRMD(g-)RMD(a-)RMD(>e-<)RMD(>d-<)RMD(b-)}r2.r4.
	l8 rRMD(b-)RMD(b-) RMD(b-)RMD(b-)#P RMD(>c<) RMD(b-)>RMD(d-)RMD(e-)<

	o5 #R2 #SP l2.SRCD(fa->d-fa->d-a-<<)l4.SRCDINIT(40,56)#SP SRCD(ea-b->d-ea->d-a-<<)
	l2.SRCDINIT(32,48)#SP SRCD(e-g-a->d-e-a->d-a-<<)<SRCDINIT(32,48)#SP l4.#SSP SRCD(a->e-g->c<a->e-a-<)
}

#PART3_2={
	o6 l8 q94 #R #SSP #PEDAL3
	Sub{l6 r l6^8 RCD(fb-)}r4. l8rRCD(e-b-)RCD(e-b-)RCD(e-b-)RCD(d-b-)RCD(d-b-)
	RCD(d-b-)RCD(cb-)RCD(cb-) Sub{l6RCD(cb-)RCD(d-b-)}r4.l4.RCD(<b->g-)
	#SP Sub{l6 r l6^8 RCD(fb-)}r4. l8rRCD(g-b-)RCD(fb-)RCD(e-b-)RCD(fb-)RCD(e-b-)
	RCD(d-b-)RCD(e-b-)RCD(d-b-) Sub{l6RCD(cb-)RCD(d-b-)}r4.Sub{l4.^6RCD(<b->g-)}r4.<

	Sub{l6 rRCD(g-)RCD(a->e-<)RCD(>c<)RCD(b->g-<)RCD(g-)}r2.r4.
	l8 rRCD(g->ce-<)RCD(g->ce-<) RCD(g->ce-<)RCD(g->ce-<)RCD(a->ce-<) l4.RCD(g->ce-<)
	#SP Sub{l6 rRMD(>d-<)rrRMD(>g-<)}Sub{l6 rRCD(g-)RCD(a-)RCD(>d-<)RCD(b-)RCD(g-)}r2.r4.
	l8 rRCD(g-b->e-<)RCD(g-b->e-<) RCD(g-b->e-<)RCD(g-b->e-<)RCD(a-b->e-<) l4.RCD(g-b->e-<)
	Sub{l6 r RCD(b->d-<)rrRCD(>g-b-<)}Sub{l6 rRCD(g-)RCD(a-)RCD(>e-<)RCD(>d-<)RCD(b-)}r2.r4.
	l8 rRCD(b->g-<)RCD(b->g-<) RCD(b->g-<)RCD(b->g-<)RCD(>ca-<) RCD(b->g-<)>RCD(d-b-)RCD(e-b-)<

	r2.r4.
	r2.r4.
}

#PART3_3={
	o2 l8 q94 #R #PP #PEDAL3
	l2.^4.RCD(e->e-<)
	r
	#PPS RCD(e->e-b-<)
	r

	#P RCD(a->a-<)
	RCD(a>a<)
	#PS RCD(b->b-<)>
	RCD(c>c<)
	#M RCD(d->d-<)
	RCD(e->e-<)

	r2.r4.
	r2.r4.
}

#PART3_4={
	o5 l8 q94 #R #SSP #PEDAL3
	Sub{l6 r l6^8 RCD(fg-b-)}r4. l8rRCD(e-g-b-)RCD(e-g-b-)RCD(e-g-b-)RCD(d-g-b-)RCD(d-g-b-)
	RCD(d-g-b-)RCD(cg-b-)RCD(cg-b-) Sub{l6RCD(cg-b-)RCD(d-g-b-)}r4.l4.RCD(<b->d-g-)
	Sub{l6 r l6^8 RCD(fg-b-)}r4. l8rRCD(g-b->e-<)RCD(fg-b-)RCD(e-g-b-)RCD(fg-b-)RCD(e-g-b-)
	RCD(d-g-b-)RCD(e-g-b-)RCD(d-g-b-) Sub{l6RCD(cg-b-)RCD(d-g-b-)}r4.Sub{l4.^6RCD(<b->e-g-)}r4.<

	Sub{l6 rRCD(g-)RCD(a->ce-<)RCD(>c<)RCD(b->e-g-<)RCD(g-)}r2.r4.
	l8 rRCD(g->ce-<)RCD(g->ce-<) RCD(g->ce-<)RCD(g->ce-<)RCD(a->ce-<) l4.RCD(g->ce-<)
	Sub{l6 rRCD(g-b->d-<)RCD(a-)RCD(>d-<)RCD(b->d-g-<)RCD(g-)}r2.r4.
	l8 rRCD(g-b->e-<)RCD(g-b->e-<) RCD(g-b->e-<)RCD(g-b->e-<)RCD(a-b->f<) l4.RCD(g-b->e-<)
	#SP Sub{l6 rRCD(g-b->d-<)RCD(a-)RCD(>e-<)RCD(>d-g-b-<)RCD(b-)}r2.r4.
	l8 rRCD(b->d-g-<)RCD(b->d-g-<) RCD(b->d-g-<)RCD(b->d-g-<)RCD(>ce-a-<) RCD(b->d-g-<)>RCD(d-g-b-)RCD(e-g-b-)<

	r2.r4.
	r2.r4.
}

#PART4_16={
	TmpChangeR(20,0)TmpChangeR(55,!16)TmpChangeR(110,!16^4)TmpChangeR(100,!4.)TmpChangeR(90,!4.)
	TmpChangeR(60,0)TmpChangeR(90,!16)TmpChangeR(110,!16^4)TmpChangeR(100,!4.)TmpChangeR(90,!4.)
	TmpChangeR(70,0)TmpChangeR(100,!16)TmpChangeR(125,!8^8.^2.)
	TmpChangeR(110,!2.)TmpChangeR(70,!4.)
	TmpChangeR(60,0)TmpChangeR(90,!16)TmpChangeR(130,!16^4)TmpChangeR(100,!4.)TmpChangeR(90,!4.)
	TmpChangeR(70,0)TmpChangeR(100,!16)TmpChangeR(140,!16^4)TmpChangeR(105,!4.)TmpChangeR(110,!4.)
	TmpChangeR(120,0)TmpChangeR(130,!4.)TmpChangeR(110,!2.)
	TmpChangeR(100,!4.)TmpChangeR(80,!4.)TmpChangeR(40,!4.)

	TmpChangeR(60,0)TmpChangeR(100,!16)TmpChangeR(130,!16^4)TmpChangeR(90,!4.)TmpChangeR(80,!4.)
	TmpChangeR(60,0)TmpChangeR(90,!16)TmpChangeR(110,!16^4)TmpChangeR(80,!4.)TmpChangeR(75,!4.)
	[3 TmpChangeR(110,0)TmpChangeR(115,!16)TmpChangeR(120,!16^4)]
	[3 TmpChangeR(100,0)TmpChangeR(110,!16)TmpChangeR(120,!16^4)]
	[2 TmpChangeR(100,0)TmpChangeR(110,!16)TmpChangeR(120,!16^4)]TmpChangeR(100,0)TmpChangeR(110,!16)TmpChangeR(65,!16^4)
	[2 TmpChangeR(80,0)TmpChangeR(90,!16)TmpChangeR(105,!16^4)]TmpChangeR(100,0)TmpChangeR(90,!16)TmpChangeR(55,!16^4)
	TmpChangeR(60,0)TmpChangeR(110,!4.)TmpChangeR(90,!2.)
	TmpChangeR(80,0)TmpChangeR(100,!4.)TmpChangeR(60,!2.)

	TmpChangeR(80,0)TmpChangeR(120,!2.)TmpChangeR(80,!4.)
	TmpChangeR(90,0)TmpChangeR(120,!4.)TmpChangeR(115,!4.)TmpChangeR(110,!4.)
	TmpChangeR(130,!2.)TmpChangeR(110,!4.)
	TmpChangeR(130,!4.)TmpChangeR(120,!4.)TmpChangeR(110,0)TmpChangeR(70,!4.)

	TmpChangeR(110,0)TmpChangeR(120,!4.)TmpChangeR(100,!2.)
	TmpChangeR(95,0)TmpChangeR(110,!4.)TmpChangeR(60,!2.)
	TmpChangeR(90,0)TmpChangeR(120,!2.)TmpChangeR(110,!4.)
	TmpChangeR(60,!2.)TmpChangeR(30,!4.)
}

#PEDAL4={
	Sub{
		[2 [3 #PEDALON r4.#PEDALOFF]]
		[2 #PEDALON r2.#PEDALOFF #PEDALON r4.#PEDALOFF]	
		[2 [3 #PEDALON r4.#PEDALOFF]]
		#PEDALON r4. #PEDALOFF [4 #PEDALON r8. #PEDALOFF]
		[7 [3 #PEDALON r4.#PEDALOFF]]
		[2 #PEDALON r2.r4. #PEDALOFF]
		[4 #PEDALON r2.#PEDALOFF #PEDALON r4. #PEDALOFF]
		[2 #PEDALON r2.#PEDALOFF #PEDALON r4. #PEDALOFF]
		[2 [3 #PEDALON r4.#PEDALOFF]]
	}
}

#PART4_1={
	o5 l8 q94 #R #M #PEDAL4
	RMD(a-2. b4>d-8<)
	RMD(a-2. b4a-8)
	RMDCresc(1)RMD(>d-4e-8 f4. d-4f8)
	Sub{RMD(gfd- d-4.)r4.}l8 RMD(rrr <gfd- d-.)#PS RMD(<b-.>>)
	#MS RMDCresc(-1)RMD(<b-2. >c4f8)
	#MS RMDCresc(2)RMD(<b-2. >c4f8)
	#F RMDCresc(-2)RMD(g-4.^8.f8.d8.e-8.)
	RMDCresc(-5)RMD(b-2.a-4.)

	#F RMDCresc(2)RMD(a-2. b4>d-8<)
	RMDCresc(-2)RMD(a-2. b4a-8)>
	#F l16 RMD(c#4<g#r >e4c#r g#4er)
	RMDCresc(-1)RMD(g#4.f#2.)
	RMD(f#2.a4>c#8<)<
	RMD(f#2.a4>c#8<)>
	#FF RMDCresc(-3)l8RMD(ed#c#)<Sub{RMD(b6a6^8)}r4.rRMD(g#f#)
	RMD(ed#c# < bag#^ f#e)

	#M RMDCresc(-2)<l8RMD(g-4a- b-4>d- g-4b-)<
	#M RMDCresc(-2)RMD(g-4a- b-4>d- g-4b-^)
	#PS RMD(>fe- <d-<b->d- <b->ce-)
	#P RMD(b->fe- <d-<b->d- <b->ce-)>

	#PS RMD(e-2. g-4b-8)
	RMD(e-2. g-4b-8)
	#M RMDCresc(-5)>RMD(e-1.)RMD(d-4.e-4.)
}

#PART4_2={
	o5 l8 q94 #R #SP #PEDAL4
	RMD(f2.a-4r)
	RMD(f2.a-4r)
	RMD(f4a- >d-4. <f4>d-)
	RMD(e-d-<b- b-4. )r4.
	#PP r2.r4 RMD(a-16f16)
	r2.r4 RMD(a-16f16)
	r4.l16 RMD(rg-b- rg-b- rg-b- rg-b-)
	r2.r4.

	l8 >RMD(f2.a-4r)
	RMD(f2.a-4r)
	#PS l16RMD(rrrc#re rrrerg# rrrg#rb)
	r2.r4.
	r2.r4.
	r2.r4.
	#P l8>RMD(c#<ba)Sub{RMD(g#6f#6^8)}r4.rRMD(ed#)
	RMD(c#<ba g#f#e <a>d#c#)

	#SP l2.RCD(d-e-)l4RCD(ce-)l8RCD(e-g-)
	l2.RCD(d-e-)l4RCD(ce-)Sub{l4RCD(g-)}l8RCD(e-)
	l8RCD(d-)RCD(a->c<)RCD(g-b-) l4.RCD(g-b-)RCD(g-a-)
	l8RCD(d-g-)RCD(a->c<)RCD(g-b-) l4.RCD(g-b-)RCD(g-a-)

	l16 RMD(re-g-b-g-e-)RMD(re-g-b-g-e-)RMD(re-g-b->ce-<)
	RMD(re-g-b-g-e-)RMD(re-g-b-g-e-)RMD(re-g-b->ce-<)
	r2.r4.
	r2.r4.
}

#PART4_3={
	o3 l8 q94 #R #P #PEDAL4
	l4.RMD(d-fa-)
	RMD(d-fa-)
	RMD(d-)rr
	RMD(e-)rr
	RMD(a-g-f)
	RMD(a-g-f)
	RMD(e-) >> #M l8.RMD(g-fde-)
	#PS l4.RMD(de-<a-)	

	l4.RMD(d-fa-)
	RMD(d-fa-)
	RMD(b>c#e)
	RMD(g#f#f)
	RMD(ed#c#)<
	RMD(bag#)
	l2.RMD(f#)r4.<
	l2.RMD(f#) l16 #PPS [3 RMD(f#>c#<)]
	#P RMDCresc(-1)[9 RMD(a->e-<)]
	#P RMDCresc(-1)[9 RMD(a->e-<)]
	#P RMDCresc(-1)RMD(a-e-a->e-<a->e- a-e-a->e-<a-e- a-e-<a->e-<a-e-)
	#P RMDCresc(-1)RMD(a-e-a->e-<a->e- a-e-a->e-<a-e- a-e-a-e-a-e-)

	#M RMDCresc(-2)l8RMD(g-4a-b-4>d-c4.<)
	RMDCresc(-3)l8RMD(g-4a-b-4>d-c4.<)
	l4.>RMD(g-)rr
	RMD(g-)rr
}

#PART4_4={
	o3 l8 q94 #R #PP #PEDAL4
	l16 RMD(ra->d-fa->d-<)RMD(rcfa->cf<)RMD(rea-b>ea-<<)
	RMD(ra->d-fa->d-<)RMD(rcfa->cf<)RMD(rea-b>)RMD(re<<)
	RMD(ra->d-fa->d- fa-fd-<a-f a-fd-<a->d-<a-)
	RMD(rb->e-gb->e-)RMD(re-<b-ge-<b- e-b->e-ge-<b-)
	RMD(r>e-g-b->cg-)RMD(r<d-g-b->d-g-)RMD(r<cfa->c8<<)
	RMD(r>e-g-b->cg-)RMD(r<d-g-b->d-g-)RMD(r<cfa->c8<<)
	RMD(rb->e-g-b->e-)r2.
	RMD(rg-b-b->g-b-<)RMD(rg-b-b->g-b-<)RMD(cea->cea-<<)

	RMD(ra->d-fa->d-<<)RMD(a->cfa->cf<<)RMD(b>ea-b>ea-<<)
	RMD(ra->d-fa->d-<<)RMD(a->cfa->cf<<)RMD(b>ea-b>re<<)
	RMD(>c#eg#b8. eg#b>c#8.< g#b>c#e8.<)
	RMD(ra>c#g#>c#<a<)RMD(ra>c#f#>c#<a<)RMD(f#a>c#f#>c#<a<)
	RMD(f#a>c#f#>c#<a<)RMD(f#a>c#f#>c#<a)RMD(<ea>c#e>c#<c#)
	RMD(<rd#f#f#>c#<a)RMD(rc#ef#>c#<a)RMD(rc#ea>ea<)
	o5RMD(rc#ef#a>c# ef#ec#<af# ef#ec#<af#)
	RMD(rc#ef#a>c# ec#<af#ec#)r4.

	r2.r4.
	r2.r4.
	r2.r4.
	r2.r4.

	o5RMD(d-2.)r4.
	o5RMD(d-2.)r4.

	o5 RMD(rb->d-e-g-b-<)RMD(g-b->d-e-g->c<<)RMD(g-b->d-e-g-b-<)
	RMD(ra>d-e-g-a<)RMD(g-a>d-e-g-b<)RMD(g-a>d-e-g-a)
}

#PART5_16={
	TmpChangeR(75,0)TmpChangeR(90,!2.^4.)
	TmpChangeR(95,0)TmpChangeR(65,!2.^4.)
	TmpChangeR(80,0)TmpChangeR(70,!4.)TmpChangeR(85,!2.)
	TmpChangeR(95,0)TmpChangeR(85,!4.)TmpChangeR(80,!2.)
	TmpChangeR(75,0)TmpChangeR(100,!4.)TmpChangeR(75,!4.)TmpChangeR(70,0)r8TmpChangeR(60,0)r8TmpChangeR(75,0)r8
	TmpChangeR(90,0)TmpChangeR(100,!4.)TmpChangeR(70,0)r4.TmpChangeR(80,0)r4.
	TmpChangeR(85,0)TmpChangeR(100,!4.)TmpChangeR(80,!4.)TmpChangeR(70,!4.)
	TmpChangeR(80,0)TmpChangeR(85,!4.)TmpChangeR(70,0)TmpChangeR(30,!2.)
}

#PEDAL5={
	Sub{
		[4 #PEDALON r2.r4. #PEDALOFF]
		[4 #PEDALON r2. #PEDALOFF #PEDALON r4. #PEDALOFF]
	}
}

#PART5_1={
	o7 l8 q94 #R #PPS #PEDAL5
	r4.RMD(a-4.f4.^8)
	RMD(e-f e-2.^8)
	RMD(d-e-)Sub{RMD(d-6f6^6d-6^8)}r2.
	RMD(rcd- c2.)
	RMD(r<b->c<b->e-<b-a-b-a-^)
	RMD(g-a-g-4.f4.^8)
	RMD(fg-fb-fe-fe-^)
	RMD(d-e-d-4.c4.)
}

#PART5_2={
	o7 l8 q94 #R #SSP #PEDAL5
	r4.RMD(f4.)r4.
	rRMD(cd- c2.^8)
	RMD(<b->c<b-2.^)
	RMD(a-b-a-2.)
	RMD(rg-a-g-4.f4.^)
	RMD(e-fe-4.<a4.>)
	RMD(rd-e-d-4.d-4.)
	RMD(r<b->c<b-4.a-4.)
}

#PART5_3={
	o5 l8 q94 #R #SP #PEDAL5
	RMD(f2.f4.)
	RMD(f2.f4.)
	RMD(f2.f4.)
	RMD(e-2.e-4.)
	RMD(d-2.)RCDINIT(32,40) #PP l4.RCD(ce-fa->c<)<
	RMD(c2.f4.)
	RMD(a-2.)l4.RCD(g-b->d-e-<)
	RMD(f2.)Sub{l6RMD(e-<a-)}r4.
}

#PART5_4={
	o5 l16 q94 #R #SSP #PEDAL5
	RMD(ra->cfa->c<<)r2.
	RMD(ra>ce-fa<)r2.
	RMD(ra-b->d-fa-<)r2.
	RMD(rg-a->ce-g-<)r2.
	RMD(re-g-b->d-e-<)r2.
	<RMD(rg-b->ce-g- b-4.)l4.RCD(ce-)l16<
	RMD(rb-d->fa-b-<)r2.
	RMD(ra-b->d-fa-)r4.<l4.RCD(g->c)
}

#PART6_16={
	TmpChangeR(90,0)TmpChangeR(65,!4)TmpChangeR(45,0)r8TmpChangeR(55,0)r4.TmpChangeR(65,0)r4.
	TmpChangeR(70,0)TmpChangeR(60,!2.^4.)
	TmpChangeR(65,0)TmpChangeR(90,!4)TmpChangeR(60,!8)TmpChangeR(60,0)r4.TmpChangeR(65,0)r4.
	TmpChangeR(80,0)TmpChangeR(55,!2.)TmpChangeR(70,0)r4.
	TmpChangeR(80,0)TmpChangeR(40,!4.)TmpChangeR(60,0)TmpChangeR(70,!2.)
	TmpChangeR(85,0)TmpChangeR(60,!4.)TmpChangeR(50,!2.)
	TmpChangeR(65,0)TmpChangeR(50,!4.)TmpChangeR(40,!2.)
}

#PEDAL6={
	Sub{
		[7 #PEDALON r2.r4.#PEDALOFF]
	}
}

#PART6_1={
	o6 l8 q94 #R #PS #PEDAL6
	r4.RMDCresc(-2)RMD(a-4.f2)
	RMD(e-f e-2.^8)
	#PS RMDCresc(-3)RMD(d-e- a-4.f2)
	RMD(e-f e-4.d-2)
	#P <RMD(d-e- b-4.f4.)
	RMD(rg-a- >d-4.<b-4.)
	RMD(rb->c f4.<a-4.)
}

#PART6_2={
	o6 l8 q94 #R #SP #PEDAL6
	rl4RCD(<<fa->>)RMDCresc(-2)RMD(f4.d-2)
	l4^2.RCD(<g-b->)
	#PP r8 RMDCresc(-1)l8Sub{RMD(<a-4>)}RMD(<d-e->)l4.RCD(<a->d-)RCD(<f>d-)
	#SP r8l8 l4^2.RCD(<fb->)
	<<RMD(r8a-4)>l4.RCD(d-f)RCD(<a->d-)<
	r8l4RCD(b->d-)l4.RCD(g-b-)RCD(d-g-)
	r8l4RCD(cg-)l4.RCD(a->c<)RCD(cg-)
}

#PART6_3={
	o3 l8 q94 #R #P #PEDAL6
	RCD(d-a-)rr #PS RMD(>b2.<)
	#P l2.RCD(g->d-<)r4.
	RMD(a-4.>b2.<)
	RMD(b-2.)r4.
	l2.^4.RMD(f)
	RMD(e-)
	l4.RMD(a-)>>>RMD(a-)<<RMD(a-)
}

#PART6_4={
	o5 l8 q94 #R #SP #PEDAL6
	rr l8^2.RCD(fa-)
	r8 <l4^2.RCD(d-g-b->d-<)
	r8 l4RCD(fa-)>l4.RCD(d-f)<RMD(>d-<)
	r8 l4RCD(fb->e-) r4.RMD(d-4.)
	r2.r4.
	r4.<RMD(e-4.>e-4.)<
	Sub{RMD(r6e-6)}r4.r2.
}

#PART7_16={
	TmpChange(60,0)TmpChangeR(100,!4.)TmpChangeR(120,!2.)
	TmpChangeR(110,!4.)TmpChangeR(60,0)TmpChangeR(40,!2.)
	TmpChange(70,0)TmpChangeR(115,!4.)TmpChangeR(110,!2.)
	TmpChangeR(100,!4.)TmpChangeR(55,0)TmpChangeR(40,!2.)
	TmpChangeR(70,0)TmpChangeR(80,!4.)TmpChangeR(55,0)TmpChangeR(40,!2.)
	TmpChangeR(70,0)TmpChangeR(40,!4.)TmpChangeR(80,0)TmpChangeR(50,!2.)
}

#PEDAL7={
	Sub{
		[4 #PEDALON r4. #PEDALOFF][2 #PEDALON r4. #PEDALOFF]
		[4 #PEDALON r4. #PEDALOFF][2 #PEDALON r4. #PEDALOFF]
		#PEDALON r2.r4.#PEDALOFF
		#PEDALON r2.r4. r2.r4.#PEDALOFF
	}
}

#PART7_1={
	o5 l8 q94 #R #PP #PEDAL7
	r2.r4.
	r4.l4.RMD(b>d-<)
	r2.r4.
	r4. >RMD(b>d-<)
	RMD(b>d-e)
	RMD(a-2.^4.)
}

#PART7_2={
	o5 l8 q94 #R #SSP #PEDAL7
	r2.r4.
	r4.l4.RMD(a-e)
	r2.r4.
	r4. >RMD(a-^)
	RMD(a-^)r4.
	>RMD(f2.^4.)
}

#PART7_3={
	o3 l8 q94 #R #SP #PEDAL7
	l4.RMD(d-fd-)
	RMD(fa-2.)>
	RMD(d-fd-)
	RMD(fa-2.)
	RMD(a-4.)r4.<RMD(a-4.)
	RMD(d-2.^4.)
	RCDINIT(24,32)>>RCD(d-a->d-fa->d-fa-)
	// 最後の処理
	r2.^4.
	v1o1d-16
}

#PART7_4={
	o3 l16 q94 #R #SSP #PEDAL7
	RMD(ra->d-fa->d-<<)RMD(r>cfa->cf<<)RMD(ra->d-fa->d-<<)
	RMD(r>cfa->cf<<)RMD(r>ea-b>eg- a-4.)<
	RMD(ra->d-fa->d-<<)RMD(r>cfa->cf<<)RMD(ra->d-fa->d-<<)
	RMD(r>cfa->cf<<)RMD(rb>ea-b>e<<)r4.
	RMD(rb>ea-b>e<<)r4.r4.
	RMD(<a->d-fa->d-)l8RMD(fa->d-fa->d-)
}

TR(1)
	#PART1_1
	#tr1={
		#PART2_1
		#PART3_1
		#PART4_1
		#PART5_1
	}
	LoopPlay(#tr1,,0)
	#PART6_1
	#PART7_1

TR(2)
	#PART1_2
	#tr2={
		#PART2_2
		#PART3_2
		#PART4_2
		#PART5_2
	}
	LoopPlay(#tr2,,0)
	#PART6_2
	#PART7_2

TR(3)
	#PART1_3
	#tr3={
		#PART2_3
		#PART3_3
		#PART4_3
		#PART5_3
	}
	LoopPlay(#tr3,,0)
	#PART6_3
	#PART7_3

TR(4)
	#PART1_4
	#tr4={
		#PART2_4
		#PART3_4
		#PART4_4
		#PART5_4
	}
	LoopPlay(#tr4,,0)
	#PART6_4
	#PART7_4

TR(16)
	#PART1_16
	#tr16={
		#PART2_16
		#PART3_16
		#PART4_16
		#PART5_16
	}
	LoopPlay(#tr16,,0)
	#PART6_16
	#PART7_16