TrackName = {"夜の踊り子"};
Copyright = {"AMIO"};

/*
	学生時代の脳内ストックから一つ。
	
	※一部音程がおかしく感じるときはピッチベンドがうまく機能していません。
	改めて再生しなおすと改善することがあります。
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 1;//イントロからメロディースタートまでの時間
Int Ltime = 51;//1ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
Int Tmp = 150;//テンポ
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;

/* ↓この部分は騎士王321氏のMMLより拝借いたしました。ありがとうございます。 */

//リズムトラックの拡張です。それぞれの行の『//』を外すことによって有効になります。
//CH(11) SysEx$ = f0,41,10,42,12,{40,1a,15,02},f7;//トラック11
//CH(12) SysEx$ = f0,41,10,42,12,{40,1b,15,02},f7;//トラック12
//CH(13) SysEx$ = f0,41,10,42,12,{40,1c,15,02},f7;//トラック13
//CH(14) SysEx$ = f0,41,10,42,12,{40,1d,15,02},f7;//トラック14

//音の基準の高さを決めるチューニング(0~127)です。どれかひとつを有効にしておきましょう
//GSScaleTuning(40,40,40,40,40,40,40,40,40,40,40,40);//古風な低めのチューニング
GSScaleTuning(64,64,64,64,64,64,64,64,64,64,64,64);//ごく一般的なチューニング
//GSScaleTuning(80,80,80,80,80,80,80,80,80,80,80,80);//YMO風の高めのチューニング

//知る人ぞ知るTW-Music2のパラメータ設定。リバーブとコーラスを扱います
//ReverbSetting    Time Dpth High
CuePoint={"TwmParam(120,120, 60)"}//リバーブ。各値は下記を参照
//ChorusSetting     Wave Mix Dpth FB Freq Dly Phs
CuePoint={"TwmChorus(1,127, 30, 30, 30, 30,  1)"}//コーラス。各値は下記を参照


//----------------------------------strings-----------------------------------

Str TR1In = {l16 r2 rrcrf^ga-1};
Str TR1 = {l16 r1 g4g^a-^ b-^^a-^^g^ g^^cc^^^ rrrrrre-c
		c+4c+^e-^ f^^e-^^c+^ "b-^^cc+^^^ ^^^^rrrr rrrrrrff f^^c+^^f^
		e^^fg^^^ ^^^^r4 r1
		[7r1] r2 rrcrf^ga-1
		r g4g^a-^ b-^^a-^^g^ g^^cc^^^ rrrrrre-c
		c+4c+^e-^ f^^e-^^c+^ "b-^^cc+^^^ ^^^^rrrr rrrrrrff f^^c+^^f^
		e^^fg^^^ ^^^^r4 r1
		[8r1]
		
		r2 rrcrf^ga-1
		
		r g4g^a-^ b-^^a-^^g^ g^^cc^^^ rrrrrre-c
		c+4c+^e-^ f^^e-^^c+^ "b-^^cc+^^^ ^^^^rrrr rrrrrrff f^^c+^^f^
		e^^fg^^^ ^^^^r4 r1
		[8r1]
		
		l12 c^^fff gra-f^r `c^rf^r f^rg^^ a-1};
Str TR1Out = {l16 r1 g4g^a-^ b-^^a-^^g^ g^^cc^^^ rrrrrre-c
		c+4c+^e-^ f^^e-^^c+^ "b-^^cc+^^^ ^^^^rrrr rrrrrrff f^^c+^^f^
		e^^fg^^^ ^^^^r4 r1};

Str TR2In = {l16 r2 rr"a-rc+^e-f1};
Str TR2 = { l16 r1 e-4e-^f^ g^^f^^e-^ e-^^"a-"a-^^^ rrrrrrc"a-
		"f4"f^"a-^ c+^^c^^"b-^ "f^^"c+"f^^^ ^^^^rrrr rrrrrr"b-"b- "b-^^"f^^"b-^
		"g^^"b-c^^^ ^^^^r4 r1
		[7r1] r2 rr"a-rc+^e-f1
		r e-4e-^f^ g^^f^^e-^ e-^^"a-"a-^^^ rrrrrrc"a-
		"f4"f^"a-^ c+^^c^^"b-^ "f^^"c+"f^^^ ^^^^rrrr rrrrrr"b"b "b^^"g^^"b^
		"g^^"b-c^^^ ^^^^r4 r1
		[8r1]
		
		r2 rr"a-rc+^e-f1
		
		r e-4e-^f^ g^^f^^e-^ e-^^"a-"a-^^^ rrrrrrc"a-
		"f4"f^"a-^ c+^^c^^"b-^ "f^^"c+"f^^^ ^^^^rrrr rrrrrr"b"b "b^^"g^^"b^
		"g^^"b-c^^^ ^^^^r4 r1
		[8r1]
		
		l12 "a-^^ccc e-rfc^r f^rc^r c^r"b-^^ f1};
Str TR2Out = {l16 r1 e-4e-^f^ g^^f^^e-^ e-^^"a-"a-^^^ rrrrrrc"a-
		"f4"f^"a-^ c+^^c^^"b-^ "f^^"c+"f^^^ ^^^^rrrr rrrrrr"b-"b- "b-^^"f^^"b-^
		"g^^"b-c^^^ ^^^^r4 r1};

Str TR3In = {l16 o6 r1};
Str TR3 = { [7r1] r2 rrcrf^ga-8&a&a-&a&a-&a&a-&a&a-&a&a-&a&a-&a&a-&a,50
		g4g^,70g32&a-16^32 a-32&b-8^32a-^^g^ g^^cc^^^ rrrrrre-c
		c32&c+4-32c+^c+32&e-16^32 e-32&f8^32e-^^c+^ "b-^^cc+^^^ rrrrrre&f,95 f32&e4-32,95e^f^,70 g^^f^^e-^
		e-^^ff^^^ r1^2
		[7r1] r2 rrcrf^ga-8&a&a-&a&a-&a&a-&a&a-&a&a-&a&a-&a&a-&a,50
		g4g^,70g32&a-16^32 a-32&b-8^32a-^^g^ g^^cc^^^ rrrrrre-c
		c32&c+4-32c+^c+32&e-16^32 e-32&f8^32e-^^c+^ "b-^^cc+^^^ rrrrrre&f,95 f32&e4-32,95e^f^,70 g^^f^^e-^
		e-^^ff^^^ r1^2
		
		r1
		
		[7r1] r2 rrcrf^ga-8&a&a-&a&a-&a&a-&a&a-&a&a-&a&a-&a&a-&a,50
		g4g^,70g32&a-16^32 a-32&b-8^32a-^^g^ g^^`c`c^^^ rrrrrrb-g
		g32&a-4-32a-^b-^ b-32&`c8^32b-^^a-^ b-^^`f`f^^^ rrrrrr`c+&`f,95 `e^`c^,70`c^`c+^,105,95 `c+32&`c8^32b-^^a-^
		g^^ff^^^ r1^2};
Str TR3Out = {};

Str TR4In = {};
Str TR4 = {};
Str TR4Out = {};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

Str TR6In = {};
Str TR6 = {l16 o5 q50 [7r1] `crrb-rra-r grrrrrrr [7r1] `crra-rrgr frrrrrrr
		[7r1] `crrb-rra-r grrrrrrr [8r1]
		
		//``crr`a-rr`gr `frrrrrrr
		r1
		
		[7r1] `crrb-rra-r grrrrrrr
		[6r1] l12 `frr`f`f`f `e-rr`e-rr `c+rr`c+rr `crr`crr};
Str TR6Out = {l16 o4 [7r1] `crrb-rra-r grrrrrrr};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {r1};
Str TR8 = {l16 o3
		b-4f4b-^^f^^e^ e-4b-4e-^^f^^g^ a-4e-4a-^^g^^e-^ c+4a-4c+^^a-^^c+^
		["b-4f4b-^^f^^f^] c4g4`c^^g^^g^ c2&32"g4r4
		b-4f4b-^^f^^e^ e-4b-4e-^^f^^g^ a-4e-4a-^^g^^e-^ c+4a-4c+^^a-^^c+^
		g4c+4g^^c+^^c+^ c4g4`c^^g^^g^ f4c4f^^c^^c^ "f2&"e4r4
		
		b-4f4b-^^f^^e^ e-4b-4e-^^f^^g^ a-4e-4a-^^g^^e-^ c+4a-4c+^^a-^^c+^
		"b-4f4b-^^f^^f^ "b4f4b^^f^^f^ c4g4`c^^g^^g^ c2&32"g4r4
		b-4f4b-^^f^^e^ e-4b-4e-^^f^^g^ a-4e-4a-^^g^^e-^ c+4a-4c+^^a-^^c+^
		g4c+4g^^c+^^c+^ c4g4`c^^g^^g^ ["f4c4f^^c^^c^]
		
		f2&4c2
		
		b-4f4b-^^f^^e^ e-4b-4e-^^f^^g^ a-4e-4a-^^g^^e-^ c+4a-4c+^^a-^^c+^
		"b-4f4b-^^f^^f^ "b4f4b^^f^^f^ c4g4`c^^g^^g^ c2&32"g4r4
		b-4f4b-^^f^^e^ e-4b-4e-^^f^^g^ a-4e-4a-^^g^^e-^ c+4a-4c+^^a-^^c+^
		g4c+4g^^c+^^c+^ c4g4`c^^g^^g^ //f4c4f^^c^^c^ "f2&"e2
		l12 f^rff^ e-^re-^r c+^rc+^r c^rc^r
		
		"f1^1//`f2`e-2`c+2`c2
		};
Str TR8Out = {l16 o3
		b-4f4b-^^f^^e^ e-4b-4e-^^f^^g^ a-4e-4a-^^g^^e-^ c+4a-4c+^^a-^^c+^
		["b-4f4b-^^f^^f^] c4g4`c^^g^^g^ c2&32"g2};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

Str TR10In = {l16 r1};
Str TR10 = {l16 EP(127)
		[4 Sub{n49} Sub{rrn46r[3n42n42n46r]}Sub{[4n35rrr]}[4rrn38r]
		   [6Sub{rrn46r[3n42n42n46r]}Sub{[4n35rrr]}[4rrn38r]] :
		   'n35n38n46'rrn42rrn42r n42rrrrrrr
		]
		Sub{rrn46r[3n42n42n46r]}Sub{[4n35rrr]}[4rrn38r]
		
		'n35n38n49'1
		
		Sub{n49} Sub{rrn46r[3n42n42n46r]}Sub{[4n35rrr]}[4rrn38r]
		[6Sub{rrn46r[3n42n42n46r]}Sub{[4n35rrr]}[4rrn38r]] 
		'n35n38n46'rrn42rrn42r n42rrrrrrr
		Sub{n49} Sub{rrn46r[3n42n42n46r]}Sub{[4n35rrr]}[4rrn38r]
		[5Sub{rrn46r[3n42n42n46r]}Sub{[4n35rrr]}[4rrn38r]] 
		
		l12 [Sub{[n41rr[3n41] [n41rr]]}Sub{[4n35rr]}[4rrn46,,,80]]
		
		l16 'n35n38n49'4 EP.T(0,127,!1^2^4) [28'n38n41'16]};
Str TR10Out = {l16 EP(127)
		   Sub{n49} Sub{rrn46r[3n42n42n46r]}Sub{[4n35rrr]}[4rrn38r]
		   [6Sub{rrn46r[3n42n42n46r]}Sub{[4n35rrr]}[4rrn38r]] 
		   'n35n38n46'rrn42rrn42r n42rrrrrrr};

Str TR11In = {};
Str TR11 = {l16 o6
		[4a-fc+f][4ge-ce-][4ge-ce-][4a-fc+f][8fc+"b-c+][4gece]crr"b-rr"a-r "grrrrrrr
		[4a-fc+f][4ge-ce-][4ge-ce-][4a-fc+f][4fc+"b-c+][4gece][4fc"a-f]crr"a-rr"gr "frrrrrrr
		[4a-fc+f][4ge-ce-][4ge-ce-][4a-fc+f][4fc+"b-c+][4fc+"bc+][4gece]crr"b-rr"a-r "grrrrrrr
		[4a-fc+f][4ge-ce-][4ge-ce-][4a-fc+f][4fc+"b-c+][4gece][8fc"a-f]
		
		r1
		
		[4a-fc+f][4ge-ce-][4ge-ce-][4a-fc+f][4fc+"b-c+][4fc+"bc+][4gece]crr"b-rr"a-r "grrrrrrr
		[4a-fc+f][4ge-ce-][4ge-ce-][4a-fc+f][4fc+"b-c+][4gece]
		['"c"f'4]['""b-"e-'4]['""a-"c+'4]['""g"c'4]};
Str TR11Out = {l16 o6
		[4a-fc+f][4ge-ce-][4ge-ce-][4a-fc+f][8fc+"b-c+][4gece]crr"b-rr"a-r "grrrrrrr};

Str TR12In = {};
Str TR12 = {l1 q100 o4 [b-e-a-c+:"b-1^1cr]gcfr
		[b-e-a-c+:"b-"bcr]gcf1^1
		
		r
		
		[b-e-a-c+:"b-"bcr]gc};
Str TR12Out = {l1 q100 o4 b-e-a-c+"b-1^1cr};

Str TR13In = {};
Str TR13 = {l16 q100 
		EP(127) '"b-c+a-'2a-^^g^^f^ EP.T(127,0,!1)'"b-e-'1
		EP(127) '"a-cg'2g^^f^^e-^ EP.T(127,0,!1)'"a-c+'1
		EP(127) '"g"b-f'1^1 'ceg'1r1
		EP(127) '"b-c+a-'2a-^^g^^f^ EP.T(127,0,!1)'"b-e-'1
		EP(127) '"a-cg'2g^^f^^e-^ EP.T(127,0,!1)'"a-c+'1
		EP(127) '"g"b-f'2f^^e-^^c+^ EP.T(127,0,!1)'"gc'1
		EP(127) '"a-cf'1r1
		
		EP(127) '"b-c+a-'2a-^^g^^f^ EP.T(127,0,!1)'"b-e-'1
		EP(127) '"a-cg'2g^^f^^e-^ EP.T(127,0,!1)'"a-c+'1
		EP(127) '"g"b-f'1'"g"bf'1 'ceg'1r1
		EP(127) '"b-c+a-'2a-^^g^^f^ EP.T(127,0,!1)'"b-e-'1
		EP(127) '"a-cg'2g^^f^^e-^ EP.T(127,0,!1)'"a-c+'1
		EP(127) '"g"b-f'2f^^e-^^c+^ EP.T(127,0,!1)'"gc'1
		EP.T(127,64,!1^1) '"a-cf'1^1
		
		r1
		
		EP(127) '"b-c+a-'2a-^^g^^f^ EP.T(127,0,!1)'"b-e-'1
		EP(127) '"a-cg'2g^^f^^e-^ EP.T(127,0,!1)'"a-c+'1
		EP(127) '"g"b-f'1'"g"bf'1 'ceg'1r1
		EP(127) '"b-c+a-'2a-^^g^^f^ EP.T(127,0,!1)'"b-e-'1
		EP(127) '"a-cg'2g^^f^^e-^ EP.T(127,0,!1)'"a-c+'1
		EP(127) '"g"b-f'2f^^e-^^c+^ EP.T(127,0,!1)'"gc'1
		};
Str TR13Out = {l16 q100 
		EP(127) '"b-c+a-'2a-^^g^^f^ EP.T(127,0,!1)'"b-e-'1
		EP(127) '"a-cg'2g^^f^^e-^ EP.T(127,0,!1)'"a-c+'1
		EP(127) '"g"b-f'1^1 'ceg'1r1};

Str TR14In = {};
Str TR14 = {};
Str TR14Out = {};

Str TR15In = {};
Str TR15 = {};
Str TR15Out = {};

Str TR16In = {};
Str TR16 = {[32r1]
		o3 v110 Slur(0,-!16) a-4^8^16&g16&f2};
Str TR16Out = {};

//-----------------------------------Tracks--------------------------------------

/* Track      001,002,003,004,005,006,007,008,009,010,011,012,013,014,015,016 */
Array Vols = (110,100,100,080,100,080,100,100,100,100,080,100,074,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(62) M(0) REV(30) CHO(0) P(48) o5 #Scr(TR1)
TR(2)  CH(2)  Voice(62) M(0) REV(30) CHO(0) P(48) #Scr(TR2)
TR(3)  CH(3)  Voice(76) M(0) REV(30) CHO(0) P(80) #Scr(TR3)
TR(4)  CH(4)  Voice(30) M(0) REV(30) CHO(0) P(48) o4 #Scr(TR1)
TR(5)  CH(5)  Voice(1) M(0) REV(0) CHO(0) P(64) #Scr(TR5)
TR(6)  CH(6)  Voice(46) M(0) REV(10) CHO(0) P(32) #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(72) #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(13) M(0) REV(0) CHO(0) P(104) #Scr(TR11)
TR(12) CH(12) Voice(53) M(0) REV(30) CHO(10) P(64) #Scr(TR12)
TR(13) CH(13) Voice(51) M(0) REV(30) CHO(40) P(104) #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(59) M(0) REV(20) CHO(20) P(88) #Scr(TR16)

//-------------------------------others----------------------------------

Time(Out:1:0) FadeoutAll(Fade,Vols);