TrackName = {"Lives in Galaxy"};
Copyright = {"AMIO"};

/*
	睡眠導入用BGMとしてもどうぞ＾＾
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 2;//イントロからメロディースタートまでの時間
Int Ltime = 32;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
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 = {v100};
#v1_2 = {v100};
#v1_3 = {v100};
#v1_4 = {v100};
#v1_5 = {v100};
#v1_6 = {v100};
#v1_7 = {v100};
*/
#v1_1 = {v.N(80,80,80,90,90,90,100,100,100,110,0,107,0,105,0,100,0)};
#v1_2 = {v.N(110,100,100,110,0,107,0,105,0,100,0,90,0)};
#v1_3 = {v.N(110,0,107,0,105,0,107,0,110,0,105,105)};
#v1_4 = {v.N(110,110,115,110,0,107,0,105,0,103,0,100,0,100,105)};
#v1_5 = {v.N(90,0,95,105,100,0,100,100)};
#v1_6 = {v.N(110,110,110,115,0,113,0,110,0,105,0)};
#v1_7 = {v.N(110,110,110,115,0,113,0,105,0,110,0)};

Str TR1In = {q85};
Str TR1 = {	l16 [#v1_1 d1-8fg a1-8a`c `d1-8`d`e `f8r8`e8r8`d8r8`c8r8
		    #v1_2 `d1-8`d`e : `f8r8`e8r8`c8r8b-8r8 a1 r1]
		#v1_3 `f8r8`e8r8`c8r8`e8r8 `d1^2,95 r4`d8`e8
		
		#v1_4 `f1-8`f`g `e8r8`d8r8`c8r8b-8r8 a1 r2^4a8`c8
		#v1_5 g1 r2^4e8b-8 a1 r1-8a`c
		[#v1_6 `d1-8`d`e `f8r8`e8r8`d8r8`c8r8]
		#v1_7 `d1-8`d`e `f8r8`e8r8`c8r8`e8r8
		v110`d1^2,95r1-2};
Str TR1Out = {#v1_1 d1-8fg a1-8a`c `d1-8`d`e `f8r8`e8r8`d8r8`c8r8
		 #v1_2 `d1-8`d`e `f8r8`e8r8`c8r8b-8r8 a1 r1};

Str TR2In = {};
Str TR2 = {};
Str TR2Out = {};

Str TR3In = {q85};
Str TR3 = { l16 [ #v1_1 "a1-8de f1-8fa b-1-8ab- `c8r8b-8r8a8r8g8r8
			#v1_2 b-1-8ab- : `c8r8b-8r8a8r8g8r8 f1 r1]
		#v1_3 `c8r8b-8r8a8r8g8r8 a1^2,95 r4a8`c8
		
		#v1_4 b-1-8b-`d `c8r8b-8r8a8r8g8r8 f1 r2^4f8a8
		#v1_5 e1 r2^4c+8e8 c+1 r1-8fa
		[#v1_6 b-1-8ab- `c8r8b-8r8a8r8g8r8]
		#v1_7 b-1-8ab- `c8r8b-8r8g8r8b-8r8
		v110 a1^2,95r1-2};
Str TR3Out = {#v1_1 "a1-8de f1-8fa b-1-8ab- `c8r8b-8r8a8r8g8r8
		  #v1_2 b-1-8ab- `c8r8b-8r8a8r8g8r8 f1 r1};

Str TR4In = {};
Str TR4 = {};
Str TR4Out = {};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

Str TR6In = {y67(127) q90};
Str TR6 = { [14r1] EP(100) r2^4a8g8 f+1
		[8r1] l16 [3EP.T((64,127,!1),(127,64,!1)) [16a,100b-,100]]
		EP(100) r2^4a8g8 f+1};
Str TR6Out = {};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {l16 [[5d8^16]r]};
Str TR8 = {[[5d8^16]r[5c8^16]r[5"b-8^16]r[5"a8^16]r[5g8^16]r[5c8^16]r:[5f8^16]r[3e8^16]["a8^16]r][[5d8^16]r]

		[5g8^16]r[5c8^16]r[[5f8^16]r][[5e8^16]r][[5"a8^16]r][[5"b-8^16]r][[5c8^16]r][5"b-8^16]r[5c8^16]r[[5d8^16]r]};
Str TR8Out = {[5d8^16]r[5c8^16]r[5"b-8^16]r[5"a8^16]r[5g8^16]r[5c8^16]r[5f8^16]r[3e8^16]["a8^16]r};

Str TR9In = {q100 y72(78) VAR(16)
		r1r2 EP.T(64,127,!2) "b2};
Str TR9 = { q100 y72(72) VAR(8)
		[15r1]r2 EP.T(0,127,!2) e2
		[7r1] r2 EP.T(0,127,!2) e2};
Str TR9Out = {};

Str TR10In = {l16 [Sub{v100[5n36rr]r}Sub{v110[5n41rr]r}Sub{v60r2^8n38rrrrr}Sub{v100r2^8n85rrrrr}v100r2^4rrn42r]};
Str TR10 = {[7Sub{v100[5n36rr]r}Sub{v110[5n41rr]r}Sub{v60r2^8n38rrrrr}Sub{v100r2^8n85rrrrr}v100r2^4rrn42r]
		Sub{v100[[n36rr]n36r]}Sub{v110[[n41rr]n41r]}Sub{v100[r4^8n85r]}v100[r4rrn42r]
		[8Sub{v100[5n36rr]r}Sub{v110[5n41rr]r}Sub{v60r2^8n38rrrrr}Sub{v100r2^8n85rrrrr}v100r2^4rrn42r]
		
		[Sub{n52}
		[8Sub{v100[5n36rr]r}Sub{v110[5n41rr]r}Sub{v60r2^8n38rrrrr}Sub{v100r2^8n85rrrrr}v100r2^4rrn42r]]};
Str TR10Out = {[7Sub{v100[5n36rr]r}Sub{v110[5n41rr]r}Sub{v60r2^8n38rrrrr}Sub{v100r2^8n85rrrrr}v100r2^4rrn42r]
		Sub{v100[[n36rr]n36r]}Sub{v110[[n41rr]n41r]}Sub{v60r2^8n38rrrrr}Sub{v100r2^8n85rrrrr}v100[r4rrn42r]};

Str TR11In = {y72(68) y71(42) y74(42) VAR(8) l1 q100 d1^1};
Str TR11 = {[dc"b-"agc:fe2"a2]d1^1
		gcf^ e^"a^ "b-^c^"b-cd^};
Str TR11Out = {dc"b-"agcfe2"a2};

Str TR12In = {q100 y72(72) VAR(16) v127};
Str TR12 = {[16r1]

		[8r1]
		[EP.T(127,64,!1^1) t.N(0,3)'b-`c'1^1]
		[EP.T(127,64,!1) t.N(0,3)'b-`c'1]
		};
Str TR12Out = {};

Str TR13In = {l16 y71(96) y74(96) y72(72) [[5dga]r]};
Str TR13 = {[[5dga]r[5cga]r[5"b-ga]r[5"aga]r[5dga]r[5cga]r:[5fa`c]r[egb-]ega[c+ga]r][[5dga]r]

		[5gb-`c]r[5eg`c]r[[5cga]r][[5egb-]r][[5c+ea]r]
		[[5dfb-]r][[5gb-`c]r][5dfb-]r[5gb-`c]r[[5dga]r]};
Str TR13Out = {[5dga]r[5cga]r[5"b-ga]r[5"aga]r[5dga]r[5cga]r[5fa`c]r[egb-]ega[c+ga]r};

Str TR14In = {};
Str TR14 = {};
Str TR14Out = {};

#v15_1 = {v.N(100,95,80,85)};
#v15_2 = {v.N(90,100,95,90,85,85,90)};
#v15_3 = {v100};

Str TR15In = {l1 q100 '"ad'1^1};
Str TR15 = {[8r1]
		EP.T(0,127,!1^1) a1^1 EP(127) #v15_1 a2^4`c4 g2^4 e4
		#v15_2 f2^4g4 e4c4"a4c4 '"ad'1r1
		#v15_3 gcf^ e1^1-4e8d8c+^ f^g^fgd^};
Str TR15Out = {[8r1]};

Str TR16In = {o3 l16 y71(32) y74(32) y72(72) VAR(16) [[3"grr]r2-16]};
Str TR16 = {[7[3"grr]r2-16]
		[["grr]rr]
		[8[3"grr]r2-16]
		
		[16[3"grr]r2-16]
		//[16[5"grr]r]
		};
Str TR16Out = {[8[3"grr]r2-16]};

//-----------------------------------Tracks--------------------------------------

/* Track      001,002,003,004,005,006,007,008,009,010,011,012,013,014,015,016 */
Array Vols = (110,110,100,100,100,090,100,100,100,100,115,120,064,056,080,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(76) M(5) REV(40) CHO(0) P(56) #Scr(TR1)
TR(2)  CH(2)  Voice(74) M(5) REV(40) CHO(0) P(56) #Scr(TR1)
TR(3)  CH(3)  Voice(76) M(5) REV(40) CHO(0) P(56) #Scr(TR3)
TR(4)  CH(4)  Voice(74) M(5) REV(40) CHO(0) P(56) #Scr(TR3)
TR(5)  CH(5)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR5)
TR(6)  CH(6)  Voice(73) M(5) REV(40) CHO(80) P(108) o6 #Scr(TR6)
TR(7)  CH(7)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR7)
TR(8)  CH(8)  Voice(40) M(0) REV(0) CHO(0) P(36) o3 #Scr(TR8)
TR(9)  CH(9)  Voice(120) M(0) REV(40) CHO(0) P(64) #Scr(TR9)
TR(10) CH(10) Voice(9) REV(40) CHO(0) P(64) #Scr(TR10)
TR(11) CH(11) Voice(103) M(0) REV(40) CHO(60) P(44) o3 #Scr(TR11)
TR(12) CH(12) Voice(103) M(0) REV(40) CHO(80) P(32) o4 #Scr(TR12)
TR(13) CH(13) Voice(6) M(0) REV(40) CHO(0) P(96) o6 #Scr(TR13)
TR(14) CH(14) Voice(6) M(0) REV(40) CHO(0) P(96) o5 #Scr(TR13)
TR(15) CH(15) Voice(49) M(10) REV(40) CHO(60) P(88) #Scr(TR15)
TR(16) CH(16) Voice(128,3) M(0) REV(40) CHO(60) P(24) #Scr(TR16)

//-------------------------------others----------------------------------

Time(Out:1:0) FadeoutAll(Fade,Vols);
