/*
			deep hole
			
			じょん
			
	
	みなさん、お久しぶりです。掲示板ver6では初めまして。
	
	コンテストに応募して、見事に散った曲を投稿します。
	「旧地下採掘所」というテーマです。

	骨格を作ったあとは、ACIDで切ったり張ったりしながら勢いで作ってしまったので、
	mp3はこのmmlに肉付けをした感じです（といってもあまり肉もついていない）。
	
	
	是非mp3お聞きください。
	
	mp3
	http://jooohn.s5.pf-x.net/music.html
	
	mail
	jooohn12341234あっとjcom.home.ne.jp
	
*/


/***********   変数定義  ***************/
Include(delay.h)
Int MSGS = 0;
Int ST = 1;

Int MainTempo = 90;
Int MainKey = -1;
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 = 1;
	Switch(number){
		CASE(0){ Time_pointer = TimeStart;}
		CASE(1){ Time_pointer = TimeStart+4;}
		CASE(2){ Time_pointer = TimeStart+8;}
		CASE(3){ Time_pointer = TimeStart+12;}
		CASE(4){ Time_pointer = TimeStart+16;}
		CASE(5){ Time_pointer = TimeStart+20;}
		CASE(6){ Time_pointer = TimeStart+24;}
		CASE(7){ Time_pointer = TimeStart+28;}
		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 Init_MG = {Init(5,29,30,10)o5q100};
Str Init_EG = {Init(6,31,40,5)o3BR=2};
Str Init_St = {Init(7,49,63,10)o4q100};
Str Init_Dp = {Init(8,5,63,20)o4};
Str Init_Hp = {Init(9,47,30,10)o5q100v60};
Str Init_Dr = {Init(10,1,63,0)};
Str Init_Am = {Init(11,90,63,0)o3q100};

/***********   テンポ設定  ***************/
Tempo=MainTempo;

/***********    MAIN CODE    *****************/


/*-------------------------------------------
			TR05	MGuitar
--------------------------------------------*/
Str MG_1 = {l16 q95 v80 MidiDelay(MuteGuitar_1,4,!8);}
Str MuteGuitar_1 = {
	[4 "arre"arefrrf+crrdg]
}

/*-------------------------------------------
			TR07	Strings
--------------------------------------------*/
Str St_1 = {Strings_1;}
Str Strings_1 = {l1
Sub{"a^^^}
Sub{eff+f}
Sub{`c^^^}
}

/*-------------------------------------------
			TR08	Drop
--------------------------------------------*/
Str Dp_1 = {Drop_1}
Str Drop_1 = {l16o.T(4,4,5); [4 a^ra^rga^ra^ra^r]}
/*-------------------------------------------
			TR09	Harp
--------------------------------------------*/
Str Hp_1 = {Harp_1}
Str Harp_1 = {l16 [4 "aea`c][4 "afa`d][4 "af+a`d][4 "afa`c]}


/*-------------------------------------------
			TR11	Ambient
--------------------------------------------*/
Str Am_1 = {BR=3 p%.T(0,-8192,!1+1);'a`e'1^1}


/*-------------------------------------------
			TR10	Drums
--------------------------------------------*/
Str Dr_1 = {
	Sub{[2 v110MidiDelay(BassDrum_1,5,!8.)]}
	Sub{[2 v110MidiDelay(Snare_1,5,!8.)]}
	Sub{[2 v100MidiDelay(Tom_1,5,!8.)]}
	Sub{[2 v80MidiDelay(Qlick_1,5,!8.)]}
	Sub{[2 v50MidiDelay(Slap_1,5,!8.)]}
}
Str Drums_1 = {
}
Str BassDrum_1 = {l8Rhythm{xrrrrrrrxrrrrrrr}}
Str Snare_1 = {l16 Rhythm{r4j4r2 r4j4r2}}
Str Hat_1 = {l16 Rhythm{h^^}}
Str Tom_1 = {l16 Rhythm{rrrr rrrr rbar rrrr r1}}
Str Qlick_1 = {l16 Rhythm{rrdrrrrrrrrrrrrr r1}}
Str Slap_1 = {l16 Rhythm{rrrr errr rrrr rrrr r1}}

/*****************************************
		　Melody Set　
******************************************/

SetMelody(Init_MG , ____ , ____ , ____ , ____ , MG_1 , ____);//MGuitar
SetMelody(Init_Dp , ____ , ____ , Dp_1 , ____ , ____ , ____ );//Drop
SetMelody(Init_St , ____ , ____ , ____ , ____ , ____ , St_1 , St_1 , St_1 , St_1 );//Strings
SetMelody(Init_Hp , ____ , ____ , ____ , ____ , ____ , Hp_1 , Hp_1 , Hp_1 , Hp_1 );//Harp
SetMelody(Init_Dr , Dr_1 , Dr_1 , Dr_1 , Dr_1 , Dr_1 , Dr_1 , Dr_1 , Dr_1 , Dr_1 , Dr_1 , Dr_1 );//Drum
SetMelody(Init_Am , Am_1 , Am_1 , ____ , Am_1 , ____ , Am_1 , Am_1 , Am_1 , Am_1 );//Ambi
