TrackName = {"木枯らしのダンス"};
Copyright = {"AMIO"};

/*
	荒廃した乾田地帯に、木枯らしが吹く……という感じのイメージで。
	いいタイトルをつけるためにこの曲が何というジャンルに当てはまるのか知りたい。
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 4;//イントロからメロディースタートまでの時間
Int Ltime = 52;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
Int Tmp = 120;//テンポ
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(90,90,90,95,95,95,100,100,100,105,105,105, 110,110,110,0,95,0,95)};
#v1_2 = {v.N(90,90,90,95,95,95,100,100,100,105,105,105, 110,110,110,0,100,0,110)};
#v1_3 = {v.N(95,95,95,100,100,100, 100,100,100,100,100,100, 105,0,100,0,85)};

#v1_4 = {v.N(90,95,105,100,0,120,115,0, 100,100,100,100,100,100,105,100,0,85)};
#v1_5 = {v.N(90,95,105,100,0,125,115,0, 100,0,110,0,120)};
#v1_6 = {v.N(95,100,95,97,100,105,90)};

Str TR1In = {o4 v.Random(3) t_.Random(1)};
Str TR1 = { [l12 #v1_1 "g"b-ccde-e-fggb-`c l16 b-24`c24b-4-12ra-ra-2^16 :
		 l12 #v1_2 "g"b-dde-fga-b`c`d`e- l16 `d24`e-24`d4-12r`cr`e-2^16]
		 l12 #v1_3 "g"b-ddfa- l16 Div{ga-ga-gf}8^16gre-rc1^16
		
		[l16 #v1_4 c+4^8e-8f^c+ra-^gr Div{cc+cc+c"b-}8^16c^"b-r"g2^16 :
		 l16 #v1_5 c+4^8e-8f^c+ra-^gr e8^16rg^r`c2^16]
		#v1_6 "b-4d4"a-8"b-8c8e-8"g1
		
		[l12 #v1_1 "g"b-ccde-e-fggb-`c l16 b-24`c24b-4-12ra-ra-2^16 :
		 l12 #v1_2 "g"b-dde-fga-b`c`d`e- l16 `d24`e-24`d4-12r`cr`e-2^16]
		 l12 #v1_3 "g"b-ddfa- l16 Div{ga-ga-gf}8^16gre-rc1^16
		
		[r1]
		
		[l12 #v1_1 "a-"bc+c+e-eef+a-a-b`c+ l16 b24`c+24b4-12rara2^16 :
		 l12 #v1_2 "a-ce-e-ef+a-a`c`c+`e-`e l16 `e-24`e24`e-4-12r`c+r`e2^16]
		 l12 #v1_3 "a-ce-e-f+a l16 Div{a-aa-aa-f+}8^16a-rerc+1^16
		 
		[l16 #v1_4 d4^8e8f+^dra^a-r Div{c+dc+dc+"b}8^16c+^"br"a-2^16 :
		 l16 #v1_5 d4^8e8f+^dra^a-r f8^16ra-^r`c+2^16]
		#v1_6 "b4e-4"a8"b8c+8e8"a-1
		
		[l12 #v1_1 "a-"bc+c+e-eef+a-a-b`c+ l16 b24`c+24b4-12rara2^16 :
		 l12 #v1_2 "a-ce-e-ef+a-a`c`c+`e-`e l16 `e-24`e24`e-4-12r`c+r`e2^16]
		 l12 #v1_3 "a-ce-e-f+a l16 Div{a-aa-aa-f+}8^16a-rerc+1^16
		 };
Str TR1Out = {[l12 #v1_1 "g"b-ccde-e-fggb-`c l16 b-24`c24b-4-12ra-ra-2^16 :
		 l12 #v1_2 "g"b-dde-fga-b`c`d`e- l16 `d24`e-24`d4-12r`cr`e-2^16]
		 l12 #v1_3 "g"b-ddfa- l16 Div{ga-ga-gf}8^16gre-rc1^16};

Str TR2In = {};
Str TR2 = {};
Str TR2Out = {};

Str TR3In = {};
Str TR3 = {};
Str TR3Out = {};

Str TR4In = {};
Str TR4 = {};
Str TR4Out = {};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

Str TR6In = {};
Str TR6 = {};
Str TR6Out = {};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {o3 l4 v.Random(3) t_.Random(1) q.Random(5) [8c"g]};
Str TR8 = {[c"gc"g fcfc dd"g"g c"gc"g]

		[3c+"a-c+"a-c"gc"g]"b-"b-"a-"a-"g"g"gg8d8
		
		[c"gc"g fcfc dd"g"g c"gc:"g]"g8c8
		
		[4c+"a-]
		
		[c+"a-c+"a- f+c+f+c+ e-e-"a-"a- c+"a-c+"a-]
		
		[3d"ad"ac+"a-c+"a-]"b"b"a"a"a-"a-"a-a-8e-8
		
		[c+"a-c+"a- f+c+f+c+ e-e-"a-"a- c+"a-c+:"a-]"a-8c+8
		
		[4c"g]};
Str TR8Out = {[c"gc"g fcfc dd"g"g c"gc"g]};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

Str TR10In = {v.Random(4) l16 [4Sub{v100[4n36rrr]}Sub{v.C(!4,100,90)[4rrn46r]}v100rrn38rrrn38n38,,,70rrn38rrn38rn38,,,80]};
Str TR10 = {l16 [8Sub{v100[4n36rrr]}Sub{v100[4rrn42r]}v80rrn38rrrn38n38,,,60rrn38rrn38rn38,,,70]

		l16 [6Sub{v100[4rrn85r]}Sub{v100[4n36rrr]}Sub{v.C(!4,100,90)[4rrn46r]}v100rrn38rrrn38n38,,,70rrn38rrn38rn38,,,80]
		[Sub{v100[4n36rrr]}Sub{v100[4rrn42r]}v80rrn38rrrn38n38,,,60rrn38rrn38rn38,,,70]
		
		l16 [8Sub{v100[4n36rrr]}Sub{v100[4rrn42r]}v80rrn38rrrn38n38,,,60rrn38rrn38rn38,,,70]
		
		l16 [Sub{v110[4rrn39r]}Sub{v100[4n36rrr]}Sub{v.C(!4,100,90)[4rrn46r]}v100rrn38rrrn38n38,,,70rrn38rrn38rn38,,,80]
		
		l16 [8Sub{v100[4n36rrr]}Sub{v.C(!4,100,90)[4rrn46r]}v100rrn38rrrn38n38,,,70rrn38rrn38rn38,,,80]
		
		l16 [6Sub{v100[4rrn85r]}Sub{v100[4n36rrr]}Sub{v.C(!4,100,90)[4rrn46r]}v100rrn38rrrn38n38,,,70rrn38rrn38rn38,,,80]
		[Sub{v100[4n36rrr]}Sub{v100[4rrn42r]}v80rrn38rrrn38n38,,,60rrn38rrn38rn38,,,70]
		
		l16 [8Sub{v100[4n36rrr]}Sub{v100[4rrn42r]}v80rrn38rrrn38n38,,,60rrn38rrn38rn38,,,70]
		
		l16 [Sub{v110[4rrn39r]}Sub{v100[4n36rrr]}Sub{v.C(!4,100,90)[4rrn46r]}v100rrn38rrrn38n38,,,70rrn38rrn38rn38,,,80]};
Str TR10Out = {l16 [8Sub{v100[4n36rrr]}Sub{v100[4rrn42r]}v80rrn38rrrn38n38,,,60rrn38rrn38rn38,,,70]};

#T = {t_.N(0,2,4)}

Str TR11In = {o4 t_.Random(1) v.Random(5) q.Random(5) l16 [#T'e-g`c'r#T'e-g`c'8r#T'e-g`c'8#T'e-gb'r#T'e-gb'8r[#T'e-gb'r]
		#T'e-gb-'r#T'e-gb-'8r#T'e-gb-'8#T'e-gb'r#T'e-gb'8r[#T'e-gb'r]] };
Str TR11 = {[8r1]
		
		rr#T'c+fa-'8r[#T'c+fa-'r]#T'c+fa-'8r[#T'c+fa-'r] rr#T'ce-g'8r[#T'ce-g'r]#T'ce-g'8r[#T'ce-g'r]
		rr#T'c+fa-'8r[#T'c+fa-'r]#T'c+fa-'8r[#T'c+fa-'r] rr#T'ceg'8r[#T'ceg'r]#T'ce-g'8r[#T'ceg'r]
		rr#T'c+fa-'8r[#T'c+fa-'r]#T'c+fa-'8r[#T'c+fa-'r] rr#T'ce-g'8r[#T'ce-g'r]#T'ce-g'8r[#T'ce-g'r]
		rr#T'"b-df'8[r#T'"b-df'] rr#T'"a-cf'8[r#T'"a-cf'] rr#T'"g"bf'8[r#T'"g"bf']r#T'"g"bf'8r[#T'"g"bf'r]
		
		[rr#T'ce-g'8[r#T'ce-g'] r#T'ce-g'8r[#T'ce-g'r]
		 rr#T'cfa-'8[r#T'cfa-'] r#T'cfa-'8r[#T'cfa-'r]
		 rr#T'dfa-'8[r#T'dfa-'] r#T'"bdg'8r[#T'"bdg'r]
		 rr#T'ce-g'8[r#T'ce-g'] r#T'ce-g'8r[#T'ce-g'r]]
		 
		[rr#T'c+ea-'8[r#T'c+ea-'] r#T'c+ea-'8r[#T'c+ea-'r]]
		
		[rr#T'c+ea-'8[r#T'c+ea-'] r#T'c+ea-'8r[#T'c+ea-'r]
		 rr#T'c+f+a'8[r#T'c+f+a'] r#T'c+f+a'8r[#T'c+f+a'r]
		 rr#T'e-f+a'8[r#T'e-f+a'] r#T'ce-a-'8r[#T'ce-a-'r]
		 rr#T'c+ea-'8[r#T'c+ea-'] r#T'c+ea-'8r[#T'c+ea-'r]]
		 
		rr#T'df+a'8r[#T'df+a'r]#T'df+a'8r[#T'df+a'r] rr#T'c+ea-'8r[#T'c+ea-'r]#T'c+ea-'8r[#T'c+ea-'r]
		rr#T'df+a'8r[#T'df+a'r]#T'df+a'8r[#T'df+a'r] rr#T'c+fa-'8r[#T'c+fa-'r]#T'c+fa-'8r[#T'c+fa-'r]
		rr#T'df+a'8r[#T'df+a'r]#T'df+a'8r[#T'df+a'r] rr#T'c+ea-'8r[#T'c+ea-'r]#T'c+ea-'8r[#T'c+ea-'r]
		rr#T'"be-f+'8[r#T'"be-f+'] rr#T'"ac+f+'8[r#T'"ac+f+'] rr#T'"a-cf+'8[r#T'"a-cf+']r#T'"a-cf+'8r[#T'"a-cf+'r]
		 
		 [rr#T'c+ea-'8[r#T'c+ea-'] r#T'c+ea-'8r[#T'c+ea-'r]
		 rr#T'c+f+a'8[r#T'c+f+a'] r#T'c+f+a'8r[#T'c+f+a'r]
		 rr#T'e-f+a'8[r#T'e-f+a'] r#T'ce-a-'8r[#T'ce-a-'r]
		 rr#T'c+ea-'8[r#T'c+ea-'] r#T'c+ea-'8r[#T'c+ea-'r]]
		 
		 [rr#T'ce-g'8[r#T'ce-g'] r#T'ce-g'8r[#T'ce-g'r]]};
Str TR11Out = {};

Str TR12In = {};
Str TR12 = {};
Str TR12Out = {};

Str TR13In = {};
Str TR13 = {[8r1]

		o6 l16 q70 Slur(1)
		//[3EP.T(64,127,!1)g&a-&g&a-&g&a-&g&a-&g&a-&g&a-&g&a-&g&a- 
		//  EP.T(127,64,!1)f&g&f&g&f&g&f&g&f&g&f&g&f&g&f&g]
		y67(127) v100 [3EP.T(64,127,!1)[8ga-]EP.T(127,64,!1)[8fg]]
		r1r1
		
		[8r1]
		
		EP.T((64,127,!1),(127,0,!1^1)) q90
		l16 v.N(90,105,95,70) [8a-aa-f+]
		
		[4a-aa-f+]
		[7r1]
		
		o6 l16 q70 Slur(1)
		//[3EP.T(64,127,!1)a-&a&a-&a&a-&a&a-&a&a-&a&a-&a&a-&a&a-&a 
		//  EP.T(127,64,!1)f+&a-&f+&a-&f+&a-&f+&a-&f+&a-&f+&a-&f+&a-&f+&a-]
		y67(127) v100 [3EP.T(64,127,!1)[8a-a]EP.T(127,64,!1)[8f+a-]]
		r1r1
		
		[8r1]
		
		[r1]};
Str TR13Out = {};

Str TR14In = {};
Str TR14 = {};
Str TR14Out = {};

Str TR15In = {l1 q100 [EP.T((32,127,!1),(127,32,!1))'ce-g'1^1]};
Str TR15 = {[8r1]
		
		l1 q100
		EP.T(32,127,!1)'c+fa-'EP.T(127,32,!1)'ce-g'
		EP.T(32,127,!1)'c+fa-'EP.T(127,32,!1)'ceg'
		EP.T(32,127,!1)'c+fa-'EP.T(127,32,!1)'ce-g'
		r1r1
		
		[8r1]
		
		EP.T((32,127,!1),(127,127,!2^4),(127,32,!4)) 'c+ea-'1^1
		
		[8r1]
		
		l1 q100
		EP.T(32,127,!1)'df+a'EP.T(127,32,!1)'c+ea-'
		EP.T(32,127,!1)'df+a'EP.T(127,32,!1)'c+fa-'
		EP.T(32,127,!1)'df+a'EP.T(127,32,!1)'c+ea-'
		r1r1
		
		[8r1]
		
		EP.T((32,127,!1),(127,127,!2^4),(127,32,!4)) 'ce-g'1^1};
Str TR15Out = {};

Str TR16In = {o6 l16 v.N(110,100,90,80,70,80,90,100) P.N(80,72,56,40,38,52,78,96) 
		  [`cb-gce-fg`c bge-ce-cgb b-ge-ce-fg`c bge-ce-cgb]};
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,072,100,100,100,100,100,110,100,100,065,040,076,045,100,054);//各トラックのメインボリューム
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(26) M(0) REV(0) CHO(0) P(32) #Scr(TR1)
TR(2)  CH(2)  Voice(26) M(0) REV(0) CHO(0) P(96) t32 #Scr(TR1)
TR(3)  CH(3)  Voice(1) M(0) REV(0) CHO(0) P(64) #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(1) M(0) REV(0) CHO(0) P(64) #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(32) #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(26) M(0) REV(0) CHO(0) P(96) #Scr(TR11)
TR(12) CH(12) Voice(26) M(0) REV(0) CHO(0) P(112) t32 #Scr(TR11)
TR(13) CH(13) Voice(75) M(0) REV(0) CHO(40) P(48) #Scr(TR13)
TR(14) CH(14) Voice(75) M(0) REV(0) CHO(40) P(80) t32 #Scr(TR13)
TR(15) CH(15) Voice(96) M(0) REV(0) CHO(40) P(64) #Scr(TR15)
TR(16) CH(16) Voice(12) M(0) REV(0) CHO(0) P(80) #Scr(TR16)

//-------------------------------others----------------------------------

Time(Out:1:0) FadeoutAll(Fade,Vols);
