// リスト愛の夢3番
//////////////////
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			// ループ回数 41
System.RandomSeed=1	// 毎回同じ乱数を出す 発音タイミングと音量とペダルのリリース、テンポが乱数

IF(TINY=1) {
	Expression.Frequency(2);
	Modulation.Frequency(8);
	System.TimeBase=96
} ELSE {
	Expression.Frequency(1);
	Modulation.Frequency(1);
	System.TimeBase=1536
}


///////////////////////////////////////////////////////////////////////////////
// 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={M4m4m4 m4m4m4}

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.10
// description:  単音、和音、ドラムをランダムな音量とタイミングで演奏するインクルードファイル(2025/05/19)
// keywords:     SAKURA Function     by ななこっち★ @nanonano773
// License:      GPL3
///////////////////////////////////////////////////////////////////////////////
// rnd.h メロディー、和音、ドラムをランダムなタイミングで演奏する
///////////////////////////////////////////////////////////////////////////////
// 詳細の取扱説明書は、ファイル下部へ
//
// Function RMDINIT(rmin, rmax, vmin, vmax)
// 休符乱数値の最小値、最大値、最小、最大音量設定する。両方0にすると、同一タイミングで演奏します。
// 
// Function RMDR(rmin, rmax)
// 休符乱数値の最小値、最大値の設定のみする
//
// Function RMDV(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)
// Function RCDAV(vmin, vmax)
// MMLの音文字の前に ! を指定することで、アクセントと認識する
// そのアクセントの音量を設定する
//
// 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_AMIN=-1
Int RCD_AMAX=-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
	Int ACT=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 RCDAV(Int VMIN, Int VMAX) {
	RCD_CRESC=0
	IF(VMAX=0) {
		Int TMPMIN=RCD_AMIN
		Int TMPMAX=RCD_AMAX
		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_AMIN=TMPMIN
		RCD_AMAX=TMPMAX
	} ELSE {
		RCD_AMIN=VMIN
		RCD_AMAX=VMAX
	}
}

Function RCD(Str MML) {
	Str BUF=""
	Str FIRST=""
	Str ML=""
	Str M
	Str R
	Str FM
	Int C=0
	Str VL
	Int ACT=0

	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="!") {
				ACT=1
				C++
			} ELSE {
				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) {
							IF(ACT == 0) {
								VL="v"+Random(RCD_TMIN, RCD_TMAX)
							} ELSE {
								VL="v"+Random(RCD_AMIN, RCD_AMAX)
							}
							ACT=0
							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
					}
					ACT=0
				} 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を入れると自動的に１オクターブ上の音と一緒に和音で生演奏に
　　近くなるように演奏をします。

　　（ストトンは使えません）
　　サポートしている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を入れると自動的に１オクターブ上の音と一緒に和音で生演奏に
　　近くなるように演奏をします。

　　（ストトンは使えません）
　　サポートしている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(256,800,90,110)
}

IF(DY=0) {
	#SSP={
		RMDCresc(0)
		RMDV(32,32)
		RCDV(32,32)
		RCDAV(32,32)
		Sub {RMD(r96)}
	}

	#SP={
		RMDCresc(0)
		RMDV(33,36)
		RCDV(33,36)
		RCDAV(36,48)
		Sub {RMD(r96)}
	}

	#SPA={
		RMDCresc(0)
		RMDV(33,36)
		RCDV(33,36)
		RCDAV(48,56)
		Sub {RMD(r96)}
	}

	#PP={
		RMDCresc(0)
		RMDV(33,48)
		RCDV(33,48)
		RCDAV(48,56)
		Sub {RMD(r96)}
	}

	#PPA={
		RMDCresc(0)
		RMDV(33,48)
		RCDV(33,48)
		RCDAV(56,64)
		Sub {RMD(r96)}
	}

	#PPS={
		RMDCresc(0)
		RMDV(40,56)
		RCDV(40,56)
		RCDAV(56,64)
		Sub {RMD(r96)}
	}

	#PPSA={
		RMDCresc(0)
		RMDV(40,56)
		RCDV(40,56)
		RCDAV(64,72)
		Sub {RMD(r96)}
	}

	#P={
		RMDCresc(0)
		RMDV(48,64)
		RCDV(48,64)
		RCDAV(64,72)
		Sub {RMD(r96)}
	}

	#PA={
		RMDCresc(0)
		RMDV(48,64)
		RCDV(48,64)
		RCDAV(72,80)
		Sub {RMD(r96)}
	}

	#PS={
		RMDCresc(0)
		RMDV(56,72)
		RCDV(56,72)
		RCDAV(72,80)
		Sub {RMD(r96)}
	}

	#PSA={
		RMDCresc(0)
		RMDV(56,72)
		RCDV(56,72)
		RCDAV(80,88)
		Sub {RMD(r96)}
	}

	#M={
		RMDCresc(0)
		RMDV(64,80)
		RCDV(64,80)
		RCDAV(80,88)
		Sub {RMD(r96)}
	}

	#MA={
		RMDCresc(0)
		RMDV(64,80)
		RCDV(64,80)
		RCDAV(88,96)
		Sub {RMD(r96)}
	}

	#MS={
		RMDCresc(0)
		RMDV(72,88)
		RCDV(72,88)
		RCDAV(88,96)
		Sub {RMD(r96)}
	}

	#MSA={
		RMDCresc(0)
		RMDV(72,88)
		RCDV(72,88)
		RCDAV(96,104)
		Sub {RMD(r96)}
	}

	#F={
		RMDCresc(0)
		RMDV(80,96)
		RCDV(80,96)
		RCDAV(96,104)
		Sub {RMD(r96)}
	}

	#FA={
		RMDCresc(0)
		RMDV(80,96)
		RCDV(80,96)
		RCDAV(104,112)
		Sub {RMD(r96)}
	}

	#FS={
		RMDCresc(0)
		RMDV(88,104)
		RCDV(88,104)
		RCDAV(104,112)
		Sub {RMD(r96)}
	}

	#FSA={
		RMDCresc(0)
		RMDV(88,104)
		RCDV(88,104)
		RCDAV(112,120)
		Sub {RMD(r96)}
	}

	#FF={
		RMDCresc(0)
		RMDV(96,112)
		RCDV(96,112)
		RCDAV(112,120)
		Sub {RMD(r96)}
	}

	#FFA={
		RMDCresc(0)
		RMDV(96,112)
		RCDV(96,112)
		RCDAV(120,127)
		Sub {RMD(r96)}
	}

	#FFS={
		RMDCresc(0)
		RMDV(104,120)
		RCDV(104,120)
		RCDAV(120,127)
		Sub {RMD(r96)}
	}

	#FFSA={
		RMDCresc(0)
		RMDV(104,120)
		RCDV(104,120)
		RCDAV(127,127)
		Sub {RMD(r96)}
	}

	#SF={
		RMDCresc(0)
		RMDV(112,127)
		RCDV(112,127)
		RCDAV(127,127)
		Sub {RMD(r96)}
	}

	#SFA={
		RMDCresc(0)
		RMDV(112,127)
		RCDV(112,127)
		RCDAV(127,127)
		Sub {RMD(r96)}
	}

	#SSF={
		RMDCresc(0)
		RMDV(127,127)
		RCDV(127,127)
		RCDAV(127,127)
		Sub {RMD(r96)}
	}

	#SSFA={
		RMDCresc(0)
		RMDV(127,127)
		RCDV(127,127)
		RCDAV(127,127)
		Sub {RMD(r96)}
	}

} ELSE {
	#SSP={
		RMDCresc(0)
		RMDV(32,36)
		RCDV(32,36)
		RCDAV(36,52)
		Sub {RMD(r96)}
	}

	#SP={
		RMDCresc(0)
		RMDV(36,52)
		RCDV(36,52)
		RCDAV(52,64)
		Sub {RMD(r96)}
	}

	#SPA={
		RMDCresc(0)
		RMDV(36,52)
		RCDV(36,52)
		RCDAV(64,72)
		Sub {RMD(r96)}
	}

	#PP={
		RMDCresc(0)
		RMDV(52,64)
		RCDV(52,64)
		RCDAV(64,72)
		Sub {RMD(r96)}
	}

	#PPA={
		RMDCresc(0)
		RMDV(52,64)
		RCDV(52,64)
		RCDAV(72,80)
		Sub {RMD(r96)}
	}

	#PPS={
		RMDCresc(0)
		RMDV(56,72)
		RCDV(56,72)
		RCDAV(72,80)
		Sub {RMD(r96)}
	}

	#PPSA={
		RMDCresc(0)
		RMDV(56,72)
		RCDV(56,72)
		RCDAV(80,84)
		Sub {RMD(r96)}
	}

	#P={
		RMDCresc(0)
		RMDV(64,80)
		RCDV(64,80)
		RCDAV(80,84)
		Sub {RMD(r96)}
	}

	#PA={
		RMDCresc(0)
		RMDV(64,80)
		RCDV(64,80)
		RCDAV(84,92)
		Sub {RMD(r96)}
	}

	#PS={
		RMDCresc(0)
		RMDV(72,84)
		RCDV(72,84)
		RCDAV(84,92)
		Sub {RMD(r96)}
	}

	#PSA={
		RMDCresc(0)
		RMDV(72,84)
		RCDV(72,84)
		RCDAV(92,96)
		Sub {RMD(r96)}
	}

	#M={
		RMDCresc(0)
		RMDV(80,92)
		RCDV(80,92)
		RCDAV(92,96)
		Sub {RMD(r96)}
	}

	#MA={
		RMDCresc(0)
		RMDV(80,92)
		RCDV(80,92)
		RCDAV(96,108)
		Sub {RMD(r96)}
	}

	#MS={
		RMDCresc(0)
		RMDV(84,96)
		RCDV(84,96)
		RCDAV(96,108)
		Sub {RMD(r96)}
	}

	#MSA={
		RMDCresc(0)
		RMDV(84,96)
		RCDV(84,96)
		RCDAV(108,112)
		Sub {RMD(r96)}
	}

	#F={
		RMDCresc(0)
		RMDV(92,108)
		RCDV(92,108)
		RCDAV(108,112)
		Sub {RMD(r96)}
	}

	#FA={
		RMDCresc(0)
		RMDV(92,108)
		RCDV(92,108)
		RCDAV(112,120)
		Sub {RMD(r96)}
	}

	#FS={
		RMDCresc(0)
		RMDV(96,112)
		RCDV(96,112)
		RCDAV(112,120)
		Sub {RMD(r96)}
	}

	#FSA={
		RMDCresc(0)
		RMDV(96,112)
		RCDV(96,112)
		RCDAV(120,124)
		Sub {RMD(r96)}
	}

	#FF={
		RMDCresc(0)
		RMDV(108,120)
		RCDV(108,120)
		RCDAV(120,124)
		Sub {RMD(r96)}
	}

	#FFA={
		RMDCresc(0)
		RMDV(108,120)
		RCDV(108,120)
		RCDAV(124,127)
		Sub {RMD(r96)}
	}

	#FFS={
		RMDCresc(0)
		RMDV(112,124)
		RCDV(112,124)
		RCDAV(124,127)
		Sub {RMD(r96)}
	}

	#FFSA={
		RMDCresc(0)
		RMDV(112,124)
		RCDV(112,124)
		RCDAV(127,127)
		Sub {RMD(r96)}
	}

	#SF={
		RMDCresc(0)
		RMDV(120,127)
		RCDV(120,127)
		RCDAV(127,127)
		Sub {RMD(r96)}
	}

	#SSF={
		RMDCresc(0)
		RMDV(127,127)
		RCDV(127,127)
		RCDAV(127,127)
		Sub {RMD(r96)}
	}
}

Key(KEY)

TR(1)
	#REV

TR(2)
	#REV

TR(3)
	#REV

TR(4)
	#REV


曲名={"愛の夢 Liebestraume S.298 「おお、愛しうる限り愛せ」 (打ち込み版)"}
作者={"ななこっち★ based by Franz Liszt"}

拍子 6,4

#PEDALON={Sub {r56y64,127}}
#PEDALOFF={Sub{r-48 RandR(50,72) y64,0}}
#PEDALOFF2={Sub{r-48 RandR(48,52) y64,0}}
//#PEDALOFF={Sub{r-32 y64,0 y64,0}}

//////////////////////////////////////////////////////
// MML

#PART0_16={
	TmpChangeR(900,0)r2.r2TmpChangeR(70,0)r4
}

#PART0_1={
	o4 l4 #R #M q94 #PEDAL0
	r2.r2RMD(e-)
}

#PART0_2={
	r1.
}

#PART0_3={
	r1.
}

#PART0_4={
	r1.
}

#PART1_16={
	TmpChangeR(Random(85,90),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(105,100),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(105,100),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(145,155),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(145,155),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8^8)TmpChangeR(Random(90,100),!8^8)

	TmpChangeR(Random(95,105),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(105,100),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(105,100),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(55,70),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(105,100),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(140,150),!8^8)
	TmpChangeR(Random(105,100),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(100,110),0)r8TmpChangeR(Random(135,155),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(120,130),!8^8)
}


#PEDAL1={
	Sub{
		[4 #PEDALON r1. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[2 #PEDALON r1. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[4 #PEDALON r1. #PEDALOFF]
	}
}

#PART1_1={
	o5 l4 #R #M q94 #PEDAL1
	RMD(c2.c2.)
	RMD(c2.^2c4)
	RMD(c2c4 d-2c4)
	RMD(c2. )RMDCresc(4)RMD(<frf)
	Sub{r32 RMD(f)}r4RMD(ga- >)RMDCresc(-9)RMD(c2<b-)
	RMD(a-2.rre-)>

	#M Sub{r32 RMD(c2.)}r2.RMDCresc(4)RMD(c2.)
	RMD(c2.^2c4)
	RMD(c2c4)Sub{r20RMD(d-4.)}r2RMD(c4)
	Sub{r36 RMD(f2.)}r2.<#MS RMDCresc(-2)RMD(rrf)
	Sub{r40 RMD(f4)}r4RMD(ga-)Sub{RandR(32,48) RMD(>c2<)}r2RMD(b-)
	RMD(a-)rr rrr8RMD(a-8)
}

#PART1_2={
	o5 l8 #R #PP q94 #PEDAL1
	[RMD(re-a->c<a-e-)]
	[RMD(reb->c<b-e)]
	[RMD(re-a>c<ae-)]
	[RMD(rda->c<a-d)]
	RMD(rd-e->c<e-d-)RMD(rd-e-ge-d-)
	RMD(rce-a-e-c <a->ce-a-e-c)

	[RMD(re-a->c<a-e-)]
	[RMD(reb->c<b-e)]
 	RMD(re-a>c<ae-)RMD(re-f>c<ae-)
	RMD(rda->fc<a-)RMD(r<a-b->fd<b->)
	RMD(r<b->d-ge-d-)RMD(rd-e-ge-d-)
	RMD(rce-a-e-c)RMD(rca-e-cr)
}

#PART1_3={
	o3 l4 #R #P q94 #PEDAL1
	RMD(a-rrrrr)
	RMD(grrrrr)
	RMD(frrrrr)
	RMD(<b-rrrrr>)
	Sub{r-48RMD(e-rr)}r2.RMD(>e-rr<)
	RMD(a-rr<a-rr>)

	Sub{r-32RMD(a-rrrrr)}r1.
	RMD(grrg-rr)
	RMD(frr)Sub{r-12RCDINIT(18,32)RCD(>fa<)rr}r2.
	RMD(b-rr<b-rr>)
	RMD(e-rr>e-rr<)
	RMD(a-rr<a-rr>)
}

#PART1_4={
	[12 r1.]
}

#PART2_16={
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(115,120),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8)
	TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(110,120),!8^8^8)
	TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(120,130),!8^8^8)
	TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8)TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8)
	TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(135,145),!8^8^8)
	TmpChangeR(Random(110,120),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(145,155),!8^8^8) TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(145,155),!8^8^8)
	TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(145,155),!8^8^8) TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(135,145),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(135,145),!8^8^8)
	TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(135,145),!8^8^8)
	TmpChangeR(Random(130,140),0)r8TmpChangeR(Random(170,180),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(130,140),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(125,135),!8^8^8)
	TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(135,145),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(135,145),!8^8^8) TmpChangeR(Random(110,120),0)r8TmpChangeR(Random(125,135),0)TmpChangeR(Random(105,115),!8^8)TmpChangeR(Random(60,65),!8^8^8)
	TmpChangeR(Random(50,60))r4TmpChangeR(Random(80,90))r4TmpChangeR(Random(90,100))r4
	TmpChangeR(Random(60,70))r4TmpChangeR(Random(55,60))r4TmpChangeR(Random(30,40))r4
	TmpChangeR(50,0)r4TmpChangeR(130,0)r4r4
}

#PEDAL2={
	Sub{
		[2 #PEDALON r2. #PEDALOFF]
		[6 #PEDALON r1. #PEDALOFF]
		[6 #PEDALON r2. #PEDALOFF]
		#PEDALON r1. r1. #PEDALOFF
	}
}

#PART2_1={
	o4 l8 #R #M q94 #PEDAL2
	RMDCresc(4)RMD(a-^^^^g a-^^^^b-)>
	RMD(c2.)rrrrrRMD(c)
	RMD(c^^^^<b >c^^^^d)
	RMDCresc(-11)RMD(e2.e2.)
	RMD(e2.e2.)
	RMD(e2.)#MS RMD(<b2.)>
	#MS RMDCresc(3)RMD(c#2.^^^^^<g#)

	RMD(a#2.>c#2<b4)
	RMD(a#4a4a#4 >c#2<b4)
	RMD(a#4a4a#4)Sub{RMD(>e2.<)}#MS r4RMD(a-4b-4)>
	#PP RMDCresc(-3)RMD(e4e-4d-4<b4b-4a-4)
	RMD(g4)r4r4
}

#PART2_2={
	o5 l8 #R #PP q94 #PEDAL2
	[RMD(rd-a-ed-r)]
	RMD(re->c<a-e-c)RMD(re->c<a-e-r)
	[RMD(rf>c<a-fr)]
	[RMD(rg>cec<g)]
	[RMD(ra>cec<a)]
	RMD(rg#b>e<bg#)RMD(reg#bg#e)
	RMD(reg#>c#<g#e)RMD(rc#eg#ec#)
	RMD(re-ga#ge-)RMD(reg#>c#<g#e)
	RMD(re-gb-ge-)RMD(rea-b-a-e)
	RMD(re-gb-ge-)RMD(ra-b->e<b-a-)
	r1.
	r4r4r4
}

#PART2_3={
	o3 l4 #R #M q94 #PEDAL2
	RMD(e)rrRCD(d->e<)rr
	RCD(a->e-<)rr<RMD(a-)>rr
	#MS RMD(a-)rrRCD(f>a-<)rr
	#F RCD(c>g<)rr rrr
	RCDINIT(24,36)#MS RCD(a>e>c<<) rrrrr
	Sub{r-16RCDINIT(16,24)#F RCD(eb>g#<)}rrrrrr
	#R #M RCD(e>g#<)rrrrr
	#PS RCDINIT(24,36)RCD(e->g<)rr #R #P RCD(e>a-<)rr
	#PS RCD(e->g<)rr RCDINIT(24,36)RCD(e>a-<)rr
	#R #M RCD(e->g<)rr #MS RCD(d->d-<)rr
	r1.
	r4r4r4
}

#PART2_4={
	[11 r1]
	r2.
}

#PART3_16={
	TmpChangeR(Random(70,90))TmpChangeR(Random(190,200),!2)TmpChangeR(Random(140,150),!4)
	Sub{
		r4 TmpChangeR(40)TmpChangeR(Random(65,75),!2)TmpChangeR(Random(90,100),!2)TmpChangeR(Random(60,65),!2)
		TmpChangeR(Random(40,45),!2)TmpChangeR(15,!2)TmpChangeR(90)
	}r1.r1. TmpChangeR(Random(120,130))
}


#PART3_1={
	r4r4r4
	r4
	o5 l40. #R #M q94 #PEDAL3
	#PEDALON
	Sub{
		#M RCD(ea-)#PP RCD(e-g) #M RCD(a->d-<)#PP RCD(gb-)> #M RCD(d-e)#PP RCD(<b->e-) #M RCD(ea-)#PP RCD(e-g) #M RCD(a->d-<)#PP RCD(gb-) >#M RCD(d-e)#PP RCD(ce-) #M RCD(ea-)#PP RCD(e-g) #M RCD(a->d-<)#PP RCD(gb-)> [#M RCD(d-e)#PP RCD(<b->e-)]
		<RCD(a->d-<)#PP RCD(gb-) [RCD(ea-)#PP RCD(e-g)] #M RCD(d-f)#PP RCD(<b->e-)< [#M RCD(a->d-<)#PP RCD(gb-)]

		#M RCD(ea-)#PP RCD(e-g)
		[#M RCD(d-e)#PP RCD(<b->e-)]<[4 #PS RCD(a->d-<)#PPS RCD(gb-)][5 #PP RCD(a->d-<)#SP RCD(gb-)][4 #SP RCD(a->d-<)#SSP RCD(gb-)]

	}r1.r1r4
	#PEDALOFF
}

#PART3_2={
	r4r4r4
	r4
	o5 l40. #R #PS q94 #PEDAL3
	#PEDALON
	Sub{
		rrRMD(ee-)RMD(a-g)RMD(>d-<b-)>RMD(ee-)RMD(a-g)>RMD(d-c)RMD(ee-)[RMD(a-g)]RMD(ee-)[RMD(d-<b->)]<RMD(a-g)[RMD(ee-)]

		RMD(d-<b-)
		[RMD(a-g)][3 RMD(ee-)]#P[4 RMD(ee-)]#PP[3 RMD(ee-)]#SSP[3 RMD(ee-)]
	}r1.r1r4
	#PEDALOFF
}

#PART3_3={
	o3 l8 #R #M q94 #PEDAL3
	Sub{
		#PEDALON
		RMDCresc(-3)
		RMD(e-b->d-gb->d-)
		RMD(ee-)
		r1.
		r1
		#PEDALOFF
	}r1.r1r4
	r4r4r4
	r4
}

#PART3_4={
	r1.r1.r1.r2.r4//ずれ

	r4r4r4
	r4
	r1.r1r4
}

#PART4_16={
	TmpChangeR(Random(75,80),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(155,165),!8^8^8) TmpChangeR(Random(105,110),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8)
	TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8)
	TmpChangeR(Random(110,120),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(110,115),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8)
	TmpChangeR(Random(110,120),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(110,115),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8)
	TmpChangeR(Random(110,120),0)r8TmpChangeR(Random(145,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(145,165),!8^8^8) TmpChangeR(Random(110,115),0)r8TmpChangeR(Random(145,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(145,165),!8^8^8)
	TmpChangeR(Random(110,120),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(110,115),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(135,145),!8^8^8)

	TmpChangeR(Random(90,100),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(115,120),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8)
	TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(120,130),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8)
	TmpChangeR(Random(110,120),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(115,120),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8)
	TmpChangeR(Random(110,120),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(115,120),0)r8TmpChangeR(Random(135,145),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(135,145),!8^8^8)
	TmpChangeR(Random(155,165),0)TmpChangeR(Random(130,140),!2.)TmpChangeR(Random(105,115),!2.)
}

#PEDAL4={
	Sub{
		[2 #PEDALON r1. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[2 #PEDALON r1. #PEDALOFF]
		[6 #PEDALON r2. #PEDALOFF]
		[2 #PEDALON r1. #PEDALOFF]
		[1 #PEDALON r2. r4r4 #PEDALOFF] r4
	}
}

#PART4_1={
	r-4
	o6 l4 #R #F q94 #PEDAL4
	RMD(d) #FF
	RMD(d#2.d#2.)
	RMD(d#2.^2d#4)
	RMD(d#2d#e2d#)
	RMD(d#2.<g#rg#)
	RMD(g#a#b >d#2c#)
	#F RMD(c#<bg#)#M RMD(f#)r4.RMD(f#8)>

	#FF RMD(d#2.d#2.)
	#FFS RMD(d#2.^2)#FF RMD(d#4)
	RMD(d#2ed#2e)
	#FFS RMD(f2.^2)<<#FF ROCT(a)
	ROCT(a)ROCT(b)>ROCT(c)RCDINIT(16,24)l2RCD(e>e<)l4 #R #FF ROCT(d)
}

#PART4_2={
	o5 l8 #R #P q94 #PEDAL4
	[RMD(rd#f#bf#d#)]
	[RMD(rd#g>c#<gd#)]
	RMD(rd#f#>c#<f#d#)RMD(rd#f#>c<f#d#)
	RMD(rd#fbfd#)RMD(r<b>c#fc#<b>)
	RMD(rc#ef#ec#)RMD(ref#a#f#e)
	RMD(rd#f#d#)rRMD(d) RMD(d#rrrrr)

	RMD(rd#f#bf#d#)RMD(rd#g>c#<gd#)
	RMD(rd#f#>c<f#d#)RMD(re-f#>c<f#e-)
	[RMD(reg>c<ge)]
	RMD(rfa>c<af)r2.
	r1.
}

#PART4_3={
	o4 l8 #R #P q94 #PEDAL4
	[RMD(rf#b>d#<bf#)]
	[RMD(rg>c#d#c#<g)]
	RMD(rf#>c#d#c#<f#)RMD(rf#>cd#c<f#)
	RMD(rfb>d#<bf)RMD(rc#fbfc#)
	RMD(ref#>c#<f#e)RMD(rf#a#>e<a#f#)
	RMD(r<b>d#bfb f#>d#c#<bg#f#)

	RMD(rf#b>d#<bf#)RMD(rg>c#d#c#<g)
	RMD(rf#>cd#c<f#)RMD(rf#>ce-c<f#)
	[RMD(rg>cec<g)]
	rRMD(a)>RCD(cd)RMD(f)RCD(cd)<RMD(a)r2.
	o3rRMD(g)>RCD(df)RMD(a)RCD(df)<RMD(g) RCDINIT(24,30)l4RCD(g>fb)rr
}

#PART4_4={
	o3 l8 #R #M q94 #PEDAL4
	RMD(b1.)
	RMD(a#1.)
	RMD(a2.g#2.)
	RMD(c#1.)
	RMD(f#1.)
	r1.
	#F RMD(b2.a#2.)
	#FF RMD(a2.a-2.)
	#FFS RMD(g1.)
	#F RMD(g1.)
	r1.
}

#PART5_16={
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(140,150),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(130,140),!8^8^8)

	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(155,165),!8^8^8)
	TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(185,195),!8^8)TmpChangeR(Random(175,185),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(165,175),!8^8)TmpChangeR(Random(160,170),!8^8^8)

	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(185,195),0)TmpChangeR(Random(195,205),!8^8)TmpChangeR(Random(185,195),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(175,185),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(120,130),!8^8^8)
	TmpChangeR(Random(70,90),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)

	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(105,115),!8^8)TmpChangeR(Random(145,155),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(130,140),!8^8^8)
	TmpChangeR(Random(70,90),0)r8TmpChangeR(Random(145,155),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(135,145),!8^8^8) TmpChangeR(Random(130,140),0)r8TmpChangeR(Random(105,115),0)TmpChangeR(Random(100,110),!8^8)TmpChangeR(Random(90,100),!8^8^8)
	TmpChangeR(Random(80,90),0)TmpChangeR(Random(140,150),!2.)TmpChangeR(Random(90,100),!2.)

	TmpChangeR(Random(110,120),0)r8TmpChangeR(Random(155,165),0)TmpChangeR(Random(120,130),!8^8)TmpChangeR(Random(145,155),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(150,160),!8^8^8)
	TmpChangeR(Random(150,160),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(175,185),!8^8)TmpChangeR(Random(165,175),!8^8^8) TmpChangeR(Random(160,170),0)r8TmpChangeR(Random(165,175),0)TmpChangeR(Random(155,165),!8^8)TmpChangeR(Random(100,110),!8^8^8)
	TmpChangeR(Random(130,140),0)TmpChangeR(Random(70,80),!1.)
}

#PEDAL5={
	Sub{
		[6 #PEDALON r1. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[2 #PEDALON r1. #PEDALOFF]
		[4 #PEDALON r2. #PEDALOFF]
		[1 #PEDALON r1. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[4 #PEDALON r1. #PEDALOFF]
		#PEDALON r2. r2. r1. #PEDALOFF
		[2 #PEDALON r1. #PEDALOFF]
		#PEDALON r1
	}
}

#PART5_1={
	o5 l4 #R #FF q94 #PEDAL5
	RCD(cg>c<)rr rrr8>l8ROCT(c)
	l2^8RCD(cfa->c<)l8RCD(<b>fa-b) l2^8RCD(cfa->c<)l8RCD(dfa->d<)
	l2^8RCD(eg>e<)l8RCD(dg>d<) l4RCD(cg>c<)r4.l8ROCT(e)
	l2^8RCD(ea>ce<)l8RCD(d#a>cd#<) l2^8RCD(ea>ce<)l8ROCT(f#)
	l2.[ROCT(g#)]
	l2.^2ROCT(g#)l8rROCT(g#)
	l2ROCT(g#)l8rROCT(g#) l2ROCT(a)l8rROCT(g#)
	l2.ROCT(g#)l4ROCT(c#)rROCT(c#)
	l4RCD(c#a>c#<)RCD(d#ab>d#<)RCD(eab>e<)l2RCD(g#b>d#g#<)l4ROCT(f#)
	l4RCD(f#g#b>f#<)ROCT(e)RCD(c#g>c#<) RCD(<b>g#b)r RCD(<b>b)

	l2.[ROCT(g#)]
	l1.ROCT(g#)
	l2.[ROCT(a-)]
	l2RCD(a->da-<)l4ROCT(g)ROCT(f)<ROCT(g)ROCT(a-)
	l2.>RCD(cfa->c<)<l4ROCT(b-)r>ROCT(a-)
	l4.RCD(a->da-<)l8ROCT(g)l12ROCT(b-)ROCT(a-)ROCT(g) l4ROCT(f)<ROCT(g)ROCT(a-)
	l2.>RCD(cfa->c<)<l4ROCT(b-)r>ROCT(a-)
	l4.RCD(a->da-<)l8ROCT(g)ROCT(b-)ROCT(a-) ROCT(b)ROCT(b-)>l4ROCT(g)l8rROCT(f)

	l8 ROCT(e-)ROCT(d)ROCT(c)<ROCT(b-)ROCT(a-)ROCT(g) l4ROCT(f)<ROCT(g)ROCT(a-)
	>l2RCD(cfa->c<)l4<ROCT(b-)> l2RCD(e-a-b->e-<)l4ROCT(d-)
	l2RCD(gb->d-g<)l4ROCT(f) >l2RCD(cf>c<)<l4ROCT(b-)>
	l1.RCDINIT(24,32)RCD(fgb->d-f<)	

}

#PART5_2={
	o5 l8 #R #M q94 #PEDAL5
	[4 r1.]
	[RMD(rb>e<g#be)]
	RMD(r>cf#<g#c>f#)RMD(g#cg#<g#)rr
	RMD(rb>f#<g#)rrRMD(rb>f<g#)rr
	[3 r1.]
	RMD(rb>e<g#b>e)RMD(rcf#<g#>cf#)
	RMD(r<b>f<g#b>f a-<b>f<a-b>f)
	RMD(rcf<a->cf)RMD(rd-f<a->d-f)
	[9 r1.]
}

#PART5_3={
	o6 l8 #R #M q94 #PEDAL5
	r4 o6 RMD(c<egc e<g>c<egc)
	r4 o5 RMD(a-cf<a-> c<fa-cf<a-)
	r4 o6 RMD(c<egc e<g>c<egc)
	r4 o6 RMD(c<eac e<a>c<eac)

	o4 [RMD(rbg#>e<bg#)]
	[RMD(r>c<g#>f#c<g#)]
	RMD(rbg#>f#<bg#)RMD(rbg#>f<bg#)
	RMD(rea#a#>eg#)RMD(g#e<a#a#e<f#)
	RMD(rb>f#a>c#e)RMD(g#d#<bad#<b)
	o3 RMD(rb>eg#a#>e)RMD(<b>g#e<bg#<b)

	o4 RMD(rbg#>e<bg#)RMD(r>c<g#>f#c<g#)
	RMD(rbg#>f<bg#)RMD(d-bg#>f<bg#)
	o5RMD(rc<a->fc<a-)RMD(r>d-<a->fd-<a-)
	RMD(ra->dfd<a-)RMD(fa->dfd<a-)
	RMD(rd-fa-b->d- fd-<b-a-fd-)
	RMD(ra->dfd<a- fa->dfd<a-)
	RMD(rd-fa-b->d- fd-<b-a-fd-)
	RMDCresc(-4)RMD(ra->dfd<a-)RMD(rfa->d<a-f)
	r1.
	#M RMD(rd-fa-b->d- fd-<b-a-fd-)
	RMD(rd-fa-b->d- a-fd-<a-fd-)
	RMD(r<b->d-gb->d- gb->d-gb->d-)
}

#PART5_4={
	o3 l4 #R #FF q94 #PEDAL5
	l1.ROCT(c)
	ROCT(f)
	ROCT(c)
	<ROCT(a)>
	l2.[ROCT(e)]
	l1.ROCT(d#)
	l2.ROCT(d)ROCT(c#)
	l1.RMD(f#)
	<RMD(b)>
	RMD(e)
	l2.ROCT(e)ROCT(d#)
	l1.ROCT(d)
	l2.ROCT(c)<ROCT(b)
	l1.ROCT(b-)>
	l1.RMD(e-)<
	l1.ROCT(b-)>
	l1.RMD(e-)<
	l2.RMD(b)l8ROCT(b-)rrrrr>
	r1.
	[3 l1.RMD(e-)]
}

#PART6_16={
	TmpChangeR(20)TmpChangeR(Random(80,85),!2.)TmpChangeR(70,!2.)
	TmpChangeR(55,!1.)
	TmpChangeR(15,!2.)TmpChange(250)r2TmpChangeR(70)r4
}

#PART6_1={
 	o8 l32 #R #F q94 #PEDAL6
	Sub{
		RMDCresc(-1)
		RMD(
			ece-<b>d<b->d-<a>c<a-
			bgb-g-afa-ege-f#dfd-
		)
		RMDCresc(0)
		RMD(
			ece-<b>d<b->d-<a>c<a-
			bgb-g-afa-ege-f#dfd
		)
		#PEDALOFF #PEDALON
		RMDCresc(0)
		RCD(d-f)RMD(
			e-d-<b-gd
			e-gb->d-df
			e-gb->d-df
			e-gb->d-ef
			cd-<ab-f#g
			efcd-<ab-
			f#gefcd-<
			ab-f#gef
		)
		#PEDALOFF #PEDALON
		RMD(
			de-ee-
			fe-f#e-
			ge-a-e-
			ae-b-e-
			brrr
			rrrr
			rrrr
		)#PEDALOFF
	}r1.r1.r1r4#M r4
}

#PART6a_1={
	r-4l4o4RMD(e-)
}

#PART6_2={
	o7 l32 #R #F q94 #PEDAL6
	Sub{
		RMDCresc(-1)
		RMD(
			gb-g-afa-
			ege-g-df
			d-ece-<b>d
			<b->d-<a>c<a-b
		)
		RMDCresc(0)
		RMD(
			gb-g-afa-
			ege-g-df
			d-ece-<b>d
			<b->d-<a>c<a->c<
		)
		#PEDALOFF #PEDALON
		#SSP RCD(gb-)rrrrr [7 rrrrrr]
		r1.
		#PEDALOFF
	}[3 r1.]
}

#PART6_3={
	[3 r1.]
}

#PART6_4={
	[3 r1.]
}
#PART7_16={
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(110,120),0)TmpChangeR(Random(125,135),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)

	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(125,135),!8^8^8)TmpChangeR(Random(90,100),!8^8)
	TmpChangeR(Random(105,115),0)r8TmpChangeR(Random(140,150),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(140,150),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8)TmpChangeR(Random(130,140),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(130,140),0)TmpChangeR(Random(145,155),!8^8^8)TmpChangeR(Random(130,140),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(120,130),0)TmpChangeR(Random(135,145),!8^8)TmpChangeR(Random(120,130),!8^8^8) TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(120,130),0)TmpChangeR(Random(135,145),!8^8^8)TmpChangeR(Random(120,130),!8^8)
	TmpChangeR(Random(95,100),0)r8TmpChangeR(Random(120,130),0)TmpChangeR(Random(135,145),!8^8)TmpChangeR(Random(120,130),!8^8^8) TmpChangeR(Random(75,80),0)r8TmpChangeR(Random(100,110),0)TmpChangeR(Random(105,115),!8^8^8)TmpChangeR(Random(80,85),!8^8)
	TmpChangeR(Random(65,70),0)r8TmpChangeR(Random(140,150),!8^2)TmpChangeR(Random(50,55),!2.)
}

#PEDAL7={
	Sub{
		[2 #PEDALON r1. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[5 #PEDALON r1. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[2 #PEDALON r2. #PEDALOFF]
		[1 #PEDALON r1. #PEDALOFF]
		[1 #PEDALON r1. #PEDALOFF]
	}
}

#PART7_1={
	o5 l4 #R #F q94 #PEDAL7
	#M r-4l4o5RMD(e-)>
	RMD(c2.c2.)
	RMD(c2.^4rc)
	RMD(c2cd-2c)
	RMD(c2.<frf)
	RMD(fga->c2<b-)
	RMD(a-1re-)

	RMD(>c2.c2.)
	RMD(c2.^4rc)
	RMD(c2cd-2c)
	RMD(f1.)
	r2.RMD(<b-2.>)
	RMD(e-1.)
	r2.RMD(<a-2.>)
	RMDCresc(-3)RMD(d-2.^2c)
	RMD(c2<b->c2<b-)
	#SP RCDINIT(20,26)l4RCD(ce-a-)r2r2.
}

#PART7_2={
	o5 l8 #R #SP q94 #PEDAL7
	[rRMD(ce-a-e-c)]
	[rRMD(ceb-ec)]
	[rRMD(e-fafe-)]
	rRMD(<a->dfd<a->)rRMD(<a-b->d<b-a->)
	rRMD(<b->d-e-d-<b->)rRMD(d-e-ge-d-)
	rRMD(ce-fe-c <a->ce-fra-)

	rRMD(de-a-e-c)rRMD(ce-a-e-c)
	[rRMD(ceb-ec)]
	rRMD(cfafc)rRMD(cg-ag-c)
	rRMD(fa->c<a-f)rRMD(fa-ba-f)
	rRMD(<b->ea-e<b->)rRMD(<b->ege<b->)
	rRMD(e-g-b-g-e-)rRMD(e-g-ag-e-)
	rRMD(<a->dg-d<a->)rRMD(<a->dfd<a->)
	rRMD(d-fa-fd-)rRMD(d-ea-ed-)
	rRMD(d-eged-)rRMD(d-e-ge-d-)
	r1.
}

#PART7_3={
	o6 l4 #R #SP q80 #PEDAL7
	rr[RCD(e-a->c<)]rr
	rr[RCD(eb->c<)]rr
	rrRCD(e-a>c<)RCD(e-a>d-<)rr
	rrRCD(df>c<)RCD(df)rr
	rrRCD(<b->d-a-)RCDINIT(16,24)l2RCD(d-e-g>c<)#R #PP l4RMD(b-)
	rr[RCD(ce-a-)]rr

	rr[RCD(e-a->c<)]rr
	rr[RCD(eb->c<)]rr
	r1.
	rrRCD(a->cf<)RCD(a-b>f<)rr
	rr[RCD(ea-b-)]rr
	rrRCD(g-b->e-<)RCD(g-a>e-<)rr
	rrRCD(dg-a-)RCD(dfa-)rr
	rrRCD(fa->d-<)RCD(ea->d-<)rr
	r1.
	r1.
}

#PART7_4={
	o3 l1. #R #P q94 #PEDAL7
	RMD(a-)
	RMD(g)
	RMD(f)
	RCD(<b->b-)
	RCD(e->e-<)
	RCD(<a->a-)

	RCDINIT(16,24)RCD(a->e->c<<)
	RCD(g>eb-<)
	#R #P l2.RCD(f>a<)RCD(e->g-<)
	l1.RCD(d>f<)
	RCD(d->e<)
	RCDINIT(16,24)RCD(c>e-<)
	#R #P RCD(<b>>d<)
	RCD(<b->>d-<)
	RMD(e-2.>g2.)
	#PP RMDCresc(2)l8r8o2RMD(a->a->e-a-) RMDCresc(-1)RMD(>ce-a->ce-a-b-)
}

#PART8_16={
	TmpChangeR(80)TmpChangeR(100,!2.)TmpChangeR(70,!2.)
	r1.
	TmpChangeR(80)TmpChangeR(100,!2.)TmpChangeR(65,!2.)
	r1.
	TmpChangeR(60)TmpChangeR(80,!4)r4r4r2.
	TmpChangeR(70,!1.)
}

#PART8_1={
	o6 l4 #R #PP q95 #PEDAL8
	q95l2RCD(e->c<)q70l4RCD(e>c<)RCD(f>c<)RCD(g->d-<)RCD(g->c<)
	q95RCD(a->f<)rrrrr
	q95l2RCD(d-b-)q70l4RCD(db-)RCD(e-b-)RCD(e>c<)RCD(eb-)
	q95RCD(g->e-<)rrrrr

	o3RCDINIT(14,18)#P l1.RCD(c#>a>c#e>c#<)
	#PP Sub{RMD(d-1.)}Sub{r18RMD(f1)}Sub{r18r18 #M RMD(b-2.^2)}r1Sub{#P RMD(e-2)}r4>RMD(c4)<
	#PP o3Sub{RMD(a-1.)}Sub{r18>RMD(g2.)}Sub{r18r18>RMD(e-2.)}Sub{r18r18r18RMD(a-1.)}r2.o4l2 #R #SP RCD(f>d-<)l4RCD(e->c)
	#SSP l1.RCDINIT(6,9)o3RCD(a->e->ca-)
}

#PART8_4={
	o5 l4 #R #SP q95 #PEDAL8
	q95l2RCD(a->c<)q70l4RCD(gb-)RCD(fa)RCD(e-a)RCD(e-a)
	q95RCD(db)rrrrr
	q95l2RCD(g-b-)q70l4RCD(ea-)RCD(e-g)RCD(d-g)RCD(d-g)
	q95RCD(ca)rrrrr

	r1.
	#PP o3Sub{RMD(e-1.)}Sub{r14>RMD(a-2.)}r2.RMD(g2.)

}

TR(1)
	#PART0_1
	#tr1={
		#PART1_1
		#PART2_1
		#PART3_1
		#PART4_1
		#PART5_1
		#PART6_1
	}
	LoopPlay(#tr1,#PART6a_1)
	#PART7_1
	#PART8_1

TR(2)
	#PART0_2
	#tr2={
		#PART1_2
		#PART2_2
		#PART3_2
		#PART4_2
		#PART5_2
		#PART6_2
	}
	LoopPlay(#tr2)
	#PART7_2

TR(3)
	#PART0_3
	#tr3={
		#PART1_3
		#PART2_3
		#PART3_3
		#PART4_3
		#PART5_3
		#PART6_3
	}
	LoopPlay(#tr3)
	#PART7_3

TR(4)
	#PART0_4
	#tr4={
		#PART1_4
		#PART2_4
		#PART3_4
		#PART4_4
		#PART5_4
		#PART6_4
	}
	LoopPlay(#tr4)
	#PART7_4
	#PART8_4

TR(16)
	#PART0_16
	#tr16={
		#PART1_16
		#PART2_16
		#PART3_16
		#PART4_16
		#PART5_16
		#PART6_16
	}
	LoopPlay(#tr16)
	#PART7_16
	#PART8_16
