/*
			moratorium					
									
			じょん					
									
									
									
	僕は今大学の学部3年で、つまりそれは今年から	
	シューカツを意識しなければいけないわけで、	
	そんな、モラトリアムに浸っていたい僕の心の	
	葛藤を、曲にしてみました。				
	嘘です。そんなたいそうなものではありません。	
	楽しんで聴いて頂けたらなと思います。		
									
	例によって、mmlは「骨格」の部分です。		
	是非mp3でお聞きください。				
									
									
									
	mp3								
		http://jooohn.s5.pf-x.net/			
									
									
	mail								
		jooohn12341234@jcom.home.ne.jp		
									
									*/


/***********   変数定義  ***************/
Include(delay.h)
Int MSGS = 0;
Int ST = 1;

Int MainTempo = 90;
Int MainKey = 4;
Array Keys = (MainKey,MainKey+3);

//　録音時はSTに
Int Type = MSGS;

/***********   関数・セット  ***************/

//**トラックを初期化する（トラック番号,音色,パン,ボリュームのぶれ）
Function Init(Int this_track,Int Tone,Int Pan,Int volume_Rand){
	TR = this_track;
	@(Tone);
	P = Pan;
	v.Random(volume_Rand);
	If(this_track == 10|| this_track == 11){}
	Else{
		TrackKey=MainKey;
	}
};

Function TimeSet(Int number){
	Int Time_pointer = 0;
	Int TimeStart = 2;
	Switch(number){
		CASE(0){ Time_pointer = TimeStart;}
		CASE(1){ Time_pointer = TimeStart+8;}
		CASE(2){ Time_pointer = TimeStart+16;}
		CASE(3){ Time_pointer = TimeStart+24;}
		CASE(4){ Time_pointer = TimeStart+32;}
		CASE(5){ Time_pointer = TimeStart+34;}
		CASE(6){ Time_pointer = TimeStart+42;}
		CASE(7){ Time_pointer = TimeStart+50;}
		CASE(8){ Time_pointer = TimeStart+32;}
		CASE(9){ Time_pointer = TimeStart+36;}
		CASE(10){ Time_pointer = TimeStart+40;}
		CASE(11){ Time_pointer = TimeStart+44;}
		CASE(12){ Time_pointer = TimeStart+48;}
	}
	Time(Time_pointer:1:0);
};
Str PON = {ペダル};
Str POF = {放す};

Function SetMelody(Str Initialize,Str T0,Str T1,Str T2,Str T3,Str T4,Str T5, Str T6, Str T7, Str T8, Str T9, Str T10) {
	Initialize;
	TimeSet(0);T0;
	TimeSet(1);T1;
	TimeSet(2);T2;
	TimeSet(3);T3;
	TimeSet(4);T4;
	TimeSet(5);T5;
	TimeSet(6);T6;
	TimeSet(7);T7;
	TimeSet(8);T8;
	TimeSet(9);T9;
	TimeSet(10);T10;
}


//**ドラムセットの定義をする

Str Rhythm_Initialize = {
	$x{n(36),}$g{n(42),}$h{n(46),}$n{n(44),}$k{n(49),}$m{n(51),}$j{n(40),}$i{n(38),}$s{n(39),}
	$a{n(41),}$b{n(43),}$c{n(45),}$d{n(27),}$e{n(28),}
}

/***********   初期化   **************/

Rhythm_Initialize;
Include(delay.h)


Str ____ = {};
Str MM = {Init(2,5,60,10)o5q99}
Str Pi = {Init(3,1,60,10)o4q99}
Str Ep = {Init(4,122,60,10)o5q100}
Str Fl = {Init(5,74,30,10)o5q100};
Str St = {Init(6,49,63,10)o4q100};
Str Hr = {Init(7,61,80,10)o4q100}
Str Ch = {Init(8,53,63,20)o4q100};
Str BA = {Init(9,34,80,10)o2q100v100}
Str Dr = {Init(10,1,63,20)};
Str Am = {Init(11,90,63,0)o3q100};
Str Pd = {Init(12,83,63,10)o4q100};
Str SM = {Init(13,103,63,0)o4q100v70};
Str Gt = {Init(14,25,20,20)o4q100v80};

/***********   テンポ設定  ***************/
Tempo=MainTempo;

/***********    MAIN CODE    *****************/

Str Intro;
Str Mechanic;
Str Silent;
Str Main_1;
Str Bridge;
Str Main_2;

Mechanic = {
	S{BA;Ba_1;};
	S{Dr;Dr_1;};
}

/*-------------------------------------------
			TR03 Piano
--------------------------------------------*/
Str Pi_a = {
	PC_1;
	Sub{	Pi_in_1;};
	PC_2

	PC_1;
	Sub{Pi_in_2;};
	PC_2
};
Str Pi_b = {
	PC_1;
	Sub{	Pi_in_1;};
	PC_2

	PC_1;
	Sub{Pi_in_2;};
	PC_2
};
Str Pi_2 = {Piano_1;}
Str Pi_3 = {Piano_2;}
Str SM_2 = {v90 v.Random=10;	l8 rrrrrab`c l16 `d^`c`d^`c32`d32`cb^^^^^^^^ r-4. g4. r-4 e4 r-8 c^
	"b^cq60drq100PON;"b"g^^2POF; r2 rre^^g^^
	a2rra^b^`c^ b^`c`g^^`cb`c`g^q130`f`e`d+`d`cq100
	b^`c`d^`b`g^^2

}
Str SM_3 = {	l8 `c^^^^`c`d`cb.`c.g^e.g.
	a.e.f^a`d`cb.g.g+^`d.b.
	`c^^^^`c`d`cb.`c.`d^`e.g.
	a.e.f^dega.`d.b.g+.`cb
	a1
}

Str PC_1 = {PON;l64 r-r-v.onNote(80,70,65,70,75)"acegb1^1r-r-POF;}
Str PC_2 = {PON;l64 r-r-v.onNote(80,70,65,70,75)"f"a-ce-g1^1r-r-POF;}

Str Piano_1 = {
	l8 rrrrrab`c l16 `d^`c`d^`c32`d32`cb^^^^^^^^ r-4. g4. r-4 e4 r-8 c^
	"b^cdr"b"g^^2 r2 rre^^g^^
	a2rra^b^`c^ b^`c`g^^`cb`c`g^`f`e`d+`d`c
	b^`c`d^`b`g^^2
}

Str Piano_2 = {
	l8 `c^^^^`c`d`cb.`c.g^e.g.
	a.e.f^a`d`cb.g.g+^`d.b.
	`c^^^^`c`d`cb.`c.`d^`e.g.
	a.e.f^dega.`d.b.g+.`cb
	a1
}


Str Pi_in_1 = {
	l16r2rr>v.onNote(70,80,90,75,90,100,70,60,70,90,80,95)g^l12fe-dl16d^e-c^^^^^"a-^"b-c.d.e-<
}
Str Pi_in_2 = {
	l16r2rrv.onNote(70,100,90,80,85,100,80,75,85,70)g^a-b-^`cl12`d`e-`cb-`cgl16rrrr rrrr
}

/*-------------------------------------------
			TR04 ElecPiano
--------------------------------------------*/
Str EP_1 = {EPiano_1}
Str EPiano_1 = {
	l16
	[6 "aredrfrer"adr"br"gr]
	"aredr"a"a"bcdr"bcr"ar
	"brfer"bdcr"g+rr"ar"br
}
/*-------------------------------------------
			TR05 Flute
--------------------------------------------*/
Str Fl_1 = {[2 r1r1Flute_1]}
Str Flute_1 = {
	l16M.T(0,0,!4,0,40,!2);
	r-4 v.onNote(60,70,75,80,90,80,75,85)V.T(90,100,!4,100,110,!4.,110,90,!2)cde-fg^^f^gc^^^^^^^^^r1
}
Str Flute_2 = {
	l16
	
}


/*-------------------------------------------
			TR06 Strings
--------------------------------------------*/
Str St_1 = {[2 r1r1 String_1;]}
Str St_2 = {String_2}
Str St_3 = {[2 String_3]}
Str St_4 = {r1r1String_1;}
Str String_1 = {l2v70Sub{V.T(90,110,!1+1)'"f"a-ce-g'^^^}r1r1}
Str String_2 = {l1v70V.T(95,110,!1.,110,100,!2,95,110,!1.,110,100,!2,95,110,!1.,110,100,!2,95,110,!1.,110,100,!2)
'"fca'^'"c"bg'^'"fca'^r-r-r-r-r-r-e^^^^^'"e"bdg'^}
Str String_3 = {l1v70V.T(95,110,!1,110,100,!1,100,105,!1,100,110,!2,110,105,!2)
'"ace'r-g^r-'"e"bd''"fcea''"dcfa'4.'"e"bdg+'2^8}
/*-------------------------------------------
			TR07 Horn
--------------------------------------------*/
Str Hr_1 = {r1r1 Horn_1; r1r1 Horn_2}
Str Hr_2 = {Horn_3;Horn_4;}
Str Horn_1 = {l16g^^d^e-f^^2r1}
Str Horn_2 = {l16g^^d^^e-^^f^^^^^^ r1}
Str Horn_3 = {l8 >c2redc<b^^ab^g^e^^^^^^^r1}
Str Horn_4 = {l8 >c2redc<b^^ab^`c^`d1r1}
/*-------------------------------------------
			TR08 Choir
--------------------------------------------*/
Str Ch_1 = {r1r1r1r1Choir_1}
Str Choir_1 = {l1v70'f`e'^ 'f+' r-r-r- 'a`c'^^ 'g+b`e'r-r-`d^}
Str Choir_2 = {l16g^^d^^e-^^f^^^^^^ r1}

/*-------------------------------------------
			TR12 Pad
--------------------------------------------*/
Str Pd_1 = {Pad_1;}
Str Pad_1 = {
[4 q100 l16
	'a`e'^^'a`e'rrrr rrr'a`e'^q30'a`e'q100'a`e''a`e' 
:	q30'a`e'q100'a`e'^^'a`e'^^'a`e' rrrrr'a`e'^r]'g+`d'^^'g+`d'^^'g+`d'r rrrrrrrr
}
/*-------------------------------------------
			TR13 Guitar
--------------------------------------------*/
Str Gt_1 = {Guitar_1;}
Str Guitar_1 = {l16 v.Random(5);
	PON;v.onNote(90,70,75,70,90,90,60,70,70,60)"a^eg^e"a`g^b`e^`c^g^POF;
	PON;v.onNote(90,70,75,70,90,95,60,70,70,60)"e^"bd^g"eb^`d^be^g^POF;
	PON;v.onNote(90,70,75,70,90,70,90,70,80,50)"f^ce^a"fc^e`c^f^a^POF;
	PON;d^a`c^gPOF;
	PON;"e^"g+d^"eb^g+^POF;

	PON;v.onNote(90,70,75,70,90,90,60,70,70,60)"a^eg^e"a`g^b`e^`c^g^POF;
	PON;v.onNote(90,70,75,70,90,95,60,70,70,60)"e^"bd^g"eb^`d^be^g^POF;
	PON;v.onNote(90,70,75,70,90,70,90,70,80,50)"f^ce^a"fc^e`c^f^a^POF;
	PON;d^a`c^dPOF;
	PON;"e^"bd^"eb^g+^POF;

}

/*-------------------------------------------
			TR09 Bass
--------------------------------------------*/
Str Ba_1 = {l16 [2 Bass_1;]Bass_1b;Bass_1c;}
Str Bass_1 = {l16 a^^a rrrr rra^ ga^^ a^^a ^^ar rrrr rrrr};
Str Bass_1b = {l16 f^^f rrrr rrf^ ef^^ f^^f ^^fr rrrr rrrr};
Str Bass_1c = {l16 f+^^f+ rrrr rrf+^rf+^^ g+^^g+^^g+r rrrr rrrr}
/*-------------------------------------------
			TR10 Drum
--------------------------------------------*/
Str Dr_1 = {
	[2 
	S{BD_1}
	S{Sn_1}
	S{Ha_1}
	r1r1r1r1
	]
}
Str Dr_2 = {
	S{BD_2}
	S{Sn_2}
	S{Ha_2}
}

Str Dr_3 = {
	S{[4 BD_3]}
	S{[4 Sn_3]}
	S{[4 Ha_1]}
}

Str Dr_4 = {
	S{[4 BD_4]}
	S{[4 Sn_4]}
	S{[4 Ha_1]}
}

Str BD_1 = {Rhythm{l16 xxrrrrxxrxrrrrrr xrrxrrrxxxrrrrrr}}
Str BD_2 = {Rhythm{l16 r1 xxrrrrxxrrrxxrr}}
Str BD_3 = {Rhythm{l16 xxrrrrxxxrxrrrrr xxrrrrxxxrxrrrrr}}
Str BD_4 = {Rhythm{l16 xxrrrrxxrrrrrrrr xxrrrrxxrrrrrrrr}}

Str Sn_1 = {Rhythm{l16 rrrrv110jrrr rv60irirrv110jr rrjrrv60irrrv40irjv50rv60ijj}}
Str Sn_2 = {Rhythm{l16 r1 rrjrirrrjririirr}}
Str Sn_3 = {Rhythm{l16 rrirjrrrrrirjrrr rrirjrrrrrirjrrr}}
Str Sn_4 = {Rhythm{l16 v110rrrrjrrrrrv60irv110jrrr rrrrjrrrrrv60irv110jrrr}}

Str Ha_1 = {Rhythm{l8  ggggghgg ggggghgg }}
Str Ha_2 = {Rhythm{l8  r1 gghgghgh}}

/*-------------------------------------------
			Play
--------------------------------------------*/
SetMelody(MM,____,____,Pi_2,____,____,Pi_3,Pi_2);
SetMelody(Pi,Pi_a,____,____,Pi_b,____,____,____,Pi_a);
SetMelody(Ep,____,EP_1);
SetMelody(St,St_1,____,St_2,St_1,____,St_3,St_2,St_4);
SetMelody(Dr,Dr_1,____,Dr_4,Dr_1,Dr_2,____,Dr_3,Dr_1);

SetMelody(Fl,Fl_1,____,____,Fl_1);
SetMelody(Hr,Hr_1,____,____,Hr_1);
SetMelody(Ch,____,Ch_1);
SetMelody(Pd,____,Pd_1);
SetMelody(SM,____,____,SM_2,____,____,SM_3,SM_2);
SetMelody(Gt,____,____,____,____,____,Gt_1);
