TrackName = {"Tears Never Back"};
Copyright = {"AMIO"};

/*
	Equinox_Grand_Pianos.sf2 bank 0:0 steinway D
	Valiant violin 0:40
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 1;//イントロからメロディースタートまでの時間
Int Ltime = 60;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
Int Tmp = 84;//テンポ
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 = {l8 o6 t.Random(2) v.Random(3) q.Random(4) y64(127) rrrrr v.N(80,90,95)"d"g"b- };
Str TR1 = {[v100
		 Sub{"b-2,,80,-3}d^ddcdc24,95,90d24,95,90c24,95,90"a,,80 
	       Sub{"g2,,80,-3}"b-2^8,,90"a,,85d,,95f,,100 
		 Sub{"b-2,,90,-3}g4ggSub{"a2,,80,-3}g^fe- 
		 Sub{"b-2,,90,-3}f2r"b-,,90d,,95f,,100 
		 Sub{e-2,,110,0}a2^8,,110,6c,,90f,,95a,,100 
		 Sub{d2,,95,-3}Sub{g2,,95,3}b-2,,,9rgf,,95d,,95 
		 Sub{"e-4,,90}"b-4,,100Sub{"e-4,,90}"b-,,100d,,95Sub{"f4,,90}c4,,100Sub{"e-4,,90,-3}"b-,,100"a,,95 
		 Sub{"d2,,90,-3}"b-2,,90r:v.N(80,90,95)"d"g"b- ]rf4,,105 
		
		 Sub{d4^8,,,-6}b-^^b-,,90b-^,,90b-,,90`c  
		 Sub{d2,,,-3}ag,,90f^^,,85rd,,85f,,90   
		 Sub{e-2,,80,-3}g^rf,,95f^,,95"f,,80f,,95  
		 Sub{"b-1,,80,-6}d^^^^,,90rd^,,90  
		 Sub{d4^8,,,-6}b-^rb-,,90b-^,,90b-,,90`c  
		 Sub{d2,,,-3}ag,,90f^^,,85re-,,90f,,95  
		 Sub{e-2,,90,-3}g^rgSub{e2,,90,-3}g^ab-  
		 Sub{f1,,102,-6}`c1,,102   rrrrr  v.N(80,90,95) "d"g"b-
		
		v100
		 Sub{"b-2,,80,-3}d^ddcdc24,95,90d24,95,90c24,95,90"a,,80  
		 Sub{"g2,,80,-3}"b-2^8,,90"a,,85d,,95f,,100  
		 Sub{"b-2,,90,-3}g4ggSub{"a2,,80,-3}g^fe-  
		 Sub{"b-2,,90,-3}f2r"b-,,90d,,95f,,100  
		 Sub{e-2,,110,0}a2^8,,110,6c,,90f,,95a,,100  
		 Sub{d2,,95,-3}Sub{g2,,95,3}b-2,,,9rgf,,95d,,95  
		 Sub{"e-4,,90}"b-4,,100Sub{"e-4,,90}"b-,,100d,,95Sub{"f4,,90}c4,,100Sub{"e-4,,90,-3}"b-,,100"a,,95  
		 Sub{"d2,,90,-3}"b-1,,90 r1  
		
		[8r1]
		[8r1] rrrrr  v.N(80,90,95) "d"g"b-
		
		v100
		 Sub{"b-2,,80,-3}d^ddcdc24,95,90d24,95,90c24,95,90"a,,80  
		 Sub{"g2,,80,-3}"b-2^8,,90"a,,85d,,95f,,100  
		 Sub{"b-2,,90,-3}g4ggSub{"a2,,80,-3}g^fe-  
		 Sub{"b-2,,90,-3}f2r"b-,,90d,,95f,,100  
		 Sub{e-2,,110,0}a2^8,,110,6c,,90f,,95a,,100  
		 Sub{d2,,95,-3}Sub{g2,,95,3}b-2,,,9rgf,,95d,,95  
		 Sub{"e-4,,90,-2}"b-4,,100Sub{"e-4,,90,-2}"b-,,100d,,95Sub{"f4,,90,-3}c4,,100Sub{"e-4,,90,-3}"b-,,100"a,,95
		 Sub{"d2,,90,-3}"b-1,,90  
		rrrrr   v.N(80,90,95)"d"g"b-
		
		
		};
Str TR1Out = {v100
		   Sub{"b-2,,80,-3}d^ddcdc24,95,90d24,95,90c24,95,90"a,,80
		   Sub{"g2,,80,-3}"b-2^8,,90"a,,85d,,95f,,100
		   Sub{"b-2,,90,-3}g4ggSub{"a2,,80,-3}g^fe-
		   Sub{"b-2,,90,-3}f2r"b-,,90d,,95f,,100};

Str TR2In = {o4 l8 y64(127) t.Random(1) v.Random(3) q.Random(4) rrrrr v.N(80,90,95) "b-cd};
Str TR2 = {l8 v90
		[ e-gb-^ fa`c^    gb-`d^ fa`c^  
		  e-gb-^ fa`c^    "b-dfd"b-^^^  
		  "ace-^df+a^     gb-`dgfa`cf   
		  c^^c f^^f       "b-dfd : "b-^^^  ]"b-^"a^  

		 ["g"b-d"b-]    [dfaf]  
		 e-gb-ge-gb-e-    "b-dfd"b-^"a^  
		 ["g"b-d"b-]    [dfaf]  
		 e-gb-gegb-e    fa`cafa`cf  
		 def+ad^^^  
		
		 e-gb-^ fa`c^    gb-`d^ fa`c^  
		 e-gb-^ fa`c^    "b-dfd"b-^^^  
		 "ace-^df+a^     gb-`dgfa`cf   
		 c^^c "f^^"f     "b-dfd"b-dfd"b-dfd"b-^^^  
		
		 e-gb-^ fa`c^    gb-`d^ fa`c^   
		 e-gb-^ fa`c^    "b-dfd"b-^^^   
		 "ace-^df+a^     gb-`dgfa`cf    
		 c^^c f^^f       "b-dfd"b-^"a^  
		 ["g"b-d"b-]     [dfaf]  
		 e-gb-ge-gb-e-    "b-dfd"b-^"a^  
		 ["g"b-d"b-]     [dfaf]  
		 e-gb-gegb-e     fa`cafa`cf  
		 def+ad^^^  
		
		 e-gb-^ fa`c^    gb-`d^ fa`c^  
		 e-gb-^ fa`c^    "b-dfd"b-^^^  
		 "ace-^df+a^     gb-`dgfa`cf    
		 c^^c "f^^"f     "b-dfd"b-dfd"b-dfd"b-^^^
		};
Str TR2Out = { e-gb-^ fa`c^    gb-`d^ fa`c^  
		 e-gb-^ fa`c^    "b-dfd"b-^^^  };

Str TR3In = {t.Random(2) v.Random(3) q.Random(4)};
Str TR3 = {[24r1] q90
		[9r1] l8 o6 rrrrr v.N(80,85,90) "d"g"b-
		
		v.N(100,105,105,80,95,90,90,90,80,90,80,90,95) EP.T(100,127,!4)d^ EP(127) Slur(0,-!24) ddcdc24&d24&c24"a EP.T(127,90,!2)"b-^^^^,95 EP(127)"adf
		v.N(100,100,100,100,90,85,100,80,85,90) EP.T(110,127,!4)g^ EP(127) ggg^fe- EP.T(127,90,!2) f^^^^ EP(127) "b-df
		v.N(100,90,95,100,105,105,90,80) EP.T(127,110,!2) a^^^^,95 EP(127) cfa EP.T(127,100,!2)b-^^^^,95 EP(127) gfd
		v.N(80,80,95,95,90,80,80,75,75,0,100) EP.T(80,127,!4) Slur(0,-!32) "b-^,80"b-c32&d8-32c^"a32&"b-8-32"a EP.T(100,75,!2)"b-^^^^r EP.T(100,127,!4) f^
		v.N(100,90,90,100,105,105,100,95,90,0,90,95) EP.T(90,127,!4) b-^^b-b-^b-`c `c32a8-32gf^^rdf
		v.N(105,100,100,75,100,90,0,80)g^^,95ff^"ff EP.T(100,75,!2)d^^^^r EP(127) d^
		v.N(100,90,90,100,105,105,100,100,100,0,95,100) EP.T(90,127,!4) b-^^b-b-^b-`c `c32a8-32gf^^re-f
		v.N(100,100,100,100,100,100)g^^,95gg^ab- EP.T((80,127,!2^4),(127,100,!4))`c^^^^^^^,98 r1
		};
Str TR3Out = {};

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 = {};
Str TR8 = {};
Str TR8Out = {};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

Str TR10In = {};
Str TR10 = {};
Str TR10Out = {};

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,095,100,100,100,100,100,100,100,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(1) M(0) REV(40) CHO(0) P(64) #Scr(TR1)
TR(2)  CH(2)  Voice(1) M(0) REV(40) CHO(0) P(64) #Scr(TR2)
TR(3)  CH(3)  Voice(41) M(0) REV(40) 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(1) M(0) REV(0) CHO(0) P(64) #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(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);
