TrackName = {"Winter is Coming"};
Copyright = {"AMIO"};

/*

*/

Int bPlayTime = 0;
// 0 : 演奏時間を非表示
// 1 : 演奏時間を表示

Int Repeat = 2;
// 繰り返し回数を設定できます



Int WaveOut = 0;
// 0 : サクラ再生用
// 1 : TiMidity++ 変換用







//-----------------------------variables---------------------------------

Int In = 1;//イントロからメロディースタートまでの時間
Int Ltime = 36;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 6;//フェードアウトにかかる時間
Int Tmp = 100;//テンポ
Int Sig = 6;
Int SigBase = 8;

Int Ptime = (In+Ltime*Repeat+Fade)*Sig*240/(Tmp*SigBase);

//---------------------------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,SigBase);
IF (bPlayTime == 1) { PrintPlayTime(Ptime); }
ResetGM; r4^8 ResetGS; r4^8 TrackSync;

//----------------------------------strings-----------------------------------

Str TR1In = {l16 o5 "a"a"a^"a^"a^,70"b-^,70c^,70};
Str TR1 = {l16 [rrd,90cdrdrerf,90g frerdr c^^rgr gf+2^4-16,90 r2^4
		rrd,90cdrdrerf,90g g48,96f24rerdr c^^r"ar cd2^4-16,90 r2^4]
		[r2^4] r2^8 `d^ `c^a^fdc^rrrr
		[15r2^4] "a"a"a^"a^"a^,70"b-^,70c^,70};
Str TR1Out = {l16 rrd,90cdrdrerf,90g frerdr c^^rgr gf+2^4-16,90 r2^4
		rrd,90cdrdrerf,90g g48,96f24rerdr c^^r"ar cd2^4-16,90 r2^4};

Str TR2In = {l16 o5 "a"a"a^"a^"a^,70"b-^,70c^,70};
Str TR2 = {l16 [rrd,90cdrdrerf,90g frerdr c^^rgr gf+2^4-16,90 r2^4
		rrd,90cdrdrerf,90g g48,96f24rerdr c^^r"ar cd2^4-16,90 r2^4]
		[r2^4] r2^8 `d^ `c^a^fdc^rrrr
		[15r2^4] "a"a"a^"a^"a^,70"b-^,70c^,70};
Str TR2Out = {l16 rrd,90cdrdrerf,90g frerdr c^^rgr gf+2^4-16,90 r2^4
		rrd,90cdrdrerf,90g g48,96f24rerdr c^^r"ar cd2^4-16,90 r2^4};

Str TR3In = {};
Str TR3 = {};
Str TR3Out = {};

Str TR4In = {};
Str TR4 = { l16 q100 o6 [15r2^4] r4^8 rr'"ad'8'df'8
		'"gda'4'"b-g''"af''"b-g'4^8 r4^8 rr'"gc+'8'"b-f'8
		'"b-c+a-'4'"b-g''"a-f''"b-g'8^16rrr 'ceg'4^8,105 r4^8};
Str TR4Out = {};

Str TR4WIn = {};
Str TR4W = { l16 q100 o5 [15r2^4] r4^8 rr'"ad'8'df'8
		'"gda'4'"b-g''"af''"b-g'4^8 r4^8 rr'"gc+'8'"b-f'8
		'"b-c+a-'4'"b-g''"a-f''"b-g'8^16rrr 'ceg'4^8,105 r4^8};
Str TR4WOut = {};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

Str TR6In = {l16 o4 fff^f^f^g^a^};
Str TR6 = { l8 ["b-^r"f^rc^r"g^r [d^r"a^r] "b-^r"f^rc^r"g^r ["d^r"a^:r]"c]
		[4r2^4]};
Str TR6Out = {l8 "b-^r"f^rc^r"g^r [d^r"a^r] "b-^r"f^rc^r"g^r ["d^r"a^:r]"c};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {l16 o3 q70 fffrfrfrgrar};
Str TR8 = { q80 [4"b-^b-rb-r"f^frfr c^`cr`cr"g^grgr [d^`dr`dr"a^arar]]
		["g^grgr"g^drdr]"b-^b-rb-r"b-^frfr `c8g8e8c8r4
		[4"b-^b-rb-r"f^frfr c^`cr`cr"g^grgr : f^`fr`fre^`er`er d^`dr`dr "a^arar]
		f`f`f^`f^ `crb-rar "f"f"f^"f^ "f8"g8"a8};
Str TR8Out = {["b-^b-rb-r"f^frfr c^`cr`cr"g^grgr [d^`dr`dr"a^arar]]};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

Str TR10In = {l8 [4'n35n38n46']n40n40};
Str TR10 = { l8 [4 [7n35'n40n42n80''n40n42n80']n35:'n40n42''n40n42n81'] 'n40n46''n40n46'
		 [4 l8 'v100 n35n69 v70 n46'v100 'n40n42n82''n40n42n82'][l8'n35n46n69''n40n42n82''n40n42n82']
		 'n35n38n46'n40 l16 n47n45 l8 n41rr
		 [l8 [4n35'n40n42n83''n40n42n83'][4'n35n46''n40n42n83''n40n42n83']
		  l8 [4n35'n40n42n83''n40n42n83']:[3'n35n46''n40n42n83''n40n42n83']:n35'n40n42n83''n40n42n83'] [3n35'n40n42n83''n40n42n83']['n35n38n46'] l16 'n40n47'n45 };
Str TR10Out = {l8 [8[n35'n40n42n80''n40n42n80']]};

Str TR11In = {};
Str TR11 = {l16 y71(16) y73(80) y74(16) y75(80) VAR(16) p68 o6 [16r2^4]
		[3r2^4] r4^8 r4"b-c
		[d^^r"b-c  d^^r"b-c    d^ b-^aa-  g^^r dc+
		 c^^r"a"b- c^^r"a"b-   c^ `d^`cb- a^^r "b-c
		 d^^r"b-c  d^^r"b-c  : d^ b-^aa-  g^"b-^dc+
		 c^^^^r    r4^8        r4^8      r4"b-c]
		d^b-^ag e^f^g^  g^^ffr [3r4^8]};
Str TR11Out = {};

Str TR11WIn = {};
Str TR11W = {l16 y71(80) y73(64) y74(80) y75(64) VAR(16) q75 p68 o4 [16r2^4]
		[3r2^4] r4^8 r4"b-c
		[d^^r"b-c  d^^r"b-c    d^ b-^aa-  g^^r dc+
		 c^^r"a"b- c^^r"a"b-   c^ `d^`cb- a^^r "b-c
		 d^^r"b-c  d^^r"b-c  : d^ b-^aa-  g^"b-^dc+
		 c^^^^r    r4^8        r4^8      r4"b-c]
		d^b-^ag e^f^g^  g^^ffr [3r4^8]};
Str TR11WOut = {};

Str TR12In = {};
Str TR12 = {};
Str TR12Out = {};

Str TR13In = {};
Str TR13 = { o5 q100 EP(116) //[[r2^4]g4^8f+4^8e4^8d4c8[r2^4]d4^8g4^8f+2^4]
		 [[r2^4]'"ad'1^2[r2^4]'"ad'1^2]
		 [4r2^4]
		 EP(127)
		 [r2^4] f4^8e4^8d4^8r4^8
		 [r2^4] c4^8c+8"a8"f8"e8"d4r4^8
		 [r2^4] f4^8e4^8d4^8r4^8};
Str TR13Out = {EP(116) //[[r2^4]g4^8f+4^8e4^8d4c8[r2^4]d4^8g4^8f+2^4]
		 [r2^4]'"ad'1^2[r2^4]'"ad'1^2};

Str TR14In = {};
Str TR14 = { l4^8 o5 q100
		 // EP(100) [4[r2^4]'"ad'1^2]
		 // [16r2^4]
		 Voice(79)
		 o7
		 EP(90) M(16) y67(127) [[r2^4]g4^8f+4^8e4^8d4c8[r2^4]d4^8g4^8f+2^4]
		 [4r2^4]
		 EP(127) Voice(53) M(0) o5
		 [r2^4] '"f"ac''"e"gc''"d"f"a'r
		 [r2^4] '"f"ac'4^8'"e"ac+'4^8'"f"ad'4^8r4^8
		 [r2^4] '"f"ac''"e"gc''"d"f"a'r};
Str TR14Out = {l4^8 o5 q100
		 // EP(100) [4[r2^4]'"ad'1^2]
		 // [16r2^4]
		 Voice(79) o7
		 EP(90) [r2^4]g4^8f+4^8e4^8d4c8[r2^4]d4^8g4^8f+2^4};
		 
Str TR14WIn = {};
Str TR14W = { l4^8 o5 q100
		 // EP(100) [4[r2^4]'"ad'1^2]
		 // [16r2^4]
		 Voice(79) o5
		 EP(90) M(16) y67(127) [[r2^4]g4^8f+4^8e4^8d4c8[r2^4]d4^8g4^8f+2^4]
		 [4r2^4]
		 EP(127) Voice(53) M(0) o5
		 [r2^4] '"f"ac''"e"gc''"d"f"a'r
		 [r2^4] '"f"ac'4^8'"e"ac+'4^8'"f"ad'4^8r4^8
		 [r2^4] '"f"ac''"e"gc''"d"f"a'r};
Str TR14WOut = {l4^8 o5 q100
		 // EP(100) [4[r2^4]'"ad'1^2]
		 // [16r2^4]
		 Voice(79) o5
		 EP(90) [r2^4]g4^8f+4^8e4^8d4c8[r2^4]d4^8g4^8f+2^4};

Str TR15In = {};
Str TR15 = {l8 o6 q30 [4dfb-"b-b-f eg`cc`cg [df+a"aaf+]]};
Str TR15Out = {[dfb-"b-b-f eg`cc`cg [df+a"aaf+]]};

Str TR16In = {};
Str TR16 = {l16 o5 [16r2^4][4r2^4]
		[t.N(0,0,2,0,0,2,0)
		 "b-^['"b-f'r] "f^['"b-f'r] c^['cg'r] "g^['cg'r]
		 "f^['ca'r] "e^['cg'r] "d^['"af'r] "c^['"af'r]
		 "b-^['"b-f'r] "f^['"b-f'r] c^['cg'r] "g^['cg'r]:
		 "f^['"ac'r] "e^['"gc+'r] "d^['"fd'r] "c^['"f"a'r]]
		 ["f^['cf'r] : "c^['cf'r]]};
Str TR16Out = {};

//-----------------------------------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,085,100,100,100,080,116,068,080,080,066,056);//各トラックのメインボリューム
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(13) M(0) REV(0) CHO(0) P(64) #Scr(TR1) // A melo
TR(3)  CH(3)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR3)
TR(5)  CH(5)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR5)
TR(6)  CH(6)  Voice(59) M(0) REV(0) CHO(0) P(64) #Scr(TR6) // Tuba (bass)
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(48) #Scr(TR8) // bass
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(13) CH(13) Voice(49) M(0) REV(10) CHO(0) P(40) #Scr(TR13) // chorus 1
TR(15) CH(15) Voice(12) M(0) REV(0) CHO(0) P(92) #Scr(TR15) // vibraphone
TR(16) CH(16) Voice(26) M(0) REV(0) CHO(0) P(96) #Scr(TR16) // steel guitar

IF (WaveOut == 0) {
	TR(2)  CH(2)  Voice(22) M(0) REV(0) CHO(0) P(64) #Scr(TR2) // A melo
	TR(4)  CH(4)  Voice(19) M(0) REV(0) CHO(0) P(88) #Scr(TR4) // organ
	TR(11) CH(11) Voice(75) M(0) REV(30) CHO(0) P(52) #Scr(TR11) // C melo
	TR(12) CH(12) Voice(75) M(0) REV(30) CHO(0) P(76) t32 #Scr(TR11) // C melo (echo)
	TR(14) CH(14) Voice(53) M(0) REV(10) CHO(0) P(40) #Scr(TR14) // chorus 2
}
ELSE {
	TR(2)  CH(2)  Voice(24) M(0) REV(10) CHO(0) P(64) #Scr(TR2) // A melo
	TR(4)  CH(4)  Voice(19) M(0) REV(0) CHO(0) P(88) #Scr(TR4W) // organ
	TR(11) CH(11) Voice(79) M(0) REV(30) CHO(0) P(52) #Scr(TR11W) // C melo
	TR(12) CH(12) Voice(79) M(0) REV(30) CHO(0) P(76) t32 #Scr(TR11W) // C melo (echo)
	TR(14) CH(14) Voice(53) M(0) REV(10) CHO(0) P(40) #Scr(TR14W) // chorus 2
}

//-------------------------------others----------------------------------

Time(Out:1:0) FadeoutAll(Fade,Vols);
