TrackName = {"汽車は野原を行く"};
Copyright = {"AMIO"};

/*
	汽車が野原の真ん中を走っていく……みたいな雰囲気のウエスタン?風BGM。
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 2;//イントロからメロディースタートまでの時間
Int Ltime = 33;//1ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 4;//フェードアウトにかかる時間
Int Tmp = 110;//テンポ
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-----------------------------------

#v1_1 = {v.N(90,0,100,100,95,95,95,95,0)};
#v1_2 = {v.N(90,0,100,100,95,95,95,95,0)};
#v1_3 = {v.N(90,0,100)};
#v1_4 = {v.N(100,100,105,103,90,0)};
#v1_5 = {v.N(100,100,105,110,110,100,100,100,105,105,100)};
#v1_6 = {v.N(100,100,105,115,113,105,105,105,105,100)};
#v1_7 = {v.N(110,0,100,105,0,110,0)};
#v1_8 = {v.N(110,0,115,0,103,0,0,0,110,0,115,105,110,115,0)};
#v1_9 = {v.N(110,0,115,0,103,0,0,0,105,110,115)};
#v1_10 = {v.N(105,0,110,0,117,0,0,117,115,0,110,0)};
#v1_11 = {v.N(115,115,110,110,115,115,110)};
#v1_12 = {v.N(110,110,105,105,110,115,105,0,105)};
#v1_13 = {v.N(110,100,105,105,105,105,110,105,105,105,110,112,115)};

Str TR1In = {l16 o4 [r1]};
Str TR1 = { o4
		[l16
		[#v1_1 drb2b^a24b24a24g12r24
		 #v1_2 erg2g^f+24g24f+24e12r24
		 #v1_3 drb2^4^8,90 r1]
		l8 [#v1_4 `c`d`e`ca4^8r]:
		    #v1_5 `c`d`e`g`f+`d24`e24`d24ba g2,90r2]
		#v1_6 `c`d`e`b`a`g24`a24`g24`f+`d
		l24 #v1_7 `e2r4-24`e`g^r`b^r
		
		o5 l24
		[#v1_8 a^rb^re^^rrr a^rb^d^^f+a^r :
		 #v1_9 g^ra^rd^^^^^ r4rreg^b]
		#v1_10 g^ra^r`d^^^^^ rr`d^^^`c^rb^r
		
		#v1_11 `c8b8f+8g8 b4,75b8a8,75
		#v1_12  a8g8f+^ga^b e4,95r8d8
		#v1_13  e8cdcd8e8f+8dede8f+8 g1^4r2^4
		
		};
Str TR1Out = {o4 l16 #v1_1 drb2b^a24b24a24g12r24
		 #v1_2 erg2g^f+24g24f+24e12r24
		 #v1_3 drb2^4^8 r1};

#v2_7 = {v.N(100,105,0,110,0)};
#v2_8 = {v.N(110,0,115,0,103,0,0,110,0,115,105,110,115)};
#v2_9 = {v.N(110,0,115,0,103,0,0,0,105,110,115)};
#v2_10 = {v.N(105,0,110,0,117,0,0,117,115,110)};
#v2_11 = {v.N(115,115,110,110,115,115,110)};
#v2_12 = {v.N(110,110,105,105,110,115,105,0,105)};
#v2_13 = {v.N(110,100,105,105,110,105,110,112)};

Str TR2In = {};
Str TR2 = { [23r1] y77(127)
		l24 o6 r2^4-24 #v2_7 eg^rb^r
		
		[#v2_8 a^rb^re^^^rr a^rb^d^^f+a^^ :
		 #v2_9 g^ra^rd^^^^^ r4rreg^b]
		#v2_10 g^ra^r`d^^^^^ rr`d^^^`c^^b^^
		
		#v2_11 `c8b8f+8g8 b4,75b8a8,75
		#v2_12  a8g8f+^ga^b e4,95r8d8
		#v2_13  e8c8d8e8f+8d8e8f+8};
Str TR2Out = {};

Str TR3In = {};
Str TR3 = {};
Str TR3Out = {};

Str TR4In = {};
Str TR4 = {
		//l16 [rgedgec"b rgecgecd rgecgece rgecgece [rgedgec"b rgecgecd]]
		};
Str TR4Out = {};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

#T2 = {t.N(0,1)};
#T3 = {t.N(0,2,4)};
#T3_ = {t.N(4,2,0)};

Str TR6In = {l24 o5 v90 [r8[3#T3'dgb'12#T3_'dgb'][rr#T2'dg'][#T3'dgb'12#T3_'dgb']]};
Str TR6 = {v90
		[[r8[3#T3'dgb'12#T3_'dgb'][rr#T2'dg'][#T3'dgb'12#T3_'dgb']
		  r8[3#T3'ceg'12#T3_'ceg'][rr#T2'ce'][#T3'ceg'12#T3_'ceg']
		 [r8[3#T3'dgb'12#T3_'dgb'][rr#T2'dg'][#T3'dgb'12#T3_'dgb']]]
		 [r8[3#T3'cea'12#T3_'cea'][rr#T2'"ad'][#T3'"adf+'12#T3_'"adf+']]:
		 r8[3#T3'cea'12#T3_'cea'][rr#T2'"ad'][#T3'"adf+'12#T3_'"adf+']
		 r8[3#T3'"bdg'12#T3_'"bdg'][rr#T2'"ad'][#T3'"adf+'12#T3_'"adf+']]
		 r8[3#T3'cea'12#T3_'cea']r8[3#T3'"be-a'12#T3_'"be-a']
		 r8[3#T3'"beg'12#T3_'"beg'][rr#T2'"be'][#T3'"bea-'12#T3_'"bea-']
		 v105
		 [r8[3#T3'"acg'12'"acg']r8[3#T3'"adf+'12#T3_'"adf+']
		  :r8[3#T3'"g"bf+'12'"g"bf+']r8[3#T3'"beg'12#T3_'"beg']]
		  r8[3#T3'"bdg'12'"bdg']r8[3#T3'"bea-'12#T3_'"bea-']
		  r8[3#T3'"acg'12'"acg']r8[3#T3'"be-a'12#T3_'"be-a']
		  r8[3#T3'"beg'12'"beg']r8[3#T3'"e"ac+'12#T3_'"e"ac+']
		  r8[3#T3'ceg'12'ceg']r8[3#T3'df+a'12#T3_'df+a']
		  v90
		  [r8[3#T3'dgb'12#T3_'dgb'][rr#T2'dg'][#T3'dgb'12#T3_'dgb']]};
Str TR6Out = {r8[3#T3'dgb'12#T3_'dgb'][rr#T2'dg'][#T3'dgb'12#T3_'dgb']
		  r8[3#T3'ceg'12#T3_'ceg'][rr#T2'ce'][#T3'ceg'12#T3_'ceg']
		  [r8[3#T3'dgb'12#T3_'dgb'][rr#T2'dg'][#T3'dgb'12#T3_'dgb']]};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {l8 o3 [3grdr]gdef+};
Str TR8 = { 
		[grdrgrab `crgr`crba [4grdr]
		grdrgrab `crgr`crba [3grdr]grga-
		arardrdr arardef+d :
		arardef+d grdrdrar]
		arar"bc+e-"b "er"bre12`e4-12`db
		
		["arerdrar "grdr"er"br]
		"arer"brf+rerdr"ar"er
		crgrdrar [4grdr]};
Str TR8Out = {grdrgrab `crgr`crba [4grdr]};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

#v10_K1 = {v.N(100,0,90,0,100,0,90,0)};
#v10_K1a = {v.N(100,0,90,0,100,0,100,100)};
#v10_K3 = {v.N(110,0,100,0,110,0,105,0)};
#v10_H1 = {v.N(0,100,0,100,0,85,0,100)};
#v10_H1a = {v.N(0,100,0,100,0,85,100,100)};
#v10_H2 = {v.N(0,100,0,95,0,90,0,85)};
#v10_H3 = {v.N(0,108,0,108,0,105,0)};
#v10_C3 = {v.N(0,108,0,0,100,0,0,108,0,0,105,0)};

Str TR10In = {l8 Sub{#v10_K1[4n35r]}Sub{v100[4n37r]}#v10_H1 rn46[3rn42]
		  Sub{#v10_K1a[3n35r]n35n35}Sub{v100[3n37r]n37n37}#v10_H1a rn46[rn42]n42n42};
Str TR10 = {l8 [[8Sub{#v10_K1[4n35r]}Sub{#v10_K1[4n37r]}#v10_H1 rn46[3rn42]]:
		    [4Sub{#v10_K1[4n35r]}Sub{#v10_K1[4n37r]}#v10_H2 [rn46][rn42]]]
		[3Sub{#v10_K1[4n35r]}Sub{#v10_K1[4n37r]}#v10_H2 [rn46][rn42]]
		Sub{#v10_K1[n35r]}Sub{#v10_K1[n37r]}v100rn46rn46
		l24 Sub{v105n35r4-24[n35rr]}Sub{v105n37rv105n40rrrv105[n40rr]}v105rrn46rrv90n42v105[n46rr]
		
		l24 [7Sub{#v10_C3[4r8n39r12]}Sub{#v10_K3[4n35r4-24]}Sub{[#v10_H3 r8n40rn40r8n40r12]}[#v10_H3 r8n46rn46r8n46r12]]
		l8 [Sub{#v10_K1[4n35r]}Sub{#v10_K1[4n37r]}#v10_H1 rn46[3rn42]]};
Str TR10Out = {[4Sub{#v10_K1[4n35r]}Sub{#v10_K1[4n37r]}#v10_H1 rn46[3rn42]]};

Str TR11In = {};
Str TR11 = {l8 o6 q50 [[[3r1] db^^rrrr] ["acgef+^^^]:"acgbagf+e f+1]"acgbagf+"b e1};
Str TR11Out = {[3r1] db^^rrrr};

Str TR12In = {};
Str TR12 = {};
Str TR12Out = {};

Str TR13In = {};
Str TR13 = {};
Str TR13Out = {};

Str TR14In = {};
Str TR14 = {};
Str TR14Out = {};

#v15_1 = {v.N(90,95,105,95,100)};
#v15_2 = {v.N(90,95,105,95,105,103,100,95,90)};
#v15_3 = {v.N(90,95,100,110,105,105,100,100,90)};

Str TR15In = {y71(80) y74(80) v100 Sub{l8 q90 [r8d1-8]}l8 q90 [r8g1-8]};
Str TR15 = {Sub{q90[v100[r8d1-8r8c1-8[r8d1-8]]
		 l8 [#v15_1 "acecd^^^,80]:#v15_2 "acegf+d"b"a "g2r2]
		 l8  #v15_3 "acegf+d"b"ar1
		 l24
		 q96 v105 [4r8"a8][4r8"g8][4r8"a8][r8"g8]
		 q80 rre8,90ee^,90ee^,90e
		 q70 e4e4f+4f+4
		 q90 e8d8c+8e8"a4,90r8"b8
		 q70 c4c4d4d4
		 v100 q90 [r8d1-8]
		}
		Sub{[q90v100[8r8g1-8]
		 l8 [#v15_1 cegef+^^^,80]:#v15_2 cegbagf+e f+2r2]
		 l8  #v15_3 cegbagf+dr1
		 l24
		 q96 v105 [r8c8][r8d8][4r8"b8][r8c8][r8d8][r8"b8]
		 q80 rra-8,90a-a-^,90a-a-^,90a-
		 q70 a4a4b4b4
		 q90 b8a8g8b8c+4,90r8d8
		 q70 e4e4f+4f+4
		 v100 q90 [r8g1-8]
		}
		 [24r1]
		 l24
		 q96 [[r8g8][4r8f+8]:[r8e8]]
		 q80 rr`d8,90`d`d^,90`d`d^,90`d
		 q70 `c4`c4`e-4`e-4
		 q90 r2e4,90r8
		  };
Str TR15Out = {Sub{r8d1-8r8c1-8[r8d1-8]}[4r8g1-8]};

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 = (115,090,100,070,100,067,100,100,100,100,085,100,100,100,065,075);//各トラックのメインボリューム
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(72) M(16) REV(20) CHO(0) P(56) #Scr(TR1)
TR(2)  CH(2)  Voice(41) M(80) REV(10) CHO(0) P(78) #Scr(TR2)
TR(3)  CH(3)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR3)
TR(4)  CH(4)  Voice(106) M(0) REV(0) CHO(0) P(40) #Scr(TR4)
TR(5)  CH(5)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR5)
TR(6)  CH(6)  Voice(26) M(0) REV(0) CHO(0) P(104) #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(0) CHO(0) P(64) #Scr(TR10)
TR(11) CH(11) Voice(12) M(0) REV(20) CHO(0) P(96) #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(76) M(0) REV(20) CHO(0) P(32) o5 #Scr(TR15)
TR(16) CH(16) Voice(76) M(0) REV(20) CHO(0) P(32) o6 #Scr(TR15)

//-------------------------------others----------------------------------

Time(Out:1:0) FadeoutAll(Fade,Vols);