TrackName = {"September Grass Field"};
Copyright = {"AMIO"};

/*
	スタイリッシュなBGM……を目指した。
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 1;//イントロからメロディースタートまでの時間
Int Ltime = 32;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
Int Tmp = 124;//テンポ
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 = {l16 o4};
Str TR1 = {l16 [['t.N(-5,-2,0)f+b`d'rt0b't.N(-3,0)f+`d'rt0ar't.N(-8,-1)f+b'2^16]
		['t.N(-5,-2,0)b`d`f+'rt0b't.N(-3,0)`d`f+'rt0ar't.N(-8,-1)f+b'2^16]]
		//
		t0 ['b`e-`f+`a'8,95]r'b`e-`f+`a''b`e-`f+`a'8,95r'b`e-`f+`a'[3'b`e-`f+`a'8,95]
		   ['a`c+`e`g'8,95]r'a`c+`e`g''a`c+`e`g'8,95r'a`c+`e`g'[3'a`c+`e`g'8,95]
		//
		['t.N(-5,-2,0)f+b`d'rt0b't.N(-3,0)f+`d'rt0ar't.N(-8,-1)f+b'2^16]
		//
		[['t.N(-5,-2,0)f+b`d'rt0b't.N(-3,0)f+`d'rt0ar't.N(-8,-1)f+b'2^16]
		['t.N(-5,-2,0)b`d`f+'rt0b't.N(-3,0)`d`f+'rt0ar't.N(-8,-1)f+b'2^16]]
		//
		t0 ['b`e-`f+`a'8,95]r'b`e-`f+`a''b`e-`f+`a'8,95r'b`e-`f+`a'[3'b`e-`f+`a'8,95]
		   ['a`c+`e`g'8,95]r'a`c+`e`g''a`c+`e`g'8,95r'a`c+`e`g'[3'a`c+`e`g'8,95]
		//
		['t.N(-5,-2,0)f+b`d'rt0b't.N(-3,0)f+`d'rt0ar't.N(-8,-1)f+b'2^16]
		//
		[8r1]};
Str TR1Out = {l16 [['t.N(-5,-2,0)f+b`d'rt0b't.N(-3,0)f+`d'rt0ar't.N(-8,-1)f+b'2^16]
		['t.N(-5,-2,0)b`d`f+'rt0b't.N(-3,0)`d`f+'rt0ar't.N(-8,-1)f+b'2^16]]
		};

Str TR2In = {};
Str TR2 = {};
Str TR2Out = {};

#v3_1 = {v.N(100,100,105,105,100,100, 105,105,110,105,105,105)};
#v3_2 = {v.N(105,105,100,90,100,100,90, 100,100,90,100,100,90)};
#v3_3 = {v.N(100,100,105,105,100,100, 105,105,105,105,105,105,105)};
#v3_4 = {v.N(110,110,100,100,100,100,100, 100,100,100,105,110,110,110)};
#v3_5 = {v.N(100,110,100,0,110,100,110)};
#v3_6 = {v.N(100,110,100,0,110,100,110)};
#v3_7 = {v.N(100,100,105,105,100,100, 105,105,105,105,105,105,105)};
#v3_8 = {v.N(110,110,100,100,100,100,100, 100,100,95,95,95)};

Str TR3In = {l16 o5};
Str TR3 = {[24r1]
		//
		Slur(0,-!16)
		#v3_1 "bde^e^"bd       e^e^gf+e&d
		#v3_2  e-e"b"g"b^"b"g "b^"b"e"f+"f"e^
		Slur(0,!16) 
		#v3_3 "bde^e^"bd       e&e-e^aa-ab-
		Slur(0,-!16) 
		#v3_4  b`ca-"be^e"b    e^e&ga-ga-a
		Slur(0,-!16)
		#v3_5  b^`dbr`db^&`d2         
		#v3_6  a^`car`ca^&`c2
		#v3_7 "bde^e^"bd       e^e^aa-ab-
		#v3_8  b`ca-"be^e"b    e^e^"g"f+"e^};
Str TR3Out = {};

Str TR4In = {l16};
Str TR4 = {[24r1]
		//
		[7r1] "bde^,,105e^,,105"bd e^,,105e^,,105g,,110f+,,110e^,100,110
		};
Str TR4Out = {};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

Str TR6In = {};
Str TR6 = {};
Str TR6Out = {};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {l16 o3};
Str TR8 = {[8ere^"a-^"a-"ar"a^"a"b^"br]
		//
		[8b8,90][8a8,90]
		//
		[ere^"a-^"a-"ar"a^"a"b^"br]
		//
		[8ere^"a-^"a-"ar"a^"a"b^"br]
		//
		[8b8,90][8a8,90]
		//
		[ere^"a-^"a-"ar"a^"a"b^"br]
		//
		[4ere^"a-^"a-"ar"a^"a"b^"br]
		brb^b^f+b rbb^b^b-^ ara^a^ea rac+^d^e-^
		[ere^"a-^"a-"ar"a^"a"b^"br]};
Str TR8Out = {[8ere^"a-^"a-"ar"a^"a"b^"br]};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

#VH = {v.N(100,85,95,85)};
#VC = {v.N(110,100,100,100,100,100,100,100,110,100,100,100)}

Str TR10In = {l16 r2 Sub{rrrn46rn42n46r}Sub{rrrn35rrn35r}rrrn40rrn40r};
Str TR10 = { l16 [Sub{#VH n49[15n42]}Sub{v100[n35rrrrrn35r]} v100[rrrrn40rrr]
		   [Sub{#VH [16n42]}Sub{v100[n35rrrrrn35r]}v100 [rrrrn40rrr]]
		   Sub{#VH [16n42]}Sub{v100[n35rrrrrn35r]}v100 rrrrn40rrr rrrn40rrn40r]
		 //
		 l8 Sub{#VC [14n49]}Sub{v100[14n35]}v105[n41rrn41rr:n41r]
		 l16 Sub{rv.N(80,90,100)[3n46]}Sub{v100[n35r]}v100[3n50]r
		 //
		 [Sub{#VH [16n42]}Sub{[n35rrrrrn35r]} [rrrrn40rrr]]
		 //
		 l16 [Sub{#VH n49[15n42]}Sub{v100[n35rrrrrn35r]}v100 [rrrrn40rrr]
		   [Sub{#VH [16n42]}Sub{v100[n35rrrrrn35r]}v100 [rrrrn40rrr]]
		   Sub{#VH [16n42]}Sub{v100[n35rrrrrn35r]}v100 rrrrn40rrr rrrn40rrn40r]
		 //
		 l8 Sub{#VC [14n49]}Sub{v100[14n35]}v105[n41rrn41rr:n41r]
		 l16 Sub{rv.N(80,90,100)[3n46]}Sub{v100[n35r]}v100[3n50]r
		 //
		 [Sub{#VH [16n42]}Sub{v100[n35rrrrrn35r]}v100 [rrrrn40rrr]]
		 //
		 [Sub{#VH n49[15n42]}Sub{v100[n35rrrrrn35r]}v100 [rrrrn40rrr]
		   [Sub{#VH [16n42]}Sub{v100[n35rrrrrn35r]}v100 [rrrrn40rrr]]
		   Sub{#VH [16n42]}Sub{v100[n35rrrrrn35r]}v100 rrrrn40rrr rrrn40rrn40r]
		 //
		   };
Str TR10Out = {l16 [Sub{#VH n49[15n42]}Sub{v100[n35rrrrrn35r]}v100 [rrrrn40rrr]
		   [Sub{#VH [16n42]}Sub{v100[n35rrrrrn35r]}v100 [rrrrn40rrr]]
		   Sub{#VH [16n42]}Sub{v100[n35rrrrrn35r]}v100 rrrrn40rrr rrrn40rrn40r]};

Str TR11In = {};
Str TR11 = {};
Str TR11Out = {};

Str TR12In = {};
Str TR12 = {};
Str TR12Out = {};

Str TR13In = {};
Str TR13 = {};
Str TR13Out = {};

Str TR14In = {};
Str TR14 = {};
Str TR14Out = {};

Str TR15In = {};
Str TR15 = {};
Str TR15Out = {};

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 = (100,100,100,110,100,100,100,100,100,090,100,100,100,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(6) M(0) REV(20) CHO(0) P(64) #Scr(TR1)
TR(2)  CH(2)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR2)
TR(3)  CH(3)  Voice(66) M(5) REV(60) CHO(0) P(96) #Scr(TR3)
TR(4)  CH(4)  Voice(22) M(0) REV(60) CHO(0) P(40) o6 #Scr(TR4)
TR(5)  CH(5)  Voice(23) M(0) REV(60) CHO(0) P(36) o5 #Scr(TR4)
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(34) M(0) REV(0) CHO(0) P(44) #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(20) CHO(0) P(56) #Scr(TR10)
TR(11) CH(11) Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR11)
TR(12) CH(12) Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR12)
TR(13) CH(13) Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR13)
TR(14) CH(14) Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR14)
TR(15) CH(15) Voice(1) M(0) REV(0) CHO(0) P(64) #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);
