TrackName = {"春の終わりに"};
Copyright = {"AMIO"};

/*
	やさしいけどせつない
	
	タイトルがなかなか決まらず案を10個ぐらい作ったのですが、どれもしっくり来ず。
	もっといいタイトルはないものか……
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 0;//イントロからメロディースタートまでの時間
Int Ltime = 56;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
Int Tmp = 90;//テンポ
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-----------------------------------

#Cre1 = {EP.T(80,127,!2^4)};
#Cre2 = {EP.T(127,104,!2^4)};

Str TR1In = {};
Str TR1 = {l16 [
		[[#Cre1 e-2^4,90e-f+^^,,110 #Cre1 c+2^4,85c+8f+8,,110 : #Cre1 "b2^4,98"a8,,90"g8,,90 #Cre2 "f+2^4,,90r4] #Cre1 "b2^4,98"a8c+8,,105 EP.T(96,127,!2^4) "b2^4,90,105r4]
		#Cre1 "a-2^4,96,95"a8,,95"b8,,95 e2,96,95"a-2,90 #Cre1 "b-2^4,96"b8c+8 f+2,96,110"b-2
		#Cre1 a-2^4,96,120f+8e8 #Cre1 "a-2^4,96"a-8"a8 #Cre1 "b-2^4,90r8"b-"b : c+4^8,90,95e-8e4^8,85r8
		] #Cre1 c+1,90};
Str TR1Out = {[#Cre1 e-2^4,90e-f+^^,,110 #Cre1 c+2^4,85c+8f+8,,110 : #Cre1 "b2^4,98"a8,,90"g8,,90 #Cre2 "f+2^4,,90r4] #Cre1 "b2^4,98"a8c+8,,105 EP.T(96,127,!2^4) "b2^4,90,105r4};

Str TR2In = {};
Str TR2 = {};
Str TR2Out = {};

Str TR3In = {l16 o6};
Str TR3 = {[48r1]
		t.N(-4,0) 'ea-'2^8 t0 f+8e8e-8 "a-2^4"a4 t.N(-4,0) '"f+"b-'1-8 t0 "b8 t.N(-4,0)'"b-c+'1
		t.N(-4,0) 'ea-'2^8 t0 f+8e8e-8 "a-2^4"a4 t.N(-4,0) '"f+"b-'1-8 t0 c+e- t.N(-6,0,6)'"f+"b-e'1};
Str TR3Out = {};

Str TR4In = {};
Str TR4 = {};
Str TR4Out = {};

Str TR5In = {l8 o4 q100};
Str TR5 = {[48r1]
		EP(127) [a-2^4ab `e4^8ra-4^8r b-2^4b`c+ : `f+4^8rb-4^8r]EP.T(127,64,!1)'b-`f+'2^4r4};
Str TR5Out = {};

#T = {t.N(0,2,4)};

Str TR6In = {l16 o5 q75};
Str TR6 = {v.Random(3) q.Random(3)[
		[4#T'"f+"be-'4#T'"f+"be-'8^16#T'"f+"be-'r#T'"f+"be-'8"f+,50,85 #T'"f+"be-'4
		#T'"f+"b-c+'4#T'"f+"b-c+'8^16#T'"f+"b-c+'r#T'"f+"b-c+'8"f+,50,85 #T'"f+"b-c+'4
		#T'"d"g"b'4#T'"d"g"b'8^16#T'"e"ac+'r#T'"e"ac+'8"e,50,85 #T'"e"ac+'4
		#T'"f+"be-'4#T'"f+"be-'8^16#T'"f+"be-'r#T'"f+"be-'8"f+,50,85 #T'"f+"be-'4]
		
		[#T'"a-"be'4#T'"a-"be'8^16#T'"a-"be'r#T'"a-"be'8"f+,50,85 #T'"a-"be'4]
		[#T'"b-c+f+'4#T'"b-c+f+'8^16#T'"b-c+f+'r#T'"b-c+f+'8"f+,50,85 #T'"b-c+f+'4]
		[#T'"a-"be'4#T'"a-"be'8^16#T'"a-"be'r#T'"a-"be'8"f+,50,85 #T'"a-"be'4]
		#T'"bc+f+'4#T'"bc+f+'8^16#T'"bc+f+'r#T'"bc+f+'8"f+,50,85 #T'"bc+f+'4
		#T'"b-c+f+'4#T'"b-c+f+'8^16#T'"b-c+f+'r#T'"b-c+f+'8"f+,50,85 #T'"b-c+f+'4
		]};
Str TR6Out = {[#T'"f+"be-'4#T'"f+"be-'8^16#T'"f+"be-'r#T'"f+"be-'8"f+,50,85 #T'"f+"be-'4
		#T'"f+"b-c+'4#T'"f+"b-c+'8^16#T'"f+"b-c+'r#T'"f+"b-c+'8"f+,50,85 #T'"f+"b-c+'4
		#T'"d"g"b'4#T'"d"g"b'8^16#T'"e"ac+'r#T'"e"ac+'8"e,50,85 #T'"e"ac+'4
		#T'"f+"be-'4#T'"f+"be-'8^16#T'"f+"be-'r#T'"f+"be-'8"f+,50,85 #T'"f+"be-'4]};

Str TR7In = {l16 o4};
Str TR7 = { [48r1]
		[e2^4b4 e1-8f8 : f+2^4`c+4 f+1] f+1f+1};
Str TR7Out = {};

Str TR8In = {l8 o3};
Str TR8 = {v.Random(3) [
		[[8"b][8"f+][4"g][4"a][6"b]"f+"f+ [8"b][8"f+][4"g][4"a][7"b]"f+]
		[48"e][16"f+]
		]};
Str TR8Out = {[8"b][8"f+][4"g][4"a][6"b]"f+"f+ [8"b][8"f+][4"g][4"a][7"b]"f+};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

#vCH = {v.N(100,95,100,95,110,95,100,95)};
#vTB = {v.N(100,0,90,0)};

Str TR10In = {l16};
Str TR10 = {v.Random(3) [
		Sub{n49}Sub{#vCH r[15n42]}Sub{v100n35rrrrrrv90n35rn35rrrrrr}v100[rrrrn38rrr]
		[15Sub{#vCH[16n42]}Sub{v100n35rrrrrrv90n35rn35rrrrrr}v100[rrrrn38rrr]]
		[8Sub{#vTB[8n54r]}Sub{#vCH[16n42]}Sub{v100n35rrrrrrv90n35rn35rrrrrr}v100[rrrrn38rrr]]
		]
		};
Str TR10Out = {Sub{n49}Sub{#vCH r[15n42]}Sub{v100n35rrrrrrv90n35rn35rrrrrr}v100[rrrrn38rrr]
		[7Sub{#vCH[16n42]}Sub{v100n35rrrrrrv90n35rn35rrrrrr}v100[rrrrn38rrr]]};

Str TR11In = {l1 o5 q100 y72(72)};
Str TR11 = {Tempo(90)[48r1]
		EP(127) 'ea-b'1^1'f+b-`c+'1^1'ea-b'1^1'f+b-`c+'1 Tempo(70) EP.T(127,64,!1) 'f+b-`c+'1};
Str TR11Out = {Tempo(90)};

Str TR12In = {};
Str TR12 = {};
Str TR12Out = {};

Str TR13In = {l16 o5 q96 y67(127)};
Str TR13 = {[32r1]
		Sub{[q96 b1-8,96ag f+1,,95 q80 g8d8g8b8a8e8a8`c+8 : q96 b4^8f+8,,80b4^8,,80r8] q96 b2^4^16,96rrr}
		[q96 `e-1-8,96`c+b b-1,,95 q80 b8g8b8`d8`c+8a8`c+8`e8 : q96`e-4^8r2^8] q96 `e4^8,100`e-`c+`e-4^16r`c+`e-
		Sub{a-1^1-8,96rr b-1^1-4,100r4 b1^1-4,96b-8b8 `c+1-8,96b-`c+ b-1,96}
		    `e1^1-8,96`e-`e `f+1^1-4,100r4 `e1^1-4,96`e-8`e8 `f+1^1,98};
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 = (120,100,110,080,090,095,100,100,100,090,080,100,093,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(72) M(12) REV(20) CHO(0) P(48) #Scr(TR1)
TR(2)  CH(2)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR2)
TR(3)  CH(3)  Voice(11) M(0) REV(40) CHO(0) P(24) #Scr(TR3)
TR(4)  CH(4)  Voice(11) M(0) REV(40) CHO(0) P(104) t_24 #Scr(TR3)
TR(5)  CH(5)  Voice(50) M(10) REV(40) CHO(20) P(36) #Scr(TR5)
TR(6)  CH(6)  Voice(25) M(0) REV(20) CHO(0) P(88) #Scr(TR6)
TR(7)  CH(7)  Voice(46) M(0) REV(40) CHO(0) P(54) #Scr(TR7)
TR(8)  CH(8)  Voice(34) M(0) REV(0) CHO(0) P(40) #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(10) CHO(0) P(64) #Scr(TR10)
TR(11) CH(11) Voice(53) M(10) REV(40) CHO(10) 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(80) M(5) REV(20) CHO(0) P(96) #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);
