TrackName = {"兵士の晩歌"};
Copyright = {"AMIO"};

/*
	戦場帰りの夜中、弾き語りに興じる兵士たち。
	今日の出来事を語り合ったり、明日の憂鬱を分かち合ったり。
	
	内蔵音源でも十分聴けると思います。
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 1;//イントロからメロディースタートまでの時間
Int Ltime = 46;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 6;//フェードアウトにかかる時間
Int Tmp = 100;//テンポ
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 = {};
Str TR1 = { // A=2
		r1r1
		// B=4
		l24 @69 o5 [[c^de-^c ^^rrrr] d^e-f^e-d^"b"a-^"g c^de-^c ^^rrrr]
		// C=4
		@68 o4 l24 EP(127) M(0) [d^e-f^"b-^^r"b-^r : e-^fg^b-^^^rrr] c^de-^g ^^^rrr
		d^e-f^"b-^^r"b-^r e-^fg^b-^^b-`c^^ `d8`c24&`d24&`c24b-8a-8r2
		// D=4
		@69 o5 EP(127) M(0) l24 [[c^de-^c ^^rrrr] d^e-f^e-d^"b"a-^"g c^de-^c ^^rrrr]
		// E=9
		@72 [4r1] y67(127) v84 [e-^fg^ca-^gf^e- d^e-f^d^^^rrr] y67(0) v100 [e-^fg^ca-^gf^e- d^e-f^d^^^rrr]
		"g"b-c1-12,100
		// A'=2
		r1r1
		// B'=4
		l24 @69 o5 [[c^de-^c ^^rrrr] d^e-f^e-d^"b"a-^"g c^de-^c ^^rrrr]
		// C'=4
		@68 o4 l24 EP(127) M(0) [d^e-f^"b-^^r"b-^r : e-^fg^b-^^^rrr] c^de-^g ^^^rrr
		d^e-f^"b-^^r"b-^r e-^fg^b-^^b-`c^^ `d8`c24&`d24&`c24b-8a-8r2
		// D'=4
		@69 o5 EP(127) M(0) [[c^de-^c ^^rrrr] d^e-f^e-d^"b"a-^"g c^de-^c ^^rrrr]
		// E'
		[4[c^de-^c ^^rrrr] d^e-f^e-d^"b"a-^"g c^de-^c ^^rrrr]};
Str TR1Out = {// A=2
		r1r1
		// B=4
		l24 @69 o5 [[c^de-^c ^^rrrr] d^e-f^e-d^"b"a-^"g c^de-^c ^^rrrr]};

Str TR2In = {@56 l8 o6 VAR(8) r`cb-a-gfe-d12"b24};
Str TR2 = { VAR(0) r1r1
		[4r1]
		[3r1] o5 rrrrbrrr
		[4r1]
		[9r1]
		r1r1
		[4r1]
		[3r1] o5 rrrrbrrr};
Str TR2Out = {};

Str TR3In = {};
Str TR3 = { r1r1
		l24 @73 o6 [[e-^fg^e- ^^rrrr]f^ga-^`cb^a-g^f e-^fg^e- ^^rrrr]
		[4r1]
		[[e-^fg^e- ^^rrrr]f^ga-^`cb^a-g^f e-^fg^e- ^^rrrr]
		[6r1] [e-^fg^ca-^gf^e- d^e-f^d^^^rrr] r2 "g"b-c2-12,100
		r1r1
		[[e-^fg^e- ^^rrrr]f^ga-^`cb^a-g^f e-^fg^e- ^^rrrr]
		[4r1]
		[[e-^fg^e- ^^rrrr]f^ga-^`cb^a-g^f e-^fg^e- ^^rrrr]
		[4[e-^fg^e- ^^rrrr]f^ga-^`cb^a-g^f e-^fg^e- ^^rrrr]};
Str TR3Out = {r1r1
		l24 @73 o6 [[e-^fg^e- ^^rrrr]f^ga-^`cb^a-g^f e-^fg^e- ^^rrrr]};

Str TR4In = {};
Str TR4 = { @14 r1r2^4 l24 EP(127) v100 [3g`d]
		[4r1]
		[3r1] r2 l24 o5 v90 [dbgbgb]
		[4r1]
		[8r1] r2^4 v100 [3g`d]
		r1r2^4 l24 v100 [3g`d]
		[4r1]
		[3r1] r2 l24 o5 v90 [dbgbgb]
		[4r1]
		[8r1] EP.T(80,127,!1) v100 [12"a-c]};
Str TR4Out = {@14 r1r2^4 l24 v100 [3g`d]};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

Str TR6In = {};
Str TR6 = {@28
		// o4 l16 [[c^'`c`g'rg^'`c`e-'r]d^'`f`a-'rg^'`d`g'r c^'`c`g'rg^'`c`e-'r]
		//[4r1]
		//d^'`f`a-'rg^'`d`g'r '`c`e-'r'g`f'8'`c`e-'rrr
		o4 l24 v100 [3"g8'ce-'12'ce-'"g8'ce-'8]'ce-'12rrrr '"gd'4
		[["g8'ce-'12'ce-'"g8'ce-'8]d8'f`c'12'f`c'"g8'df'8 "g8'ce-'12'ce-'"g8'ce-'8]
		l8 ["b-'"b-df'][e-'e-gb-']["b-'"b-df'][c'ce-g']["b-'"b-df'][e-'e-gb-'][d'df`c']'dgb',,127rrr
		l24 [["g8'ce-'12'ce-'"g8'ce-'8]d8'f`c'12'f`c'"g8'df'8 "g8'ce-'12'ce-'"g8'ce-'8]
		Slur(3) M.T(0,80,!1^1) o4 g16&b-16&`c1^1-8
		[4r1] l8 [t.N(0,5)['"gc']['cf'][4'"b-d']] r1
		M(0) o4 t0 l24
		[3"g8'ce-'12'ce-'"g8'ce-'8]'ce-'12rrrr '"gd'4
		[["g8'ce-'12'ce-'"g8'ce-'8]d8'f`c'12'f`c'"g8'df'8 "g8'ce-'12'ce-'"g8'ce-'8]
		l8 ["b-'"b-df'][e-'e-gb-']["b-'"b-df'][c'ce-g']["b-'"b-df'][e-'e-gb-'][d'df`c']'dgb',,127rrr
		l24 [["g8'ce-'12'ce-'"g8'ce-'8]d8'f`c'12'f`c'"g8'df'8 "g8'ce-'12'ce-'"g8'ce-'8]
		l8 v105 [[8'"gc']['"a-d']['"bd'][4'"gc']] v110 [[8'"gce-']['"a-df']['"bdf'][4'"gce-']]};
Str TR6Out = {o4 l24 [3"g8'ce-'12'ce-'"g8'ce-'8]'ce-'12rrrr '"gd'4
		[["g8'ce-'12'ce-'"g8'ce-'8]d8'f`c'12'f`c'"g8'df'8 "g8'ce-'12'ce-'"g8'ce-'8]};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {l8 q60 @34 o3 rcde-fgb-b};
Str TR8 = {l8 q80 @34 o3 [4cr:"gr]"g^
		[[cr"gr]dr"grcr"gr]
		["b-rfre-rb-r:"b-rfrcrgr]dra-rgfe-d
		[[cr"gr]dr"grcr"gr]
		v90 [48c] v100 [ccff[4"b-]] a-1
		[4cr:"gr]"g^
		[[cr"gr]dr"grcr"gr]
		["b-rfre-rb-r:"b-rfrcrgr]dra-rgfe-d
		[[cr"gr]dr"grcr"gr]
		"gcde-ga-ge- dfe-dc"a-"a"b- | ca-gfe-dc"b- "g"b-dfe-cde- | `cb-a-gfe-dc "bdc"bc"g"a-"a | "b-cdfg`c`d`e- `g`f`e-`d`cfe-d };
Str TR8Out = {l8 q80 @34 o3 [4cr:"gr]"g^
		[[cr"gr]dr"grcr"gr]};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

Str TR10In = {l8 r[5'n40n49'] l24 n45n43n41'n35n46'r'n35n46'};
Str TR10 = {//l8 [8n35n42'n35n45''n40n42']
		//[EP(127)'n40n46'r1-8 rrrrr EP.T(96,127,!2^4)[3'n40n42']]
		//EP(127) n35n49'n35n45''n40n49'n35['n40n39n54']r
		EP(127) l24 [3'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]'n40n46'rrrrr [n45n43n41]
		[8'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]
		[7Sub{l8[4n51]}l24'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]l24 'n40n34n49'rrrrr 'n35n36'rn35n46rr
		[8'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]
		l8 [48v.N(80,100)'n35n51'] v100 [['n35n49''n40n49'][4'n35n49n54']] 'n35n49'r2-8 r4 l24 EP.T(80,127,!4) n40n40[n41n40]
		l24 EP(127) [3'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]'n40n46'rrrrr [n45n43n41]
		[8'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]
		[7Sub{l8[4n51]}l24'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]l24 'n40n34n49'rrrrr 'n35n36'rn35n46rr
		[8'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]
		//l8 [4[8'n35n40n46']]
		[16Sub{l8[4n51]}l24'n35n46'rr'n40n46'rn46'n35n46'rn46'n40n46'rr]
		'n35n41n49'rrrrr n58rrrrr EP.T(32,127,!4^8) [4'n35n40n46''n40n46''n40n46']};
Str TR10Out = {l24 [3'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]'n40n46'rrrrr [n45n43n41]
		[8'n35n42'rr'n40n46'rn46'n35n42'rn42'n40n46'rr]};

Str TR11In = {};
Str TR11 = {r1r1
		[4r1]
		[4r1]
		[4r1]
		@103 q100 Slur(3) VAR(4) [3"g16&"b-16&c1^1-8]};
Str TR11Out = {};

Str TR12In = {};
Str TR12 = {r1r1
		[4r1]
		[4r1]
		[4r1]
		@103 q100 o5 VAR(8) [3g2a2b-2b2]};
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 = (110,110,110,100,100,080,100,108,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(0) CHO(0) P(64) #Scr(TR1)
TR(2)  CH(2)  Voice(1) M(0) REV(0) CHO(0) P(48) #Scr(TR2)
TR(3)  CH(3)  Voice(1) M(0) REV(0) CHO(0) P(88) #Scr(TR3)
TR(4)  CH(4)  Voice(1) M(0) REV(0) CHO(0) P(96) #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(96) #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(52) #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(40) CHO(0) P(64) #Scr(TR11)
TR(12) CH(12) Voice(1) M(0) REV(40) 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);
