 // #ISISクソコラグランプリ
// #ISISちゃん　テーマ曲
// ギブミーメロリン title by @minamino48
// version 1.5
// by @nanakochi123456
// 参考歌詞 アイシスちゃんのテーマ @kusakaiza913
// 動画、添削 by @isisvipper

// 参考音源
// TiMidiTy++ - http://sf2.daiba.cx/isischan
// MA-7 - ATS-MA7-SMAF
// ファミコン風 http://www.k3.dion.ne.jp/~kitt/sf/lib.html
// DX-7 https://github.com/asb2m10/dexed
// RX-5 https://github.com/nanakochi123456/sf2_yamaha_rx5
// いろいろなソース https://github.com/nanakochi123456/sakuramml_isischan

Tempo 240

// 着メロにする場合 1
Int MA7=0
Int RING=0
Int FAMICOM=0

// 短いバージョンにする場合 1 (MA7=1 のみ)
Int SHORT=0

Int TIMIDITY=0
Int VOCALOID=0
Int EGUITAR=0
Int BGUITAR=0
Int PIANO=0
Int ORGAN=0
Int SYNTH=0
Int BASS=0
Int VOCAL=0
Int DRUM=0
Int SFX=0
Int GAKUHU=0
Int ALL=0
Int NODTM=1

IF(MA7=1) {
	曲名{"Give Me Merorin"}
	作者{"ぱぷぅ"}
} ELSE {
	曲名{"Give Me Merorin by ISIL48"}
	作者{"@nanakochi123456"}
}

IF(FAMICOM=1) {
	NODTM=0
}

IF(MA7=0 && SHORT=1) {
	Print(曲が変になってるはずなの。。ぐすぐす)
}

IF(TIMIDITY=0 || ALL=1) {
	VOCALOID=1
	EGUITAR=1
	BGUITAR=1
	PIANO=1
	ORGAN=1
	SYNTH=1
	BASS=1
	VOCAL=1
	DRUM=1
	SFX=1
}

IF(GAKUHU=1) {
	VOCALOID=0
	EGUITAR=0
	BGUITAR=0
	PIANO=0
	ORGAN=0
	SYNTH=0
	BASS=0
	VOCAL=0
	DRUM=0
	SFX=0
}

IF((TIMIDITY=1 && VOCALOID=1) || GAKUHU=1) {
	System.TimeBase=96
} ELSE {
	System.TimeBase=10368
}

IF(MA7=1) {
	System.TimeBase=96
}

IF(MA7=1) {
	Expression.Frequency(6);
	Modulation.Frequency(6);
} ELSE {
	Expression.Frequency(1);
	Modulation.Frequency(1);
}

#PEDALON={Sub {r16y64,127}}
#PEDALOFF={r-32 y64,0 r32}

Function VO(Int VV) {
	IF(MA7=1) {
		@(VV,124,2)
	} ELSE {
		@(VV)
	}
}

Function MO(Int VAL, Int LEN) {
	IF(MA7=1) {
		M.onTime(0,VAL,LEN)
	}
}

// シンバルのロテート
Int CYMINIT=0
Int SNAREINIT=0
Int HHINIT=0

Function Snare() {
	Int CC
	IF(TIMIDITY=0) {
		CC=Snare1
	} ELSE {
		IF(SNAREINIT=0) {
			CC=Snare1
			SNAREINIT=1
		} ELSE {
				CC=Snare2
			SNAREINIT=0
		}
	}
	Result=CC
}
Int HHVALUE=0
Function Hihat() {
	Int CC
	Int HHMIN=87
	Int HHMAX=90
	IF(MA7=0 && TIMIDITY=1) {
		IF(HHINIT=0) {
			CC=50
			HHINIT=1
		} ELSE {
			CC=Random(HHMIN,HHMAX)
			IF(CC=HHVALUE) {
				CC=Random(HHMIN,HHMAX)
				IF(CC=HHVALUE) {
					CC=Random(HHMIN,HHMAX)
				}
			}
			HHVALUE=CC
		}
	} ELSE {
		CC=ClosedHiHat
	}
	Result=CC
}

Function Cymbal() {
	Int CC
	IF(MA7=0) {
		IF(CYMINIT=0) {
			CC=CrashCymbal1
			CYMINIT=1
		} ELSE {
			CC=CrashCymbal2
			CYMINIT=0
		}
	} ELSE {
		CC=CrashCymbal1
	}
	Result=CC
}

Function Splash() {
	Int CC
	IF(MA7=0) {
		IF(CYMINIT=0) {
			CC=SplashCymbal
			CYMINIT=1
		} ELSE {
			CC=ChineseCymbal
			CYMINIT=0
		}
	} ELSE {
		CC=SplashCymbal
	}
	Result=CC
}


Function RandV(Int MIN, Int MAX) {
	Str MML="v"
	IF(MA7=1) {
		MML=MML+#STR(MAX)
	} ELSE {
		MML=MML+Random(MIN,MAX)
	}
	MML
}

Str RMML
Function RandR(Int MIN, Int MAX) {
	Str MML
	IF(NODTM=1 && MA7=0) {
		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
}

Function BG(Str MML) {
　　Str BUF=""
    Str FIRST=""
　　Str ML=""
　　Str M
　　Str R
    Str FM
    Int C=0

　　BUF=""
    R=""
　　For(Int i=1; MID(MML, i, 1)!=""; i++) {
　　　　M=MID(MML, i, 1)
　　　　IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
		C++
	  	IF(C<3) {
			FIRST=ML
			ML=FM+M
			FM=""
		} ELSE {
			IF(MA7=0) {
		　　　　　　R=R+"r"+Random(120,400)
			}
　　　　　　　　	BUF=BUF+"Sub" + CHR(123)+R+ML+CHR(125)
	　　　　　　ML=M
		}
　　　　} ELSE {
		IF(C>0) {
　　　　　　	ML=ML+M
		} ELSE {
			FM=FM+M
		}
　　　　}
　　}
　　BUF="Sub"+CHR(123)+FIRST+CHR(125)+BUF+"Sub"+CHR(123)+R+ML+CHR(125)+"r"
　　BUF
}

// トラックの最初が省略されないようにする
#INIT={
	IF(MA7=0) {
		Sub {
			IF(GAKUHU=0) {
				@128
				Expression(1)
				v1o1c1
				Expression(127)
			}
		}
	}
}

// コード定義
#eacp={BG(ea>c#<)}
#eac={BG(ea>c<)}
#egc={BG(eg>c<)}
#egb={BG(eg#b)}
#fac={BG(fa>c<)}
#fpac={BG(f#a>c#<)}
#egpcp={BG(eg#>c#<)}
#fpad={BG(f#a>d<)}
#fpadp={BG(f#a>d#<)}
#gpbe={BG(g#b>e<)}
#gbe={BG(gb>e<)}
#gpbdp={BG(g#b>d#<)}
#acf={BG(a>cf<)}
#ace={BG(a>ce<)}
#bdg={BG(b>dg<)}
#bdfp={BG(b>df#<)}
#fad={BG(fa>d<)}
#egpd={BG(eg#>d<)}
#egd={BG(eg>d<)}
#gce={BG(g>ce<)}
#gcdp={BG(g>cd#<)}
#gcf={BG(g>cf<)}
#gcfp={BG(g>cf#<)}
#gcg={BG(g>cg<)}
#fgbd={BG(fgb>d<)}
#gbd={BG(gb>d<)}
#abe={BG(ab>e<)}

// テンポ
IF(SHORT=0) {
	TR(1)
		[163 r1]
		[32
			Tempo=Tempo-2
			r32
		]
		Tempo 100
		r1
		Tempo 140
		[6
			Tempo=Tempo-10
			r6
		]
		r1
		Tempo 160
}

// メロディー
	#u11={
		l8
		// さば　くの　オ
		r4 ee ea4g#^
		// アシス
		f#4e4d4.
		// いの　ちが　や
		r4 c#c# c#f#4e^
		//どるも
		IF(GAKUHU=1) {
			d4c#4<b4.
		} ELSE {
			d4c#4<b4r
		}
		// おひさま
		a4.a>f#4.e
		// にちか
		rrrrr<ab>c#
		//ーていくのよ
		IF(GAKUHU=1) {
			d4c#<b4aab^2.>
		} ELSE {
			drc#<b4aab^2.>
		}
		r4

		// せんにんの
		r4 ee ea4g#^
		// おしえ
		f#4e4d4.
		// まも　て ゆ
		r4 c#c# rf#4e^
		//ーけば
		IF(GAKUHU=1) {
			d4c#4<b4.
		} ELSE {
			d4c#4<b4r
		}
		// みんなの
		a2^a>f#e
		// にわで
		rrrr rc#de
		//なかよく
		f#2g#2a2b2
	}

	#u12={
		//だいちを
		a2f4fc
		//   ふみし
		rrrr rcfa
		// ていこう
		g2e4.c^2
		r2
		//おいし
		f2d4.<b^^
		//　メロン
		rr rb>df
		//かじーて
		IF(GAKUHU=1) {
			e2f2f#2g2
		} ELSE {
			e2f2f#4r4g4r4
		}
		//みらいへ
		a2f4fc
		//   むかー
		rrrr rcfa
		//ーてゆく
		IF(GAKUHU=1) {
			g2a2b2>c2
		} ELSE {
			g4r4a2b2>c4.r8
		}
		//いのちを
		d2^c<b>c^2^
		//つなげ
		<bab^1
		r1
	}
	#u13={
		l8
		// こころを　ひらき
		aaaa a>f#4e^2
		// あした
		r <ef#g#
		// のための いぽを
		IF(GAKUHU=1) {
			aaaa a>rf#e^2
		} ELSE {
			a16r16aaa a>rf#e^2
		}
		// つよく
		r <ab>c#
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		// いぽまえに
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			drc#<a4f#ar>
		}
		// すすんでいこ
		d4c#<a4f#a>c#^4.
		//ーーお
		d16c#16<brrr

		// みんなだ　いすき
		aaaa a>f#4e^2
		// アイシ
		r <ef#g#
		//スちゃんの　ために
		aaaa a>f#4e^2
		// きょうも
		r <ab>c#
		//いぽずーつ
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			drc#<a4f#ar>
		}
		//あるいーて
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		//すすんでいこ
		d4c<a4fa>c^2<
		//ー
		b2
		//よ
		a1^1
		[2 r1] 
	}
	
	////////////////
	#u21={
		l8
		// かわいたさ
		r4 ee ea4g#^
		// ばくも
		f#4e4d4.
		// きみがかな
		r4 c#c# c#f#4e^
		//えれば
		IF(GAKUHU=1) {
			d4c#4<b4.
		} ELSE {
			d4c#4<b4r
		}
		// オアシス
		a4.a>f#4.e
		// よどん
		rrrrr<ab>c#
		//でいくのよ
		d4c#<b4a4b^2.>
		r4

		// あれはてた
		r4 ee ea4g#^
		// こやも
		f#4e4d4.
		// きみがおど
		r4 c#c# c#f#4e^
		//れーば
		IF(GAKUHU=1) {
			d4c#4<b4.
		} ELSE {
			d4c#4<b4r
		}
		// せきゆが
		a2^8a>f#e
		// よどん
		rrrr rc#de
		//でいくの
		IF(GAKUHU=1) {
			f#2g#2a2b2
		} ELSE {
			f#2g#2a2b4..r16
		}
	}
	#u22={
		//だいちの
		a2f4fc
		//   ちから
		rrrr rcfa
		// しんじて
		g2e4ec^2
		r2
		//よどんだ
		f2d4d<b^^
		//　せきゆ
		rr rb>df
		//わけあて
		IF(GAKUHU=1) {
			e2f2f#2g2
		} ELSE {
			e2f2f#4r4g4..r16
		}

		//みらいへ
		a2f4fc
		//   むかー
		rrrr rcfa
		//ーてゆく
		IF(GAKUHU=1) {
			g2a2b2>c2
		} ELSE {
			g4r4a2b2>c2
		}
		//へいわの
		d2^c<b>c^2^
		//ために
		<bab^1
		r1

	}
	#u23={
		l8
		// もてるナイフで
		IF(GAKUHU=1) {
			aaaa aa>f#e^2
		} ELSE {
			araa aa>f#e^2
		}
		// まるい
		r <ef#g#
		// メロンを わけあお
		aaaa aa>f#e^2
		// かわい
		r <ab>c#
		//たのどーを
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		// あまさーで
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		// よどませてゆ
		d4c#<a4f#a>c#^4.
		//くーお
		d16c#16<brrr

		// みんなだ　いすき
		aaaa a>f#4e^2
		// アイシ
		r <ef#g#
		//スちゃんの　ために
		aaaa a>f#4e^2
		// きょうも
		r <ab>c#
		//いぽずーつ
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			drc#<a4f#ar>
		}
		//あるいーて
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		//すすんでいこ
		d4c<a4fa>c^2<
		//ー
		b2
		//よ
		a1r1
	}

	#u33={
		l8
		// ななじゅう　にじかん
		aaaa aa>f#e^4.r
		// いないに
		<e f f# g#
		// メロンを よこせ
		IF(GAKUHU=1) {
			aaaa a>f#4e^2
		} ELSE {
			aaaa a>f#4e^4.r
		}
		// まるい
		r <ab>c#
		//メロンーを
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		// ナイフーで
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		// きてわけあお
		IF(GAKUHU=1) {
			d4c#<a4f#a>c#^4.
		} ELSE {
			drc#<a4f#a>c#^4.
		}
		//ーーよ
		d16c#16<brrr

		// ほぺがたれてる
		IF(GAKUHU=1) {
			araa aa>f#e^2
		} ELSE {
			araa aa>f#e^4.r
		}
		// メロンの
		<eff#g#
		//あまさで　ほてて
		IF(GAKUHU=1) {
			aaaa a>f#4e^2
		} ELSE {
			aaaa a>f#4e^4.r
		}
		// みんな
		r <ab>c#
		//えがおーが
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		//はじけてる
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		// しあわせそー
		d4c<a4fa>c^4.
		//ーーに
		d16c16<brrr
	}

	#u43={
		l8
		// みんなでなかよく
		IF(GAKUHU=1) {
			aaaa aa>f#e^2
		} ELSE {
			aaaa aa>f#e^4.r
		}
		// おおきな
		<e f f# g#
		// メロンを たべよお
		IF(GAKUHU=1) {
			aaaa aa>f#e^2
		} ELSE {
			aaaa aa>f#e^4.r
		}
		// まるい
		r <ab>c#
		//メロンーを
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		// ナイフーで
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		// きてわけあお
		IF(GAKUHU=1) {
			d4c#<a4f#a>c#^4.
		} ELSE {
			drc#<a4f#a>c#^4.
		}
		//ーーよ
		d16c#16<brrr

		// みんなだ　いすき
		aaaa a>f#4e^2
		// アイシ
		r <ef#g#
		//スちゃんの　ために
		aaaa a>f#4e^2
		// きょうも
		r <ab>c#
		//いぽずーつ
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			drc#<a4f#ar>
		}
		//あるいーて
		IF(GAKUHU=1) {
			d4c#<a4f#a4>
		} ELSE {
			d4c#<a4f#ar>
		}
		//すすんでいこ
		d4c<a4fa>c^2<
		//ー
		b2
		//よ
		a1r1
	}

IF(GAKUHU=1) {
	TR(12)
		v127	q100o5
		VO(AltoSax)
		#u11
		#u12
		#u13
		#u21
		#u22
		#u23
		#u33
		#u43
}

IF(MA7=1 || RING=1 && VOCALOID=1) {
	TR(11)
		#INIT
		o5
		q97
		VO(AltoSax)
		v127
		IF(SHORT=1) {
			#u13
			#u11
			#u12
		} ELSE {
			[14 r1]

			Expression(127)
			#u11
			#u12
			#u13

			#u21
			#u22
			#u23
			[16 r1]
			#u33
			#u43
		}

	TR(12)
		#INIT
		o6
		q97
		VO(SquareLead)
		v127
		IF(RING=0) { M(60) }
		IF(SHORT=1) {
			#u13
			#u11
			#u12
		} ELSE {
			[14 r1]

			Expression(127)
			#u11
			#u12
			#u13

			#u21
			#u22
			#u23
			[16 r1]
			#u33
			#u43
		}
}

IF(VOCALOID=1 && MA7=0 && RING=0) {
	// IA
	TR(11)
		#INIT
		o5
		q97
		VO(AltoSax)
		v127
		[14 r1]

		Expression(127)
		#u11
		Expression(127)
		#u12
		Expression(107)
		#u13

		[32 r1]
		Expression(107)
		#u23
		[16 r1]
		[16 r1]
		Expression(107)
		#u43

	// ささら
	TR(12)
		#INIT
		o5
		q100
		VO(TenorSax)
		v127
		[14 r1]

		[32 r1]
		Expression(110)
		#u13
		Expression(127)
		#u21
		Expression(127)
		#u22
		Expression(110)
		#u23
		[16 r1]
		[16 r1]
		Expression(110)
		#u43

	// みく
	TR(13)
		#INIT
		q97
		VO(SopranoSax)
		v127
		o5
		[14 r1]
		[32 r1]
		Expression(115)
		#u13
		[32 r1]
		Expression(115)
		#u23
		[16 r1]
		Expression(127)
		#u33
		Expression(107)
		#u43
}

// サビのギター

IF(EGUITAR=1 && SHORT=0) {
	TR(2)
		#INIT
		[114 r1]
		VO(OverdrivenGuitar)
		PitchBendSensitivity(1)
		o7q99v127
		l6
		MO(0,!99)
		r [p.onTime(15,64,!10)c] p.onTime(30,64,!4)l2^6 MO(50,!4) BG(<f>c)
		l6
		MO(0,!99)
		<b>cd<bg
		Sub{p.onTime(64,80,!4) r4 p.onTime(80,64,!4.)} MO(50,!4) g2^g MO(0,!99) b-
		a2efg
		Sub{p.onTime(64,50,!4) r4 p.onTime(50,64,!4)}MO(50,!4) f2 MO(0,!99) fga
		Sub{p.onTime(64,75,!4) r4 p.onTime(75,64,!4)}g2Sub{p.onTime(64,50,!4) r4 p.onTime(50,64,!4)}d2
		Sub{p.onTime(64,45,!4) r4 p.onTime(45,64,!4)}MO(70,!2)e1^1>

		MO(0,!99)r [p.onTime(15,64,!10)c] p.onTime(30,64,!4)l2^6 MO(50,!4) BG(<f>c)
		MO(0,!99)
		l6<b>cd<bg>
		Sub{p.onTime(64,85,!4) r4 p.onTime(85,64,!4)}MO(20,!4)e2 Sub{p.onTime(64,85,!4) r4 p.onTime(85,64,!4)}MO(20,!4)d2
		MO(20,!4)c2< MO(0,!99) ab>c
		
		MO(20,!4)d2 MO(0,!99) def
		MO(20,!4)e2 MO(20,!2) c2
		MO(70,!2)
		l1^1 Sub{'<f1^1>d1'}r1 [3 l3 BG(da)]<
//		Sub{<a1g#1>}e1^1
		MO(70,!2)
		Sub{r1.r4. Expression.onTime(127,40,!8) } l1^1 BG(eb>eb)
}

// ピアノ

IF(PIANO=1 && SHORT=0) {
	TR(3)
		IF(MA7=1) { q100 }
		o5
		l2^8 BG(f#a>c#<) f#8a8>c#8<
		l2.BG(eg#b)r4
		l2^8 BG(eg#b) e8g#8b8
		l2.BG(c#f#a)r4
		l8 BG(<b>df#) ef# l4 BG(c#eg#) l8 f#g# l4 BG(df#a)
		l8g#a l4 BG(d#f#b) l8 >c#d# < l8^1^1 BG(ab>e)<
		l1^2. BG(g#b>e<) r4
		l1^2. BG(ea>c#<)r4

		[102 r1]
		o5
		l4.#fac l8 [3 #fac r] r l2. #gbd
		l4.#egd l8 [3 #egd r] r l2. #eac
		l4.#fac l8 [3 #fac r] r l2. #fgbd
		l2
		Sub{BG(eg>c4<)}r4 b8>c8< 
		Sub{BG(eg>c#4<)}r4 >c8c#8< 
		Sub{BG(eg>d4<)}r4 >c#8d8< 
		Sub{BG(eg>e4<)}r4 >d#8e8< 

		l4.#fac l8 [3 #fac r] r l2. #gbd
//		l4.#egpd l8 [3 #egpd r] r l2. #eac
		l2 #egc #egb l4.#eac l8 #eac r2
		l4.#fac l8 [3 #fac r] r l2. #fac
		l4.#fad l8 [3 #fad r] r l2. #fad
		l4.#abe l8 [3 #abe r] r l2. #gpbe
}

// オルガン

#chord11={
	l1
	l2.	BG(c#ea)
	l1^4	BG(<b>eg#)
	l2.	BG(c#f#a)
	l1^4	BG(c#eg#)
	l2 BG(df#a) l4.BG(df#a) l8^1 BG(c#ea)
	l4 BG(df#a) l8 BG(c#eg#) BG(df#a) r BG(df#a) r l1^8 BG(eg#b)
}

#chord12={
	l1
	l2.	BG(c#ea)
	l1^4	BG(<b>eg#)
	l2.	BG(c#f#a)
	l1^4	BG(c#eg#)
	l2 BG(df#a) l4.BG(df#a) l8^1 BG(c#ea)
	l2 BG(df#a) BG(beg#) BG(acf) BG(bdg)
}
#chord21={
	l1^1 BG(cfa)
	l1 BG(<b>eg) BG(cea)
	l1 BG(<b>dfa) BG(<b>deg#)
	Sub{l1^1BG(ce)}g2a2b2>c2<

	l1^1 BG(cfa)
	l1 BG(<b>eg) BG(cea)
	l1^1 BG(dfa)
	BG(<b>eg#)
}

#chord31={
	[
		l4.#g1 BG(c#ea) #g2 l8 BG(c#ea) r  BG(c#ea) r BG(<b>eg#)
		r4 l2. #g1 BG(<b>eg#)
		l4.BG(c#f#a) #g2 l8 BG(c#f#a) r  BG(c#f#a) r BG(c#eg#)
		r4 l2. #g1 BG(c#eg#)

		l4.BG(df#a) #g2 l8 BG(df#a) r #g1 l4. BG(df#a)
		l4.BG(c#ea) #g2 l8 BG(c#ea) r #g1 l4. BG(c#ea)
		:
		l4.BG(df#a) #g2 l8 BG(df#a) r  BG(df#a) r #g1 l2^8 BG(df#a)
		l2 BG(eg#b)
	]
	l4.BG(cfa) #g2 l8 BG(cfa) r  BG(cfa) r #g1 l2^8 BG(cfa)
	l2 BG(dgb)
}

#chord52={
	l1
	BG(cfa)
	BG(dgb)
	BG(eg>d<)
	BG(ea>c<)
	BG(fa>c<)
	BG(gb>d<)
	Sub{l1^1 BG(eg)}>c2d2d#2e2<
	l1
	BG(cfa)
	BG(dgb)
	l2 BG(eg>c<) BG(dg#b)
	l1 BG(cea)
	l1^1 BG(dfa)
	l1^1 BG(<b>dfa)
	l1 BG(eab)BG(eg#b)
}

#chord61={
	Expression.onTime(127,110,!1)
	'd1e1a1>d1<'
	Sub{Expression.onTime(127,100,!1.) r1.Expression.onTime(100,0,!4)}
	'c#1^1e1^1a1^1>c#1^1<'
}

IF(ORGAN=1) {
	TR(6)
		#INIT
		v70
		o6q100
		VO(RockOrgan)
		IF(SHORT=1) {
			#chord31
			l1^1^1^1 BG(ea>c#<)

			#chord11
			#chord12

			#chord21

		} ELSE {
			[10 r1]
			l1^1^1^1 BG(c#ea)

			#chord11
			#chord12

			#chord21

			#chord31
			l1^1^1^1 BG(ea>c#<)

			#chord11
			#chord12
			#chord21
			#chord31
			[34 r1]
			o6 #g1
			#chord31
			#chord61
		}
}

// ストリング

#chord32={
	[
		o5
		l1
		l2.^8 BG(c#ea)
		l8^1  BG(<b>eg#)
		l2.^8 BG(c#f#a)
		l8^1  BG(c#eg#)
		l1 BG(df#a)
		l1 BG(c#ea)
		:
		BG(df#a)
		l2 BG(df#a) BG(eg#b)
	]
	BG(cfa)
	l2 BG(cfa) BG(dgb)
}

IF(SYNTH=1) {
	TR(5)
		#INIT
		v70
		VO(Strings1)
		IF(TIMIDITY=1 && NODTM=1) {
			r-20
		}
		o6q100
		IF(SHORT=1) {
			#chord32
			Sub{r1r1Expression.onTime(127,40,!1^2.)}
			l1^1^1^2. BG(ea>c#) r4
		} ELSE {
			[4 r1]
			Sub{f#1^1^1^1}r1r1a1^1
			'e1^1g#1^1b1^1'
			Sub{r1r1Expression.onTime(127,60,!1^2.)}
			l1'>c#^^^2.<e^^^2.a^^^2.' r4
			[
				Expression(127)
				[32 r1]
				#chord32
				:
				Sub{r1r1Expression.onTime(127,40,!1^2.)}
				l1^1^1^2. BG(ea>c#) r4
			]
			Expression(127)
			#chord52
			#chord32
			#chord32
			#chord61
		}
}

// バックギター

IF(BGUITAR=1) {
	TR(4)
		#INIT
		l8o4
		IF(MA7=1) {
 			VO(JazzGuitar)
 			#g1={q80 RandV(60,65)}
			#g2={q50 RandV(50,65)}
		} ELSE {
			#g1={q80 RandV(60,65) VO(JazzGuitar)}
			#g2={q50 RandV(50,65) VO(MutedGuitar)}
		}
		#eacp1={#g1 #eacp [#g2 #eacp] #g1 #eacp [#g2 #eacp] #g1 #eacp #g2 #eacp}
		#eacp2={[#g2 #eacp] #g1 #eacp [#g2 #eacp] #g1 #eacp [#g2 #eacp]}

		#eacp3={#g1 #eacp [#g2 #eacp] #g1 #eacp [#g2 #eacp] #g1 #egb #g2 #egb}
		#egb1={#g1 #egb [#g2 #egb] #g1 #egb [#g2 #egb] #g1 #egb #g2 #egb}
		#egb2={[#g2 #egb] #g1 #egb [#g2 #egb] #g1 #egb [#g2 #egb]}
		#fpac1={#g1 #fpac [#g2 #fpac] #g1 #fpac [#g2 #fpac] #g1 #fpac #g2 #fpac}
		#fpac3={#g1 #fpac [#g2 #fpac] #g1 #fpac [#g2 #fpac] #g1 #egpcp #g2 #egpcp}
		#egpcp1={#g1 #egpcp [#g2 #egpcp] #g1 #egpcp [#g2 #egpcp] #g1 #egpcp #g2 #egpcp}
		#egpcp2={[#g2 #egpcp] #g1 #egpcp [#g2 #egpcp] #g1 #egpcp [#g2 #egpcp]}
		#fpad1={#g1 #fpad [#g2 #fpad] #g1 #fpad [#g2 #fpad] #g1 #fpad #g2 #fpad}
		#gpbe1={#g1 #gpbe [#g2 #gpbe] #g1 #gpbe [#g2 #gpbe] #g1 #gpbe #g2 #gpbe}
		#gpbe2={[#g2 #gpbe] #g1 #gpbe [#g2 #gpbe] #g1 #gpbe [#g2 #gpbe]}
		#gbe1={#g1 #gbe [#g2 #gbe] #g1 #gbe [#g2 #gbe] #g1 #gbe #g2 #gbe}
		#gbe2={[#g2 #gbe] #g1 #gbe [#g2 #gbe] #g1 #gbe [#g2 #gbe]}

		#acf1={#g1 #acf [#g2 #acf] #g1 #acf [#g2 #acf] #g1 #acf #g2 #acf}
		#acf2={[#g2 #acf] #g1 #acf [#g2 #acf] #g1 #acf [#g2 #acf]}
		#ace2={[#g2 #ace] #g1 #ace [#g2 #ace] #g1 #ace [#g2 #ace]}
		#fad1={#g1 #fad [#g2 #fad] #g1 #fad [#g2 #fad] #g1 #fad #g2 #fad}
		#fad2={[#g2 #fad] #g1 #fad [#g2 #fad] #g1 #fad [#g2 #fad]}
		#egpd1={#g1 #egpd [#g2 #egpd] #g1 #egpd [#g2 #egpd] #g1 #egpd #g2 #egpd}
		#egpd2={[#g2 #egpd] #g1 #egpd [#g2 #egpd] #g1 #egpd [#g2 #egpd]}

		IF(SHORT=1) {
			l8
			//3
			o5 #g1
			#chord31

			l8[#eacp1 #eacp2]
			<

			//1
			[
				#eacp3 #egb2
				#fpac3 #egpcp2
				#fpad1 #eacp2
				:
				#g1 #fpad #g2 #fpad #g1 #fpac #fpad #g2 #fpad #g1 #fpadp #g2 #fpadp #g1 #gpbe
				#gpbe2
			]
			#g1 #fpad #g2 #fpad #fpac #fpad
			#g1 #gpbe #g2 #gpbe #gpbdp #gpbe
			#g1 #acf #g2 #acf #ace #acf
			#g1 #bdg #g2 #bdg #bdfp #bdg

			//2
			#acf1 #acf2
			#gbe1 #ace2
			#fad1 #egpd2
			#g1 #gce #g2 #gce #gcdp #gce
			#g1 #gcf #g2 #gcf #gce #gcf
			#g1 #gcfp #g2 #gcfp #gcf #gcfp
			#g1 #gcg #g2 #gcg #gcfp #gcg
			#acf1 #acf2
			#gbe1 #ace2
			#fad1 #fad2
			#egpd1 #egpd2
		} ELSE {
			[10 r1]
			[#eacp1 #eacp2]
			[
				l8
				//1
				[
					#eacp3 #egb2
					#fpac3 #egpcp2
					#fpad1 #eacp2
					:
					#g1 #fpad #g2 #fpad #g1 #fpac #fpad #g2 #fpad #g1 #fpadp #g2 #fpadp #g1 #gpbe
					#gpbe2
				]
				#g1 #fpad #g2 #fpad #fpac #fpad
				#g1 #gpbe #g2 #gpbe #gpbdp #gpbe
				#g1 #acf #g2 #acf #ace #acf
				#g1 #bdg #g2 #bdg #bdfp #bdg

				//2
				#acf1 #acf2
				#gbe1 #ace2
				#fad1 #egpd2
				#g1 #gce #g2 #gce #gcdp #gce
				#g1 #gcf #g2 #gcf #gce #gcf
				#g1 #gcfp #g2 #gcfp #gcf #gcfp
				#g1 #gcg #g2 #gcg #gcfp #gcg
				#acf1 #acf2
				#gbe1 #ace2
				#fad1 #fad2
				#egpd1 #egpd2

				//3
				o5 #g1
				#chord31
				:
				l8[#eacp1 #eacp2]
				<
			]
			[34 r1]
			o5 #g1
			#chord31
		}
}

// コーラス

IF(VOCAL=1) {
	TR(7)
		#INIT
		v65
		o5q100
		VO(ChoirAahs)
		IF(TIMIDITY=1) {
			r-16
		}
		IF(SHORT=1) {
			Expression(127)
			#chord32
			Sub{r1r1Expression.onTime(127,40,!1^2.)}
			l1^1^1^2. BG(ea>c#) r4

			Expression(127)
			[16 r1]
			#chord21
		} ELSE {
			[14 r1]
			[
				Expression(127)
				[16 r1]
				#chord21
				#chord32
				:
				Sub{r1r1Expression.onTime(127,40,!1^2.)}
				l1^1^1^2. BG(ea>c#) r4
			]
			Expression(127)
			#chord52
			#chord32
			#chord32
			#chord61
		}
}

// ベース

IF(BASS=1) {
	#BASS={
		#b1={RandV(125,127) q95 VO(PickBass)}
		#b2={RandV(110,120) q70 VO(SlapBass1)}
		l8
		o4
		IF(SHORT=1) {
			// 3
			<<
			[
				#b1 a4.a > #b2 a4. <#b1 a
				#b1 g#4.g# > #b2 g#4. <#b1 g#
				#b1 f#4.f# > #b2 f#4. <#b1 f#
				#b1 e4.e > #b2 e4. <#b1 e
				>
				#b1 d4.d > #b2 d4. <#b1 d
				#b1 c#4.c# > #b2 c#4. <#b1 c#
				<
				:
				#b1 b4.b > #b2 b4. <#b1 b
				#b1 e4.e > #b2 e <#b1 eee
			]
			#b1 f4.f > #b2 f4. <#b1 f
			f2g2

			//1
			#b1 a4.a rr> #b2 ar<
			#b1 rrar ra4.
			#b1 a4.a rr> #b2 ar<
			#b1 rrar reee

			[
				#b1 a4.a > #b2 ra rr < #b1 rrg#r rg#4.
				#b1 f#4.f# > #b2 rf# rr #b1 rrc#r rc#4.
				#b1 d4.d rdrd rrc#r #b2 rf# #b1 <rf#
				:
				#b1 b4>c#d rd#re #b2 rrer #b1 <reee
			]
			#b1 b4a#b >c#4<b>c# d4c#d e4 d#e

			//2
			[
				#b1 f4. <#b1 f > #b2 rf < #b1 rf
				rrfr >#b1 rf4.
				#b1 e4. <#b1 e > #b2 re < #b1 re
				rrar >#b1 ra4.<
				#b1 b4. #b1 b > #b2 rb < #b1 rb
				:
				rrer >#b1 re4.
				c4<b>c c#4cc#
				d4c#d e4d#e
			]
			rrbr >#b1 rb4.
			#b1 e4. <#b1 e > #b2 re < #b1 re
			rrer >#b2 reee<
		} ELSE {
			#b1
			d1^4 <b4.>c4.
			c#1
			<f#4>f#4.e4.
			<
			b4.>c#2 d2 d#2 <e8^1^4
			 >e4.<b4.
			e1^4> #b2 e rr< #b1 eee

			<
			[
				//1
				#b1 a4.a rr> #b2 ar<
				#b1 rrar ra4.
				#b1 a4.a rr> #b2 ar<
				#b1 rrar reee

				[
					#b1 a4.a > #b2 ra rr < #b1 rrg#r rg#4.
					#b1 f#4.f# > #b2 rf# rr #b1 rrc#r rc#4.
					#b1 d4.d rdrd rrc#r #b2 rf# #b1 <rf#
					:
					#b1 b4>c#d rd#re #b2 rrer #b1 <reee
				]
				#b1 b4a#b >c#4<b>c# d4c#d e4 d#e

				//2
				[
					#b1 f4. <#b1 f > #b2 rf < #b1 rf
					rrfr >#b1 rf4.
					#b1 e4. <#b1 e > #b2 re < #b1 re
					rrar >#b1 ra4.<
					#b1 b4. #b1 b > #b2 rb < #b1 rb
					:
					rrer >#b1 re4.
					c4<b>c c#4cc#
					d4c#d e4d#e
				]
				rrbr >#b1 rb4.
				#b1 e4. <#b1 e > #b2 re < #b1 re
				rrer >#b2 reee<

				//3
				[
					#b1 a4.a > #b2 a4. <#b1 a
					#b1 g#4.g# > #b2 g#4. <#b1 g#
					#b1 f#4.f# > #b2 f#4. <#b1 f#
					#b1 e4.e > #b2 e4. <#b1 e
					>
					#b1 d4.d > #b2 d4. <#b1 d
					#b1 c#4.c# > #b2 c#4. <#b1 c#
					<
					:
					#b1 b4.b > #b2 b4. <#b1 b
					#b1 e4.e > #b2 e <#b1 eee
				]
				#b1 f4.f > #b2 f4. <#b1 f
				f2g2
			]

			#b1 f4.f > #b2 rf <#b1 rg
			r4 #b2 > g4 < #b1 r g4.
			#b1 e4.e > #b2 re <#b1 re
			r4 #b2 > a4 < #b1 r a4.
			#b1 d4.d > #b2 rd <#b1 rg
			r4 #b2 > g4 < #b1 r g4.
	//		> c4<b>c c#4cc# d4c#d e4d#e<
			#b1 >c4.> #b2 c<< #b1 b4.> #b2 b< #b1 a4.> #b2 a< #b1 g4.>#b2 g<

			#b1 f4.f > #b2 rf <#b1 rg
			r4 #b2 > g4 < #b1 r g4.>
			#b1 c4.>#b2 c <<#b1 b4. >#b2 a<
			#b1 a4. a > #b2 ra <#b1 ra
			#b1 d4.d > #b2 rd <#b1 rd
			r4 #b2 > d4 < #b1 r d4.
			#b1 b4.b > #b2 rb <#b1 rb
			r4 #b2 > b4 < #b1 r b4.
			#b1 e4.e > #b2 re <#b1 re
			r4 er >e<bg#e

			>
			l1
			ag#f#edc#<b>e
			ag#f#edc#<f f2g2

			l8
			[1
				[
					#b1 a4.a > #b2 a4. <#b1 a
					#b1 g#4.g# > #b2 g#4. <#b1 g#
					#b1 f#4.f# > #b2 f#4. <#b1 f#
					#b1 e4.e > #b2 e4. <#b1 e
					>
					#b1 d4.d > #b2 d4. <#b1 d
					#b1 c#4.c# > #b2 c#4. <#b1 c#
					<
					:
					#b1 b4.b > #b2 b4. <#b1 b
					#b1 e4.e > #b2 e <#b1 eee
				]
				#b1 f4.f > #b2 f4. <#b1 f
				f2g2
			]
			#bq100 a1 >e6d6c#6<b6
			Sub{r2.Expression(127,0,!8.)}
			a1
		}
	}
	TR(9)
		#BASS

	IF(RING=1) {
		TR(14)
			#BASS
	}
}

// SFX
IF(SFX=1 && MA7=0 && SHORT=0) {
	TR(15)
		#INIT
		Sub {
			v40o5q100
			VO(125)
			Sub{Expression.onTime(0,127,!1.) r1 r1 Expression.onTime(127,0,!1^1^1^1)}
			Sub{r4 c1^1^1^1^1}
		}
		[10 r1]
		v70o7q100
		PitchBendSensitivity(12)
		VO(126)
		p.onTime(127,0,!1^1^1^1^1^1)
		Sub{Expression.onTime(0,127,!1^1.) r1 r1 r1 Expression.onTime(127,0,!1^1^1.)}
		Sub{b1^1^1^1^1^1}


	TR(16)
		#INIT
		[4 r1]
		v127o5q100
		PitchBendSensitivity(12)
		VO(127)
		p.onTime(127,0,!1^1^1^1^1^1)
		Sub{Expression.onTime(0,127,!1^1.) r1 r1 r1 r1 Expression.onTime(127,0,!1^1^1.)}
		Sub{b1^1^1^1^1^1^1^1}
}

// ドラム

IF(DRUM=1) {
	TR(10)
		#INIT
		IF(MA7=1) {
			@(3,125)
		} ELSE {
			@(1)
		}
		Int EXPMAX=0
		IF(MA7=1) {
			EXPMAX=92
		} ELSE {
			EXPMAX=127
		}
		Expression(EXPMAX)
		$k{Sub{RandR(192,1536) RandV(124,127) n(Sticks),16}r} //37
		$B{Sub{RandR(192,1536) RandV(124,127) n(Kick2),16}r}//35
		$b{Sub{RandR(192,1536) RandV(124,127) n(Kick1),16}r}//36
		IF(MA7=1) {
			$S{Sub{RandR(192,1536) RandV(120,127) n(31),16}r}//40
			$s{Sub{RandR(192,1536) RandV(120,127) n(31),16}r}//38
		} ELSE {
			$S{Sub{RandR(192,1536) RandV(120,127) n(Snare2),16}r}//40
			$s{Sub{RandR(192,1536) RandV(120,127) n(Snare1),16}r}//38
		}
		$L{Sub{RandR(192,1536) RandV(123,127) n(LowTom2),16}r}//41
		$l{Sub{RandR(192,1536) RandV(123,127) n(LowTom1),16}r}//43
		$M{Sub{RandR(192,1536) RandV(123,127) n(MidTom2),16}r}//45
		$m{Sub{RandR(192,1536) RandV(123,127) n(MidTom1),16}r}//47
		$T{Sub{RandR(192,1536) RandV(123,127) n(HighTom2),16}r}//48
		$t{Sub{RandR(192,1536) RandV(123,127) n(HighTom1),16}r}//50
		$p{Sub{RandR(192,1536) RandV(110,127) n(Hihat()),16}r}//44
		$h{Sub{RandR(192,1536) RandV( 65, 80) n(Hihat()),16}r}//42
		$o{Sub{RandR(192,1536) RandV( 90,110) n(OpenHiHat),16}r}//46
		$r{Sub{RandR(192,1536) RandV(100,110) n(RideCymbal1),16}r}//51
		$R{Sub{RandR(192,1536) RandV(120,127) n(RideBell),16}r}//53
		// Ride cup
		$i{Sub{RandR(192,1536) RandV( 85,95)  n(MuteHighConga),16}r}//62
		$I{Sub{RandR(192,1536) RandV(120,127) n(OpenHighConga),16}r}//63
		$C{Sub{RandR(192,1536) RandV(120,127) n(Cymbal()),16}r}//49
		$c{Sub{RandR(192,1536) RandV(120,127) n(Splash()),16}r}//49

		// alt cymbal
		$y{Sub{RandR(192,1536) RandV(120,127) n(HighBongo),16}r}//60
		$Y{Sub{RandR(192,1536) RandV(120,127) n(LowBongo),16}r}//6 

		// BellTree
		$Z{Sub{RandR(192,1536) RandV(125,127) n(BellTree),16}r}//6 
		$z{Sub{RandR(192,1536) RandV(125,127) n(JingleBell),16}r}//6 
		$a{Sub{RandR(192,1536) RandV(125,127) n(85),16}r}//6 

		// water
		$A{Sub{RandR(192,1536) RandV(126,127) n(86),1^1^1^1^1^1}r}//6 

		// Wind
		$D{Sub{RandR(192,1536) RandV(126,127) n(87),1^1^1^1^1^1}r}//6 

		#r01={
			Sub{Rythm{[8 h8]}}
			Rythm{b4.b4s4b8}
		}
		#r02={
			Sub{Rythm{o8[7 h8]}}
			r4 Rythm{b2^8b8}
		}

		#r03={
			Sub{Rythm{o8[7 h8]}}
			r4 Rythm{b4.t8m8l8}
		}
		#r04={
			Sub{Rythm{o8[3 h8]}}
			Rythm{b4s8b8}
		}

		#r05={
			Sub{Rythm{o8 [3 h8]}}
			Rythm{b8t8m8l8}
		}

		#r06={
			Sub{Rythm{o8 [7 h8]}}
			r4 Rythm{b2b4}
		}

		#r07={
			Sub{Rythm{[4 h8]}}
			r4Rythm{b4}
		}
		#r11={
			Sub{Rythm{[4 h8]o8[3 h8]}}
			Rythm{b2s2}
		}
		#r12={
			Sub{Rythm{[4 h8]o8[3 h8]}}
			Rythm{b2s4.b8}
		}
		#r13={
			Sub{Rythm{[o8[3 h8]]}}
			Sub{Rythm{c2c2}}
			Rythm{b2t8m8l8L8}
		}
		#r14={
			Sub{Rythm{[o8[3 h8]]}}
			Sub{Rythm{c2c2}}
			Rythm{'b8t8'm8l8t8m8l8t8m8}
		}
		#r15={
			Sub{Rythm{[o8[3 h8]]}}
			Sub{Rythm{c2c2}}
			Rythm{'b8t8't8m8m8l8l8L8L8}
		}

		IF(SHORT=1) {
			// 3
			Sub{Rythm{C1}}
			[3 #r11 #r12]  #r11 #r13
			Sub{Rythm{C1}}
			[3 #r11 #r12]  #r11 #r13

			Sub{Rythm{C1}}
			#r01 #r02 #r01 #r03

			// 1
			Sub{Rythm{c1}}
			[3 #r01 #r02] #r01 #r03
			Sub{Rythm{c1}}
			[3 #r01 #r02] [3 #r04] #r05

			// 2
			Sub{Rythm{c1}}
			[3 #r01 #r06]  [3 #r04] #r05
			Sub{Rythm{c1}}
			[2 #r01 #r06] #r01 #r02 #r01 #r07 #r05
		} ELSE {
			[8 r1]

			r2  Expression(EXPMAX) IF(MA7=1) { r2 } ELSE { Rythm{a2}} r2r8Rythm{t8m8l8}

			[
				// 1
				Sub{Rythm{C1}}
				#r01 #r02 #r01 #r03

				Sub{Rythm{c1}}
				[3 #r01 #r02] #r01 #r03
				Sub{Rythm{c1}}
				[3 #r01 #r02] [3 #r04] #r05

				// 2
				Sub{Rythm{c1}}
				[3 #r01 #r06]  [3 #r04] #r05
				Sub{Rythm{c1}}
				[2 #r01 #r06] #r01 #r02 #r01 #r07 #r05

				// 3
				Sub{Rythm{C1}}
				[3 #r11 #r12]  #r11 #r13
				Sub{Rythm{C1}}
				[3 #r11 #r12]  #r11 #r13
			]

			Sub{Rythm{c1}}
			Sub{Rythm{[15 r2]}}
			[3 #r11] #r12 [#r11] #r12 #r13
			Sub{Rythm{c1^1c2c2c1c1}}
			Sub{Rythm{[15 r2]}}
			#r11 [6 #r12] #r14 #r12 #r15

			IF(MA7=0) { Sub{Rythm{z1}} }
			[8 r1]
			IF(MA7=0) { Sub{Rythm{Z1}} }
			[7 r1]
			r2 Rythm{t8m8l8L8}

			Sub{Rythm{C1}}
			[3 #r11 #r12]  #r11 #r13
			Sub{Rythm{C1}}
			[3 #r11 #r12]  #r11 #r15

		Sub {
			Expression.onTime(60,EXPMAX,!1)
			r1
			Expression.onTime(EXPMAX,60,!1)
		}
		Rythm {
			R9R10R11R12R13R14R15R16R17R18R19R20R21R22R21R20R19R18R17R16R15R14R13R12R11R10R9R87R6R5
		}
		r2.
		Expression(EXPMAX)
		Sub {r2.^8 Expression.onTime(EXPMAX,0,!2)}
		Rythm {
			m24t24m24 'b1.s1.o1.c1.C1.'
		}
	}
}
