TrackName = {"Dreaming of You -Bossa Nova REMIX-"};
Copyright = {"AMIO"};

/*
	練習用に、過去作 Dreaming of You (http://oto.chu.jp/mmlbbs6/post.php?mml_id=1554) の
	ボサノバ風アレンジを作ってみました。
	
*/



Int Repeat = 2;
// 繰り返し回数を設定できます







//-----------------------------variables---------------------------------

Int In = 4;//イントロからメロディースタートまでの時間
Int Ltime = 52;//１ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
Int Tmp = 164;//テンポ
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 = {l8 o6};
Str TR1 = {[rre-d^e-^d ^c"b-c"b-^^^ rre-d^e-^d ^e-^f^^e-f
		g^e-f^c^^ ^^^^rr`e-`f `g^`e-`f^`c^^ ^^^^^^rr]
		
		rrcg^c^f  ^e-^d^e-d"b- "g1^1
		rrcg^c^d  ^e-^f^dcd    c^^"b-^^^^ ^^^^^^^^
		rrcg^c^f  ^e-^d^e-d"b- c^d"b-^^^^ ^^"b-^"a^"b-^
		c^^^^cde- ^^^^e-fgf    ^^^^fga-`c ^b^^^^^g24a-24b-24
		
		`c^gf^e-^f ^^^^^"b-e-f g^ga-f^fg    fe-ce-^^^^
		`c^gf^e-^f ^^^^^b-`cg  ^^^^ga-b-`c+ ^`c^^^^c^
		g^ff^g^e-  ^dcd^^b-^   g^a-f^g^f    ^e^^^^Sub{"g^}c^
		Sub{e-^"a-"a-^"b-^c ^c^d^^ce- ^^^^^^^^}
		g^cc^d^e-  ^e-^f^^e-g  ^^^^^^^^     rrf^e-^d^
		
		d1^1 r1^1
		};
Str TR1Out = {rre-d^e-^d ^c"b-c"b-^^^ rre-d^e-^d ^e-^f^^e-f
		g^e-f^c^^ ^^^^rr`e-`f `g^`e-`f^`c^^ ^^^^^^rr};

#T2_1 = {t.N(-4,0)};
#T2_2 = {t.N(-4,0,4)};
#MR   = {'#?1'r['#?1']r[3'#?1'r]['#?1']r'#?1'r};
#MR2  = {'#?1'r['#?1']r'#?1'r['#?2'r]['#?2']r'#?2'r};
#MR2h = {'#?1'r['#?1']r'#?1'r'#?2'};

Str TR2In = {l1^1 o6 q75 v100 [#T2_1'"b-d']};
Str TR2 = { v100
		[#T2_1'"b-d'][#T2_1'ce-'][#T2_1'"b-d']#T2_1'ce-'#T2_1'ce-'

		#T2_1'"a-c'1#T2_1'"b-d'1#T2_1'"b-e-'
		#T2_1'"a-c'1#T2_1'"b-d'1
		// #T2_1'"b-e-'1#T2_1'"b-c+'1
		t.N(-4,0,0)Sub{"b-1^1}e-1c+1
		#T2_1'"a-c'1#T2_1'"b-d'1#T2_1'"b-e-'
		#T2_1'"a-c' 
		// #T2_1'"b-f'1 #T2_1'"bf'1
		#T2_1 '"bf'
		
		@13 t0 l8 v90 q60
		#MR2({e-a-},{c+a-})#MR2({dg},{cg})#MR2({e-a-},{c+a-})#MR2({dg},{cg})
		#MR2({cf},{"b-f})#MR2({"bf},{cg})
		#MR2({"a-c},{"b-d})#MR2h({ce-},{df})r1
		// @12 l1 v100 #T2_2'"f"a-c'#T2_2'"g"b-d'#T2_2'"a-ce-'r1
		
		@12 l1^1 q75 [#T2_1'"b-d'] };
Str TR2Out = {v100[#T2_1'"b-d'][#T2_1'ce-']};

Str TR3In = {l8 o6 q50};
Str TR3 = {[16r1]

		[16r1]
		
		`c^gf^e-^f ^^^^^"b-e-f g^ga-f^fg    fe-ce-^^^^
		`c^gf^e-^f ^^^^^b-`cg  ^^^^ga-b-`c+ ^`c^^^^c^
		g^ff^g^e-  ^dcd^^b-^   g^a-f^g^f    ^e^^^^c^
		g^cc^d^e-  ^e-^f^^e-g  ^^^^^^^^     rrf^e-^d^
		
		d1^1 r1^1};
Str TR3Out = {};

Str TR4In = {};
Str TR4 = {};
Str TR4Out = {};

Str TR5In = {};
Str TR5 = {};
Str TR5Out = {};

#T    = {t.N(0,2,4)};
#T_   = {t.N(4,2,0)};
#GR   = {#T'#?1'r#T'#?1'4r#T'#?1'r#T'#?1'r#T'#?1'4^8,70#T'#?1'4#T'#?1'r};
#GRh  = {#T'#?1'r#T'#?1'4r#T'#?1'r#T'#?1'};
#GR2  = {#T'#?1'r#T'#?1'4r#T'#?1'r#T'#?2'r#T'#?2'4^8,70#T'#?2'4#T'#?2'r};
#GR2h = {#T'#?1'r#T'#?1'4r#T'#?1'r#T'#?2'};

Str TR6In = {l8 o5 #GR("e-"gd)#GRh("e-"gd)r2"b-2,,90,0};
Str TR6 = { [#GR("e-"gd)][#GR("a-ce-)]
		#GR("e-"gd)#GRh("e-"gd)#T'"e-"gd'r4^8'ce-'2[#GR("a-ce-)]

		#GR2({"a-cf}, {"f"b-d})#GR("g"b-e-) #GR2({"a-cf}, {"f"b-d})#GR2({"g"b-e-}, {"g"b-c+})
		#GR2({"a-cf}, {"f"b-d})#GR("g"b-e-) #GR("a-ce-)
		//#GR2({"b-df}, {"bdf})
		#GR("bdf)
		
		#GR2({ce-a-}, {c+fa-}) #GR2({"b-dg}, {ce-g})
		#GR2({ce-a-}, {c+fa-}) #GR2({"b-dg}, {ceg})
		#GR2({"a-cf}, {"b-df})#GR2({"bdf}, {ceg})
		#GR2({"f"a-c}, {"g"b-d})#GR2h({"a-ce-}, {"b-df}) r1
		
		#GR("e-"gd)#GRh("e-"gd)r2"b-2};
Str TR6Out = {[#GR("e-"gd)][#GR("a-ce-)]};

Str TR7In = {};
Str TR7 = {};
Str TR7Out = {};

Str TR8In = {l2 o3 [3e-"b-]e-8r4^8"b-};
Str TR8 = { [4e-"b-][4a-e-]
		[3e-"b-]e-8r4^8a[4a-e-]

		[3ff"b-"b-[e-"b-]][fc]
		//b-fgd
		gdgd
		
		[a-e-c+a-gdcg]
		fcb-fgd`cg fcgd"a-e-"b-8r1-8
		
		[3e-"b-]e-8r4^8"b-};
Str TR8Out = {[4e-"b-][4a-e-]};

Str TR9In = {};
Str TR9 = {};
Str TR9Out = {};

#vS = {v.N(100,94)};

Str TR10In = {l8 Sub{#vS n82rrn82rn82rn82n82rrn82rn82n82r}Sub{v100[n62rn62n63rn62n63n62]}v100n76rrrn75rrn76rn75rrn76rrr
		     Sub{#vS n82rrn82rn82rn82n82}Sub{v100n62rn62n63rn62n63n62 n62}v100n76rrrn75rrn76 rrrr'n58n75'rn75r};
Str TR10 = {[5Sub{#vS n82rrn82rn82rn82n82rrn82rn82n82r}Sub{v100[n62rn62n63rn62n63n62]}v100n76rrrn75rrn76rn75rrn76rrr]
		Sub{#vS n82rrn82rn82rn82}Sub{v100n62rn62n63rn62n63n62}v100n76rrrn75rrn76
		Sub{n82}Sub{n62}n76rrrn81rrr
		[Sub{#vS n82rrn82rn82rn82n82rrn82rn82n82r}Sub{v100[n62rn62n63rn62n63n62]}v100n76rrrn75rrn76rn75rrn76rrr]

		[7Sub{#vS n82rrn82rn82rn82n82rrn82rn82n82r}Sub{v100[n62rn62n63rn62n63n62]}v100n76rrrn75rrn76rn75rrn76rrr]
		Sub{#vS n82rrn82rn82rn82n82rrn82rn82n82r}Sub{v100[n62rn62n63rn62n63n62]}v100n76rrrn75rrn76rn75rrn76rn46,,,80r
		
		[7Sub{#vS[16n82]}Sub{v100[n62rn62n63rn62n63n62]}Sub{v90[4n35rrr]}v100n76rrrn75rrn76rn75rrn76rrr]
		Sub{#vS[9n82]}Sub{v100n62rn62n63rn62n63n62 n62}v100n76rrrn75rrn76 n81rrrn58rrr
		
		Sub{#vS n82rrn82rn82rn82n82rrn82rn82n82r}Sub{v100[n62rn62n63rn62n63n62]}v100n76rrrn75rrn76rn75rrn76rrr
		Sub{#vS n82rrn82rn82rn82n82}Sub{v100n62rn62n63rn62n63n62 n62}v100n76rrrn75rrn76 rrrr'n58n75'rn75r};
Str TR10Out = {[4Sub{#vS n82rrn82rn82rn82n82rrn82rn82n82r}Sub{v100[n62rn62n63rn62n63n62]}v100n76rrrn75rrn76rn75rrn76rrr]};

Str TR11In = {};
Str TR11 = {};
Str TR11Out = {};

Str TR12In = {};
Str TR12 = {};
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 = (100,075,100,100,100,060,100,090,100,095,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(12) M(0) REV(40) CHO(0) P(88) #Scr(TR1)
TR(2)  CH(2)  Voice(12) M(0) REV(40) CHO(0) P(40) #Scr(TR2)
TR(3)  CH(3)  Voice(14) M(0) REV(40) 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(27) M(0) REV(40) 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(33) M(0) REV(40) CHO(0) P(36) #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(40) CHO(0) P(64) #Scr(TR10)
TR(11) CH(11) Voice(1) M(0) REV(0) CHO(0) 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(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);
