TrackName = {"Rainy Cruise"};
Copyright = {"AMIO"};

/*
	アップテンポだけど切ない感じのループ曲。
	タイトルは「雨の中を航海する」イメージから。
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 4;//イントロからメロディースタートまでの時間
Int Ltime = 36;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
Int Tmp = 140;//テンポ
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(95,90,105,105,100,100)};
#v1_2 = {v.N(105,95,85)};
#v1_3 = {v.N(85,90,95,105,100,100)};
#v1_4 = {v.N(105,95,85)};
#v1_5 = {v.N(85,95,100,100,100,100)};
#v1_6 = {v.N(90,100,100,105,100)};
#v1_7 = {v.N(105,95,100,120,115,90,105,105,95,95,100)};
#v1_8 = {v.N(105,95,100,120,115,90,105,115,110,105,95)};

Str TR1In = {};
Str TR1 = { l4 q100 o5 v100 EP(127)
		[#v1_1 e-4^8c4^8g4^8g4^8f4e-4
		 #v1_2 f4^8e-4^8d1^4,80 :
		 #v1_3 c4^8d4^8e-4^8g4^8f4e-4
		 #v1_4 f4^8e-4^8d1^4,80]
		#v1_5 c2^4d4e-4f4g4a-4
		#v1_6 g2b-4`d4`g2`f2
		
		o6
		[4r1] #v1_7 gfb-`cg^^ce-1d4^8 Slur(1) c16&"b16"b-2
		[4r1] #v1_8 gfb-`cg^^ce-2^4gf2d2
		EP.T(127,0,!1) c1};
Str TR1Out = {l4 q100 o5 v100 EP(127)
		 e-4^8c4^8g4^8g4^8f4e-4
		 f4^8e-4^8d1^4,90 
		 c4^8d4^8e-4^8g4^8f4e-4
		 f4^8e-4^8d1^4,90};

Str TR2In = {};
Str TR2 = {l4 q100 o5 v100 EP(127) 
		[#v1_1 e-4^8c4^8g4^8g4^8f4e-4
		 #v1_2 f4^8e-4^8d1^4,90 :
		 #v1_3 c4^8d4^8e-4^8g4^8f4e-4
		 #v1_4 f4^8e-4^8d1^4,90]
		#v1_5 c2^4d4e-4f4g4a-4
		#v1_6 g2b-4`d4`g2`f2
		
		o6 
		[4r1] #v1_7 gfb-`cg^^ce-1d4^8 Slur(1) c16&"b16"b-2
		[4r1] #v1_8 gfb-`cg^^ce-2^4gf2d2
		EP.T(127,0,!1) c1 };
Str TR2Out = {l4 q100 o5 v100 EP(127)
		 e-4^8c4^8g4^8g4^8f4e-4
		 f4^8e-4^8d1^4,90 
		 c4^8d4^8e-4^8g4^8f4e-4
		 f4^8e-4^8d1^4,90};

Str TR3In = {};
Str TR3 = {l4 q100 o5 v100 EP(127) 
		[#v1_1 e-4^8c4^8g4^8g4^8f4e-4
		 #v1_2 f4^8e-4^8d1^4,90 :
		 #v1_3 c4^8d4^8e-4^8g4^8f4e-4
		 #v1_4 f4^8e-4^8d1^4,90]
		#v1_5 c2^4d4e-4f4g4a-4
		#v1_6 g2b-4`d4`g2`f2
		
		o6 
		[4r1] #v1_7 gfb-`cg^^ce-1d4^8 Slur(1) c16&"b16"b-2
		[4r1] #v1_8 gfb-`cg^^ce-2^4gf2d2
		EP.T(127,0,!1) c1};
Str TR3Out = {l4 q100 o5 v100 EP(127)
		 e-4^8c4^8g4^8g4^8f4e-4
		 f4^8e-4^8d1^4,90 
		 c4^8d4^8e-4^8g4^8f4e-4
		 f4^8e-4^8d1^4,90};

Str TR4In = {};
Str TR4 = {};
Str TR4Out = {};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

Str TR6In = {l16 v90 [4r8'"gce-'8[r'"gce-'8'"gce-']['"gce-'8]]};
Str TR6 = {	v90
		[[r8'"gce-'8[r'"gce-'8'"gce-']['"gce-'8]]
		 [r8'"f"b-d'8[r'"f"b-d'8'"f"b-d']['"f"b-d'8]]
		 [r8'"e-"a-c'8[r'"e-"a-c'8'"e-"a-c']['"e-"a-c'8]] :
		 [r8'"f"b-d'8[r'"f"b-d'8'"f"b-d']['"f"b-d'8]]
		]
		r8'"f"b-d'8[r'"f"b-d'8'"f"b-d']['"f"b-d'8]
		v95 r8'"g"bd'8[r'"g"bd'8'"g"bd']['"g"bd'8]
		
		v100
		[r8'"a-ce-'8[r'"a-ce-'8'"a-ce-']['"a-ce-'8]
		 r8'"b-df'8[r'"b-df'8'"b-df']['"b-df'8]
		 r8'"g"b-f'8[r'"g"b-f'8'"g"b-f']['"g"b-f'8]
		 r8'ce-g'8[r'ce-g'8'ce-g']['ce-g'8]
		 r8'c+fa-'8[r'c+fa-'8'c+fa-']['c+fa-'8]
		 r8'"g"bf'8[r'"g"bf'8'"g"bf']['"g"bf'8] :
		 r8'ce-g'8[r'ce-g'8'ce-g']['ce-g'8] 
		 r8'"b-dg'8[r'"b-dg'8'"b-dg']['"b-dg'8]
		]
		r8'ce-a-'8[r'ce-a-'8'ce-a-']['ce-a-'8]
		r8'dfb-'8[r'dfb-'8'dfb-']['dfb-'8]};
Str TR6Out = {v90
		  [r8'"gce-'8[r'"gce-'8'"gce-']['"gce-'8]]
		  [r8'"f"b-d'8[r'"f"b-d'8'"f"b-d']['"f"b-d'8]]
		  [r8'"e-"a-c'8[r'"e-"a-c'8'"e-"a-c']['"e-"a-c'8]]
		  [r8'"f"b-d'8[r'"f"b-d'8'"f"b-d']['"f"b-d'8]]};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {l16 q100 v80 c1^1-8e-&g`c1^2rrr q80 `cc^,98e-&e};
Str TR8 = { l16 q90 v86
		[[c8r8e-8^16frf^fg^g^]
		 ["b-8r8d8^16frf^fg^g^]
		 ["a-8r8c8^16frf^fg^g^]:
		 ["b-8r8d8^16frf^fg^g^]]
		 "b-8r8d8^16frf^fg^g^
		 "b8r8d8^16grg^gf^f^
		 
		q90 v100
		[[4a-4][4b-4][4g4][4`c4][4`c+4][4g4]:[4`c4][b-4][g4]][4a-4][4b-4]
		q100 v80
		c1^1-8f16&g16,100`c1^1,90 };
Str TR8Out = {l16 q90 v90
		  [c8r8e-8^16frf^fg^g^]
		  ["b-8r8d8^16frf^fg^g^]
		  ["a-8r8c8^16frf^fg^g^]
		  ["b-8r8d8^16frf^fg^g^]};

Str TR9In = {l8 q98 y67(127) y73(80) y75(80) [4ce-fe-fe-fe-]};
Str TR9 = {	[[ce-fe-fe-fe-]
		 ["b-dfe-fe-fe-]
		 ["a-cfe-fe-fe-]
		 ["b-dfe-fe-fe-]]
		 
		 [16r1]
		 
		 [4ce-fe-fe-fe-]};
Str TR9Out = {[ce-fe-fe-fe-]
		  ["b-dfe-fe-fe-]
		  ["a-cfe-fe-fe-]
		  ["b-dfe-fe-fe-]};

Str TR10In = {l16 [4Sub{v80[4n27rrr]}Sub{v.C(!4,90,70,70,70)[4n35rrr]}Sub{v.C(!4,80,64)[4rrn42r]}Sub{r2-16n37,,,90rn37,,,80}v75[r4n38rrr]]};
Str TR10 = {l16
		[15Sub{v100[4n27rrr]}Sub{v.C(!4,110,95,95,95)[4n35rrr]}Sub{v.C(!4,100,85)[4rrn42r]}Sub{r2-16n37,,,100rn37,,,90}v100[r4n38rrr]]
		Sub{v100[4n27rrr]}Sub{v.C(!4,110,95,95,95)[4n35rrr]}Sub{v.C(!4,100,85)[3rrn42:r]n46,,,110n46,,,100rn46,,,110r}Sub{r2-16n37,,,100rn37,,,90}v100r4n38rrr v110 rrrn38n38rn38r
		
		[7Sub{v100[r4n39rrr]}Sub{v110[4n27rrr]}Sub{v115[4n35rrr]}Sub{v107[4rrn46r]}Sub{r2-16n37,,,110rn37,,,96}v110[r4n38rrr]]
		Sub{v100[r4n39rrr]}Sub{v110[4n27rrr]}Sub{v115[4n35rrr]}Sub{v107[4rrn46r]}Sub{r2-16n37,,,110rn37,,,96}v110[r4n38rr:r]n38,,,100
		[8Sub{v100[r4n39rrr]}Sub{v110[4n27rrr]}Sub{v115[4n35rrr]}Sub{v107[4rrn46r]}Sub{r2-16n37,,,110rn37,,,96}v110[r4n38rrr]]
		
		Sub{v100'n35n38n46'}
		Sub{v80[8n27rrr]}Sub{v60r4n51rrn51rn51n51,,,45rr4n51,4n51rrn51rn51n51rr4}Sub{v100r4[7n37rrr]}v90r4n38rrr r1^2
		Sub{v80[8n27rrr]}Sub{v60[n51,4n51rrn51rn51n51,,,45:rr4]n51n51,,,45rn51r}Sub{v100[8n37rrr]}v90r4n38rrr r1^4-16n38,,,90n38,,,60rn38,,,90r};
Str TR10Out = {[8Sub{v100[4n27rrr]}Sub{v.C(!4,110,95,95,95)[4n35rrr]}Sub{v.C(!4,100,85)[4rrn42r]}Sub{r2-16n37,,,100rn37,,,90}v100[r4n38rrr]]};

Str TR11In = {Slur(3) y64(127) v90[c32&e-32&g1^1-16,100]};
Str TR11 = {y64(127) v90
		[c32&e-32&g1^1-16,100 "b-32&d32&g1^1-16,100 "a-32&c32&g1^1-16,100 :"b-32&d32&g1^1-16,100]
		"b-32&d32&g1-16,100 "b32&d32&g2-16,100 "b32&d32&f2-16,100
		
		//l4 y64(0) v90
		//[[4'"a-ce-'][4'"b-df'][4'"g"b-f'][4'ce-g']
		// [4'c+fa-'][4'"g"bf']:[4'ce-g']['"b-df']['"g"b-f']]
		// [4'"a-ce-'][4'"b-df']
		l16 y64(0) v90
		[r8'"a-ce-'8[r'"a-ce-'8'"a-ce-']['"a-ce-'8]
		 r8'"b-df'8[r'"b-df'8'"b-df']['"b-df'8]
		 r8'"g"b-f'8[r'"g"b-f'8'"g"b-f']['"g"b-f'8]
		 r8'ce-g'8[r'ce-g'8'ce-g']['ce-g'8]
		 r8'c+fa-'8[r'c+fa-'8'c+fa-']['c+fa-'8]
		 r8'"g"bf'8[r'"g"bf'8'"g"bf']['"g"bf'8] :
		 r8'ce-g'8[r'ce-g'8'ce-g']['ce-g'8] 
		 r8'"b-dg'8[r'"b-dg'8'"b-dg']['"b-dg'8]
		]
		r8'ce-a-'8[r'ce-a-'8'ce-a-']['ce-a-'8]
		r8'dfb-'8[r'dfb-'8'dfb-']['dfb-'8]
		 
		Slur(3) y64(127) v90[c32&e-32&g1^1-16,100]};
Str TR11Out = {y64(127) v90
		  c32&e-32&g1^1-16,100 "b-32&d32&g1^1-16,100 "a-32&c32&g1^1-16,100 "b-32&d32&g1^1-16,100};

#Dec = {EP.T(127,64,!1^1)};

Str TR12In = {};
Str TR12 = {l1^1 q100 y71(32) y74(32)
		[#Dec'e-g`c'#Dec'dfb-'#Dec'ce-a-':#Dec'dfb-']#Dec'dfb-'1#Dec'dgb'1};
Str TR12Out = {#Dec'e-g`c'#Dec'dfb-'#Dec'ce-a-'#Dec'dfb-'};

Str TR13In = {};
Str TR13 = {q100 l4 v96 y67(127) VAR(16)
		[c1^1"b-1^1"a-1^1:"b-1^1]"b-1"b1
		
		[[3r1] re-g`c`c+1g1:rce-gf2d2]a-1b-1
		};
Str TR13Out = {c1^1"b-1^1"a-1^1"b-1^1};

Str TR14In = {};
Str TR14 = {q98 y67(127) y72(72)
		[16r1]
		
		[6r1] Sub{r"ge-gf4^8e16e-16d2}rcg`cb-4^8,90a16a-16g2
		[6r1] Sub{r"e-"gc"b-2"g2}rce-gf2d2};
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 = (090,110,110,100,100,100,100,100,080,100,100,084,088,076,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(101) M(10) REV(40) CHO(0) P(48) #Scr(TR1)
TR(2)  CH(2)  Voice(97) M(0) REV(40) CHO(0) P(96) y71(48) y74(48) #Scr(TR2)
TR(3)  CH(3)  Voice(9) M(0) REV(40) CHO(0) P(96) #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(29) M(0) REV(0) CHO(0) P(92) #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) o3 #Scr(TR8)
TR(9)  CH(9)  Voice(71) M(0) REV(20) CHO(40) P(104) o3 #Scr(TR9)
TR(10) CH(10) Voice(26) REV(0) CHO(0) P(64) #Scr(TR10)
TR(11) CH(11) Voice(1) M(0) REV(40) CHO(0) P(36) #Scr(TR11)
TR(12) CH(12) Voice(53) M(20) REV(40) CHO(40) P(98) o4 #Scr(TR12)
TR(13) CH(13) Voice(93) M(0) REV(40) CHO(40) P(32) o5 #Scr(TR13)
TR(14) CH(14) Voice(75) M(20) REV(60) CHO(0) P(102) o6 #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);
