TrackName = {"雨上がりの森"};
Copyright = {"AMIO"};

/*
	高校時代に脳内作曲した曲の一つ。
	そのときはドラムパートはもっと単調でした。
	
	タイトルは後付けです。
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 4;//イントロからメロディースタートまでの時間
Int Ltime = 98;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
Int Tmp = 198;//テンポ
Int Sig = 4;

Int Ptime = (In+Ltime*Repeat+Fade)*Sig*60/Tmp;

//---------------------------functions---------------------------------

Function Repstr(Str MML,Int Tim,Int Rep,Int Beg=0)//MML繰り返し処理関数
{
	Int I;
	
	For(I=0;I<Rep-Beg;I++){
		Time((I+Beg)*Tim+In+1:1:0) MML;
	}
}

Function PrintPlayTime(Int Tim)
{
	Int Minute = Tim/60;
	Int Second = Tim%60;
	If(Tim<60){ Print({"演奏時間："}+Second+{"秒"}); }
	Else{Print({"演奏時間："}+Minute+{"分"}+Second+{"秒"}); }
}

Function FadeoutVol(Int Mes,Int Prev)// Prev:pre-volume フェードアウト前のメインボリューム
{
	Str I = {!1};
	While(Mes>1){I = I+{^1}; Mes--;}
	Str CMD = {V.onTime(Prev,0,LEN)};
	CMD.s({LEN},I);
	CMD;
}

Function FadeoutAll(Int Mes,Array X)
{
	Int T = Time;
	For(Int J=1;J<=16;J++){
		TR(J); CH(J); Time(T); FadeoutVol(Mes,X(J-1));
	}
}

//------------------------------system setting---------------------------------

SoundType=1;TimeBase(96);System.MeasureShift(1);Include(guitar.h);Include(gs.h);
Time(0:1:0) Tempo(Tmp);TimeSignature(Sig,4);PrintPlayTime(Ptime);
ResetGM; r2 ResetGS; r2 TrackSync;

//----------------------------------strings-----------------------------------

Str TR1In = {};
Str TR1 = { l12
		// 16*2
		[ r4g^ra^r`c^b ^^ra^rg^ra^r f+^b^rb^^^rrr r1
		  b^r`c^r`d^`e^r`d ^^r`c^rb^r`c^r `d^^^^rg^rf+^r b^^^^r : r2
		  g^ra^rb^`c^rb ^^ra^rg^bg^a ^^rg^rf+^e^re ^^^rrr r2
		  a^rg^rf+^e^rf+ ^^rg^ra^rb^r `c1r1
		]
		rrba^b
		a^rg^rf+^g^ra ^^re^re^f+^rg ^^ra^rb^r`c^`d ^^r`e^r`f+^r`g^r
		`f+^^`e^r`d^`c^rb ^^ra^rg^ra^r g^^,75f^re-^f^rg ^^^rrd g^rb^r
		// 12
		EP.T(80,127,!1^2^4)`d2^4`f+^^ `g2^4 EP(127) `e^`d r4g^ra^`c^rb ^^ra^rb^r`c^r
		`d2^4`f+^^ `g^^^^r`g^r`a^r `b^r`a^r`e^`a^r`a ^^r`g^r`f+^r`f+^`g
		`a^r`d2^4-12r r1r1r1
		// 16*2
		[ r4g^ra^r`c^b ^^ra^rg^ra^r f+^b^rb^^^rrr r1
		  b^r`c^r`d^`e^r`d ^^r`c^rb^r`c^r `d^^^^rg^rf+^r b^^^^r : r2
		  g^ra^rb^`c^rb ^^ra^rg^bg^a ^^rg^rf+^e^re ^^^rrr r2
		  a^rg^rf+^e^rf+ ^^rg^ra^rb^r `c1r1
		]
		rrba^b
		a^rg^rf+^g^ra ^^re^re^f+^rg ^^ra^rb^r`c^`d ^^r`e^r`f+^r`g^r
		`f+^^`e^r`d^`c^rb ^^ra^rg^ra^r g^^,75f^re-^f^rg ^^^rrd g^rb^r
		// 22
		EP.T(80,127,!1^2^4)`d2^4`f+^^ `g2^4 EP(127) `e^`d r4g^ra^`c^rb ^^ra^rb^r`c^r
		`d2^4`f+^^ `g^^^^r`g^r`a^r `b^r`a^r`e^`a^r`a ^^^ r2^4
		`b^r`a^r`e^`a^r`a ^^r`g^r`f+^r`f+^`g `a^^`d^r r2 `d^r`e^r`g^``e^^``d ^^^^^r``c2`b2``c2
		``d1^1 r2^4``d^``d ``d^r``c^r`b^``c^r``d1^1^12 r1r1};
Str TR1Out = {r4g^ra^r`c^b ^^ra^rg^ra^r f+^b^rb^^^rrr r1
		  b^r`c^r`d^`e^r`d ^^r`c^rb^r`c^r `d^^^^rg^rf+^r b^^^^r r2};

Str TR2In = {};
Str TR2 = TR1;
Str TR2Out = TR1Out;

Str TR3In = {};
Str TR3 = TR1;
Str TR3Out = TR1Out;

Str TR4In = {};
Str TR4 = {};
Str TR4Out = {};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

Str TR6In = {};
Str TR6 = {};
Str TR6Out = {};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {EP.T((64,127,!2),(127,64,!1),(64,127,!1),(127,64,!1),(64,127,!2))
		 o3 l12 ["g^^g^r"f+^^f+^r"e^^e^r"f+^^f+^r]};
Str TR8 = {EP(127)
		[ [5"g^^g^r d^^`d^r] "g^r"g^r"a^r"b^r [c^^^^r]["b^^^^r] :
		  [e^^^^r b^^^^r][a^^^^r e^^^^r][c^^^^r g^^^^r]`d^^^^`d^^^`d^^ `d^rd^re^rf+^r
		]
		["e^^^^r "b^^^^r "a^^^^r e^^^^r : d^^^^r "a^^^^r "g^^^^r d^^^^r] e-^^e-^^f^f^^"g4^12r2^4
		//
		["b^^^^r][c^^^^r]a^^`a^r e^^`e^r d^^`d^r a^^`a^r
		["b^^^^r]["e^^^^r]"a4r2^4 r1
		[4d^^^^r][c+^^^^r] d^rc^r"b^r"a^r
		//
		[ [5"g^^g^r d^^`d^r] "g^r"g^r"a^r"b^r [c^^^^r]["b^^^^r] :
		  [e^^^^r b^^^^r][a^^^^r e^^^^r][c^^^^r g^^^^r]`d^^^^`d^^^`d^^ `d^rd^re^rf+^r
		]
		["e^^^^r "b^^^^r "a^^^^r e^^^^r : d^^^^r "a^^^^r "g^^^^r d^^^^r] e-^^e-^^f^f^^"g4^12r2^4
		//
		["b^^^^r][c^^^^r]a^^`a^r e^^`e^r d^^`d^r a^^`a^r
		["b^^^^r]["e^^^^r]"a4,100r1^2^4 c4,100r1^2^4 "b4,100r1^2^4 "e2r1^2
		[4a^^`a^r e^^`e^r][3d^^`d^r a^^`a^r] d^rc^r"b^r"a^r};
Str TR8Out = {[5"g^^g^r d^^`d^r] "g^r"g^r"a^r"b^r [c^^^^r]["b^^^^r]};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

Str TR10In = {[3r1] r2 l12 [6'n35n40n65']};
Str TR10 = {//
		[ [6'n35n42'rr:'n38n46'rr'n35n42'rr'n38n46'r'n37n40']
		  EP.T(80,127,!2) [3'n35n40n46'rr]
		  EP(127) ['n35n49'rr'n38n46'rr:'n35n49'rr'n38n46'rr]n35rn40n47n45n41:
		  [3'n35n46'rr'n38n46'rr]'n35n46'rn37n47n45'n40n49'
		  n35rr'n38n46'rr'n35n46'rr'n38n46'rr
		  'n35n46'rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		  Sub{n49}n35rr'n38n46'rr'n35n46'rr'n38n46'rr
		  'n35n46'rr'n38n46'rr'n35n46'rr'n38n46'rr
		  'n35n38n49'rrrr'n35n38n49'rrr'n35n38n49'rr
		  'n35n38n49'rrrrr 'n35n40'rn37'n35n38n58'rr
		]
		'n35n46'rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		'n35n46'rr'n38n46'rr'n35n40n47'rn45n43r'n41n49'
		n35rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		'n35n46'rr'n38n46'rr'n35n40n41'rn43n45rn47
		'n35n49'rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		'n35n46'rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		'n35n38n49'rr'n35n40n46'rr 'n35n38n52'r'n35n40n46'rr'n35n38n49'r1
		//
		[3'n35n46'rr'n40n42'rr] 'n35n47n46'n45n41'n40n49'rn46 [4'n35n46'rr'n38n49'rr'n35n46'rr'n38n49'r'n37n40']
		'n35n38n51'r1-12 r1 EP(100)[6n35rr'n46n37'rr] EP(127)'n35n38n42'rr'n35n38n42'rr'n35n40'rn37'n35n38n58'rr
		//
		[ [6'n35n42'rr:'n38n46'rr'n35n42'rr'n38n46'r'n37n40']
		  EP.T(80,127,!2) [3'n35n40n46'rr]
		  EP(127) ['n35n49'rr'n38n46'rr:'n35n49'rr'n38n46'rr]n35rn40n47n45n41:
		  [3'n35n46'rr'n38n46'rr]'n35n46'rn37n47n45'n40n49'
		  n35rr'n38n46'rr'n35n46'rr'n38n46'rr
		  'n35n46'rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		  Sub{n49}n35rr'n38n46'rr'n35n46'rr'n38n46'rr
		  'n35n46'rr'n38n46'rr'n35n46'rr'n38n46'rr
		  'n35n38n49'rrrr'n35n38n49'rrr'n35n38n49'rr
		  'n35n38n49'rrrrr 'n35n40'rn37'n35n38n58'rr
		]
		'n35n46'rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		'n35n46'rr'n38n46'rr'n35n40n47'rn45n43r'n41n49'
		n35rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		'n35n46'rr'n38n46'rr'n35n40n41'rn43n45rn47
		'n35n49'rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		'n35n46'rr'n38n46'rr'n35n46'rr'n38n46'r'n37n40'
		'n35n38n49'rr'n35n40n46'rr 'n35n38n52'r'n35n40n46'rr'n35n38n49'r1
		//
		[3'n35n46'rr'n40n42'rr] 'n35n47n46'n45n41'n40n49'rn46 [4'n35n46'rr'n38n49'rr'n35n46'rr'n38n49'r'n37n40']
		['n35n36n38n49'r1-12:r1]r2'n35n40'r'n35n40'n58rr 'n35n36n40n46'r1^1-12 'n35n36n38n49'r1^1-12
		Sub{n49}[4'n35n46'rr'n35n38n49'rr'n35n46'rn46'n35n38n49'rr]
		Sub{n49}[3'n35n46'rr'n35n38n49'rr'n35n46'rn46'n35n38n49'rr]
		'n35n38n49'rr[3'n35n38n42'rr]};
Str TR10Out = {[6'n35n42'rr'n38n46'rr:'n35n42'rr'n38n46'r'n37n40']['n35n40n46'rr]
		  ['n35n49'rr'n38n46'rr:'n35n49'rr'n38n46'rr]n35rn40n47n45n41};

Str TR11In = {};
Str TR11 = {// 16*2
		[32r1]
		// 12
		[12r1]
		// 16*2
		[32r1]
		// 12
		[6r1]
		q100 'ce'1^1'ce-'1^1'"bd'1^1};
Str TR11Out = {};

Str TR12In = {};
Str TR12 = {};
Str TR12Out = {};

Str TR13In = {};
Str TR13 = {//
		q100 EP(127)
		[6r1] e1f+1 EP(127) e1^1a1^1c1^1d1r1
		EP(100) g1^1f+1^1f1r1 EP(127) e1f+1 EP(127) e1a1d1g1e1a1e-2f2r1
		//
		EP(100) "b1c2^4r4 EP(127) "a1d1"b1e1 r1r1 EP(100) d1^1c+1d4r2^4
		//
		[6r1] EP(127) e1f+1  e1^1a1^1c1^1d1r1
		EP(100) g1^1f+1^1f1r1 EP(127) e1f+1 EP(127) e1a1d1g1e1a1e-2f2r1
		//
		EP(100) "b1c2^4r4 EP(127) a1d1"b1e1
		e1^1e-1^1d1^1r1^1 a1^1^1^1'dg'1'df+'1'ce'1'"ad'4r2^4};
Str TR13Out = {[6r1]e1f+1};

Str TR14In = {};
Str TR14 = {};
Str TR14Out = {};

Str TR15In = {};
Str TR15 = {o4 q84
		//
		l4 [EP(100)["g2d2]["f+2d2]"f2d2r1 EP(127)[c2]["b2]:[e2"b2]["a2e2][c2g2]d2a2 EP(110) d,70d,70e,70f+,70]
		[e2"b2"a2e2:d2"a2"g2d2]e-2f2-12g4^12r2^4
		//
		EP.T(100,127,!1^1)["b2][c2] EP(127)"a2e2d2a2 ["b2][e2] "a4r1^2^4 EP(110) [4d2][c+2]dc"b"a
		//
		[EP(100)["g2d2]["f+2d2]"f2d2r1 EP(127)[c2]["b2]:[e2"b2]["a2e2][c2g2]d2a2 EP(110) d,70d,70e,70f+,70]
		[e2"b2"a2e2:d2"a2"g2d2]e-2f2-12g4^12r2^4
		//
		EP.T(100,127,!1^1)["b2][c2] EP(127)"a2e2d2a2 ["b2][e2] a4r1^2^4 `c4r1^2^4 b4r1^2^4 e2r1^2
		[4a2e2][3d2a2] EP(110)dc"b"a};
Str TR15Out = {["g2d2]["f+2d2]"f2d2r1 [c2]["b2]};

Str TR16In = {};
Str TR16 = {};
Str TR16Out = {};

//-----------------------------------Tracks--------------------------------------

/* Track      001,002,003,004,005,006,007,008,009,010,011,012,013,014,015,016 */
Array Vols = (120,120,120,100,100,100,100,105,100,100,105,100,110,100,100,100);//各トラックのメインボリューム
FOR(Int A=1;A<=16;A++){CH(A); V(Vols(A-1));}

#Scr = {Time(1:1:0) #?1In; Repstr(#?1,Ltime,Repeat); Time(Out:1:0) #?1Out;}

TR(1)  CH(1)  Voice(17) M(0) REV(0) CHO(0) P(64) #Scr(TR1)
TR(2)  CH(2)  Voice(9) M(0) REV(0) CHO(0) P(64) #Scr(TR2)
TR(3)  CH(3)  Voice(75) M(0) REV(0) CHO(0) P(64) #Scr(TR3)
TR(4)  CH(4)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR4)
TR(5)  CH(5)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR5)
TR(6)  CH(6)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR6)
TR(7)  CH(7)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR7)
TR(8)  CH(8)  Voice(35) M(0) REV(0) CHO(0) P(40) #Scr(TR8)
TR(9)  CH(9)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR9)
TR(10) CH(10) Voice(1) REV(0) CHO(0) P(64) #Scr(TR10)
TR(11) CH(11) Voice(51) M(0) REV(0) CHO(0) P(52) #Scr(TR11)
TR(12) CH(12) Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR12)
TR(13) CH(13) Voice(57) M(0) REV(0) CHO(0) P(96) #Scr(TR13)
TR(14) CH(14) Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR14)
TR(15) CH(15) Voice(59) M(0) REV(0) CHO(0) P(74) #Scr(TR15)
TR(16) CH(16) Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR16)

//-------------------------------others----------------------------------

Time(Out:1:0) FadeoutAll(Fade,Vols);
