曲名{"瀬戸口藤吉 告別行進曲風"}
//https://www.youtube.com/watch?v=D2av0JNJrNk
Int LOOP=1

Expression.Frequency(1);
Modulation.Frequency(1);

// シンバルのロテート
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,H HMAX)
			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"
	MML=MML+Random(MIN,MAX)
	MML
}

Str RMML
Function RandR(Int MIN, Int MAX) {
	Str MML
	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 {
	　　　　　　R=R+"r"+Random(64,640)
　　　　　　　　	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
}

Function LoopPlay(Str Mml) {
	Str _MML
	For (Int i = 1; i <= LOOP; i++) {
		_MML=_MML + #STR(Mml)
	}
	_MML
}

Int MR_LEN=!16
Int MR_Q=85
Int MR_MIN=192
Int MR_MAX=768
Int MR_INITVOL=100
Int MR_VOL=100
Int MR_CRESC=0
Int MR_CRESC2=0

// マリンバ初期化
Function MRINIT(Int LEN, Int Q, Int MIN, Int MAX) {
	MR_LEN=LEN
	MR_Q=Q
	MR_MIN=MIN
	MR_MAX=MAX
}

// マリンバの両手別のクレッシェンド
Function MRCresc(Int VOL, Int Offset, Int Offset2) {
	MR_INITVOL=VOL
	MR_CRESC=Offset
	MR_CRESC2=Offset2
}

// マリンバの両手同時、rchord.h RCDと同じ関数
Function MCD(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<2) {
			FIRST=ML
			ML=FM+M
			FM=""
		} ELSE {
				BUF=BUF+"Sub" + CHR(123)+R+ML+CHR(125)
				IF(MR_MAX>0) {
					R=R+"r"+Random(MR_MIN, MR_MAX)
				}
				ML=M
		}
		} ELSE {
		IF(C>0) {
				ML=ML+M
		} ELSE {
			FM=FM+M
		}
		}
	}
	BUF=BUF+"Sub"+CHR(123)+R+ML+CHR(125)+FIRST+"r"
	BUF
}

// マリンバの両手別
Function MR(Str MML1, Str MML2, Int Len) {
	Str MML="Sub"+CHR(123)
	Str BUF1=""
	Str BUF2=""
	Str FIRST1=""
	Str FIRST2=""
	Str ML1=""
	Str ML2=""
	Str M
	Str R
	Str FM1
	Str FM2
	Int C=0

	MR_VOL=MR_INITVOL
	MML=MML+"v"+MR_VOL
	For (Int i=0; i <= (Len / MR_LEN / 2) * MR_Q / 100; i++) {
		BUF1=""
		BUF2=""
		FIRST1=""
		FIRST2=""
		ML1=""
		ML2=""
		
		R=""
		C=0
		For(Int i=1; MID(MML1, i, 1)!=""; i++) {
			M=MID(MML1, i, 1)
			IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
				C++
			  	IF(C<2) {
					FIRST1=ML1
					ML1=FM1+M
					FM1=""
				} ELSE {
						BUF1=BUF1+"Sub" + CHR(123)+R+ML1+CHR(125)
						IF(MR_MAX>0) {
							R=R+"r"+Random(MR_MIN, MR_MAX)
						}
						ML1=M
				}
			} ELSE {
				IF(C>0) {
						ML1=ML1+M
				} ELSE {
					FM1=FM1+M
				}
			}
		}
		BUF1=BUF1+"Sub"+CHR(123)+R+ML1+CHR(125)+FIRST1+"r%"+MR_LEN
		R=""
		C=0
		For(Int i=1; MID(MML2, i, 1)!=""; i++) {
			M=MID(MML2, i, 1)
			IF(M="a"||M="b"||M="c"||M="d"||M="e"||M="f"||M="g") {
				C++
		  		IF(C<2) {
					FIRST2=ML2
					ML2=FM2+M
					FM2=""
				} ELSE {
					BUF2=BUF2+"Sub" + CHR(123)+R+ML1+CHR(125)
					IF(MR_MAX>0) {
						R=R+"r"+Random(MR_MIN, MR_MAX)
					}
					ML2=M
				}
			} ELSE {
				ML2=ML2+M
			}
		}
		BUF2=BUF2+"Sub"+CHR(123)+FIRST2+R+ML2+CHR(125)+"r%"+MR_LEN

		MML=MML+BUF1
		IF(MR_CRESC2 == 0) {
			MR_VOL=MR_VOL+MR_CRESC
			MML=MML+"v"+MR_VOL
			MML=MML+BUF2
			MR_VOL=MR_VOL+MR_CRESC
			MML=MML+"v"+MR_VOL
		} ELSE {
			IF(i < (Len / 200 )) {
				MR_VOL=MR_VOL+MR_CRESC
				MML=MML+"v"+MR_VOL
				MML=MML+BUF2
				MR_VOL=MR_VOL+MR_CRESC
				MML=MML+"v"+MR_VOL
			} ELSE {
				MR_VOL=MR_VOL+MR_CRESC2
				MML=MML+"v"+MR_VOL
				MML=MML+BUF2
				MR_VOL=MR_VOL+MR_CRESC2
				MML=MML+"v"+MR_VOL
			}
		}

		MML=MML+" "
	}
	MML=MML+CHR(125)+"r%"+Len

	MR_VOL=MR_INITVOL
	MML=MML+"v"+MR_VOL
	MML
}

#sub1={
	l16
	q88
	e-re-e- gre-g b-4. e-g
	b-rgg b-r>e-r d4. e-d
	c8<b-a- grfr gre-rcrfr
	e-4 Sub{d20e-20d20c20d20}r4 e-2
	r1
}

#melody2={
	l4 q93
		r-4 e-
		a-.a-8 a->c<
		b-.a-8 b->c<
		a-.a-8>ce-
		f2.f
		e-.c8c<a-
		b-.a-8b->c<
		a-.f8fe-
		a-2.
		[>f
			e-.c8c<a-
			b-.a-8b->f
			e-.c8ce-
			f2.f8a-8
			e-.c8c<a-
			b-.a-8b->c8<b-8
			a-.f8fe-
			a-2.
		]r
}

#melody2temp={
		>f
			e-.c8c<a-
			b-.a-8b->f
			e-.c8ce-
			f2.f8a-8
			e-.c8c<a-
			b-.a-8b->c8<b-8
			a-.f8fe-
			a-2.
		r
}

#melody21={
	MRINIT(!26, 98, 256, 384) MRCresc(110,-7)
	r-4 @(Marimba) MR("o5e-","o5e-",!4)
	MR("o5c","o5a-",!4.)MR("o5c","o5a-",!8) MR("o5c","o5a-",!4)MR("o5e-","o6c",!4)
	MR("o5e-","o5b-",!4.)MR("o5e-","o5a-",!8) MR("o5e-","o5b-",!4)MR("o5e-","o6c",!4)
	MR("o5c","o5a-",!4)MR("o5c","o5a-",!4)MR("o5e-","o6c",!4)MR("o5a-","o6e-",!4)
	MR("o5a->d-","o6f",!2.)MR("o5a->d-","o6f",!4)

	MR("o5a->c","o6e-",!4.)MR("o5e-","o6c",!8)MR("o5e-a-","o6c",!4)MR("o5c","o5a-",!4)
	MR("o5e-","o5b-",!4.)MR("o5e-","o5a-",!8)MR("o5e-","o5b-",!4)MR("o5c","o6c",!8)MR("o5b-","o5b-",!8)
	MR("o5d-","o5a-",!4.)MR("o5d-","o5f",!8)MR("o5d-","o5f",!4)MR("o5d-","o5e-",!4)
	MR("o5c","o5a-",!2)r4 MR("o5a->d-","o6f",!4)

	MR("o5a->c","o6e-",!4.)MR("o5a-","o6c",!8)MR("o5e-","o6c",!4)MR("o5c","o5a-",!4)
	MR("o5e-","o5b-",!4.)MR("o5e-","o5a-",!8)MR("o5e-","o5b-",!4)MR("o6d-","o6f",!4)
	MR("o6c","o6e-",!4.)MR("o5a-","o6c",!8)MR("o5a-","o6c",!4)MR("o5a-","o6e-",!4)
	MR("o5a->d-","o6f",!2.)MR("o6f","o6f",!8)MR("o6a-","o6a-",!8)

	MR("o5a->c","o6e-",!4.)MR("o5a-","o6c",!8)MR("o5a-","o6c",!4)MR("o5c","o5a-",!4)
	MR("o5e-","o5b-",!4.)MR("o5e-","o5a-",!8)MR("o5e-","o5b-",!4)MR("o6c","o6c",!8)MR("o5b-","o5b-",!8)
	MR("o5d-","o5a-",!4.)MR("o5d-","o5f",!8)MR("o5d-","o5f",!4)MR("o5d-","o5e-",!4)
	MR("o5ce-","o5a-",!2)r4
}

#melody22={
	l4
	r- q91
	>d-
	c.<a-8a-f
	g.f8g>d-
	c.<a-8a->c
	d-2. d-8f8
	c.<a-8a-e-
	g.f8g4g4
	f.d-8 d-d-
	c2.r4
}

#back1={
	#gbe={BG(gb->e-<)}
	#fbd={BG(fb->d<)}
	#ace={BG(a->ce-<)}
	#gbde={BG(gb->d-e-<)}
	#gbd={BG(gb->d-<)}
	q60
	l8 #gbe r [#gbe] l4. #gbe l16 [#gbe]
	l8 #gbe r [#gbe] l4. #fbd l16 [#fbd]
	l8 #ace r [#fbd] l4 #gbe #ace
	#gbe #fbd q30 [#gbe]
	v-10 [#gbe] v-10 [#gbde]
}

#back2={
	#ace={BG(a->ce-<)}
	#adf={BG(a->d-f<)}
	l4 q25
	[4 #ace]
	#gbe #gbd [#gbe]
	[4 #ace]
	[4 #adf]
	[4 #ace]
	#gbe #gbd [#gbe]
	[3 #adf] #gbde
	[3 #ace] r

	[
		[4 #ace]
		#gbe #gbd [#gbe]
		[4 #ace]
		[4 #adf]

		[4 #ace]
		#gbe #gbd [#gbe]
		[3 #adf] #gbde
		[3 #ace] r
	]
}

#bass1={
	l8 q75
	e-re-r e-e-b-g
	e-rb-g b-rrr
	a-4b-b- e-ra-r
	b-rb-r e-re-r
	q75
	[4e-r]
}

#bass2={
	l8 q75
	[4 a- r]
	[4 e- r]
	[4 a- r]
	[4 d- r]
	[3 a- r] cr
	[3 e- r] cr
	[3 d- r] e-r
	[3 a- r] rr

	[
		[3 a- r] cr
		[4 e- r]
		[3 a- r] cr
		[3 d- r] fr
		[3 a- r] cr
		[3 e- r] cr
		[3 d- r] e-r
		[3 a- r] rr
	]
}

TR(1)
	@(Trumpet)
	o5
	v120
	#sub1
	LoopPlay(
		@(Trumpet)
		#melody2
		@(Marimba)
		#melody21
		@(Trumpet)
		#melody2temp
	)
	@(Trumpet)
	o6
	q30
	v127
	[3 'ce-a-']

TR(2)
	@(Piccolo)
	o6
	v120
	#sub1
	LoopPlay(
		#melody2
		[16 r1]
		r-4 #melody2temp
	)

	o7
	v127
	l24
	a-rr e-fg a-rr e-fg a-4

TR(3)
	@(Clarinet)
	o5
	v100
	[5 r1]
	LoopPlay([16 r1] #melody22 [16 r1] #melody22)

TR(4)
	@(Piccolo)
	o6
	v120
	[5 r1]
	LoopPlay([16 r1] #melody22 [16 r1] #melody22)

TR(5)
	@(Trombone)
	v110
	o4
	#back1
	v105
	LoopPlay(#back2 #back2)
	l4o4
	q30
	v110
	[3 BG(a->ce-<)]

TR(9)
	@(Tuba)
	v127
	o3
	#bass1
	LoopPlay(#bass2 #bass2)
	l4
	q40
	a-e-a-

TR(10)
	$b{Sub{RandR(80,1536) RandV(100,127) n(Kick1),16}r}//36
	$s{Sub{RandR(80,1536) RandV( 90,127) n(Snare1),16}r}//38
	$S{Sub{RandR(80,1536) RandV( 70, 85) n(Snare1),16}r}//38
	$c{Sub{RandR(80,1536) RandV(100,127) n(Cymbal()),16}r}//49

	Rythm{[3 'b4s4c4']} r8 Rythm{s16s16}
	Rythm{'b8s8c8's16s16'b8s8c8's8 'b4.s4.c4.'s16s16}
	Rythm{'b8s8c8's16s16 s8s8 ['b8s8c8's8]}
	Rythm{'b4s4c4''b8.s8.c8.'s32s32 'b4s4c4'S4}
	Rythm{S4S4S4S4}
	LoopPlay(
		[3
			[7
				Rythm{'b4S4'S4S4S4}
			]
			Rythm{'b4S4'S4S4}r4
		]

		[3
			[7
				Rythm{'b4S4'S4S4S4}
			]
			Rythm{'b4S4'S4S4}r4
		]
	)
	Rythm{[3 'b4s4c4']}

End

##############################################################################
# ese hotaru
# by @nanakochi123456
#
# TiMidiTy Config (v2.0)

dir ../patches/guspat/izumo/inst
dir ../patches/guspat/izumo
dir ../patches/guspat
dir ../patches/sf2_all
dir ../patches/sf2_all/atomic
dir ../patches/sf2_all/fluid3
dir ../patches/sf2_all/realgs
dir ../patches/sf2_all/ultimate
dir ../patches/sf2_all/scc
dir ../patches/sf2_all/GMRBasico
dir ../patches/sf2_all/ForClassicalMusic
dir "../patches/sf2_all/Timbres Of Heaven"

dir ../patches/sf2_part/drumkit
dir ../patches/sf2_part/piano
dir ../patches/sf2_part/guitar
dir ../patches/sf2_part/harpsichord
dir ../patches/sf2_part/ORCHESTRAL
dir ../patches/sf2_part/Clarinet
dir ../patches/sf2_part/chipfont
dir ../patches/sf2_part/bass
dir ../patches/sf2_drum/drum/pettinhouse

dir ../patches/sf2_part/famicom
dir ../patches/sf2_all/musix
dir ../patches/sf2_all/Musyng
dir ../patches/sf2_all/Evanessence2

dir ../patches/sf2_all/Giant
dir ../patches/sf2_all/Titanic
dir "../patches/sf2_part/drum/MPC Drum Library"
dir "../patches/sf2_part/Sonatina Symphonic Orchestra"
dir "../patches/nanako"
dir "../patches/wood"
dir "../patches/sf2_part/Anthonys Philharmonic"
dir "../patches/sf2_collection/3.5G HQ Orchestral/Brass and Woodwinds/Brass"
dir "../patches/sf2_collection/3.5G HQ Orchestral/Brass and Woodwinds/Woodwinds"
dir "../patches/sf2_collection/Free Soundfont Kit/SYNTHS"
dir "../patches/sf2_all/Timbres Of Heaven"
dir "../patches/sf2_part/ORCHESTRAL"

##############################################################################

bank 0
	# trumpet
	56 %font "Papelmedia_Trumpet.sf2" 0 0 amp=250

	# trombone
	57 %font "Papelmedia_Trombone.sf2" 0 0 amp=165

	# clarinet
	71 %font "clarinet_section_1.sf2" 0 0 amp=165

	# piccolo
	72 %font "Woodwinds - Piccolo Solo.sf2" 0 0 amp=110

	# tuba
	58 %font "Brass - Tuba Staccato.sf2" 0 0 amp=280

	# marinba
	12 %font "Marimba.sf2" 0 12 amp=195

drumset 0
	36 %font "Percussion - All Percussion.sf2" 128 0 37 amp=330
	38 %font "Percussion - All Percussion.sf2" 128 0 40 amp=390
	49 %font "Percussion - All Percussion.sf2" 128 0 45 amp=320
	57 %font "Percussion - All Percussion.sf2" 128 0 45 amp=320
