TrackName = {"月の交差"};
Copyright = {"S.Zayo"};

/*
SGM-V2.01
KDrums
*/



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







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

Int In = 4;//イントロからメロディースタートまでの時間
Int Ltime = 24;//1ループの時間
Int Out = Ltime*Repeat+In+1;//フェードアウト開始時間
Int Fade = 8;//フェードアウトにかかる時間
Int Tmp = 120;//テンポ
Int Sig = 4;
Int SigBase = 4;

Int Ptime = (In+Ltime*Repeat+Fade)*Sig*240/(Tmp*SigBase);

//---------------------------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---------------------------------

TimeBase(96);System.MeasureShift(1);
Time(0:1:0) Tempo(Tmp);TimeSignature(Sig,SigBase);TrackSync;PrintPlayTime(Ptime);

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

Str TR1In = {};
Str TR1 = {y73(32) y71(127) l4 [[4rafg drrr][4r1]]};
Str TR1Out = {y73(32) y71(127) l4 [4rafg drrr]};

Str TR8In = {l24 y71(32) [d4rrrrrcdrrd^^r4 g4rrrrrf:g^rg^fg^a^^^]g^r"g^"a-"a^"b-"b^c};
Str TR8 = { l24 y71(32) [5[d4rrrrrcdrrd^^r4 g4rrrrrf:g^rg^fg^a^^^]g^r"g^"a-"a^"b-"b^c][b-4rrrrrb-b-8b-8r4 g4rrrrrg:g^rg^"g"g^"a"b-^"b]g^rg^ra^ra^r };
Str TR8Out = {[[d4rrrrrcdrrd^^r4 g4rrrrrf:g^rg^fg^a^^^]g^r"g^"a-"a^"b-"b^c]};

Str TR10In = {l16 y32(16) [4 Sub{[16n69]} 'n35n27'rn37r'n44n28n30n32'rn37r'n35n27'r'n35n37'r'n44n28'rn37r]};
Str TR10 = {l16 y32(16) [24 Sub{[16n69]} 'n35n27'rn37r'n44n28n30n32'rn37r'n35n27'r'n35n37'r'n44n28'rn37r]};
Str TR10Out = {[8 Sub{[16n69]} 'n35n27'rn37r'n44n28n30n32'rn37r'n35n27'r'n35n37'r'n44n28'rn37r]};

Str TR11In = {};
Str TR11 = {[8r1] l1 q100 [EP.onTime((80,127,!1),(127,40,!1))'df`c''dgb'][8r1][EP.onTime((80,127,!1),(127,40,!1))'dfb-''"b-dg'] };
Str TR11Out = {};

Str TR13In = {};
Str TR13 = {[8r1] y71(127) v80 l24 [[a^gd^ga^^]a^df^a[g^fd^fg^^]g^fd^g][8r1][[d^"b-d^fb-^^]d^"b-d^b-["b-^"g"b-^dg^^]:g^"gd^g]};
Str TR13Out = {};

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

/* Track      001,002,003,004,005,006,007,008,009,010,011,012,013,014,015,016 */
Array Vols = (100,070,100,100,100,100,100,100,100,100,100,100,060,040,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(89) M(20) REV(20) CHO(0) P(88) o6 #Scr(TR1)
TR(2)  CH(2)  Voice(89) M(20) REV(20) CHO(0) P(56) o6 t16 #Scr(TR1)
TR(8)  CH(8)  Voice(34) M(0) REV(0) CHO(0) P(64) o3 #Scr(TR8)
TR(10) CH(10) REV(0) CHO(0) P(64) #Scr(TR10)
TR(11) CH(11) Voice(96) M(0) REV(20) CHO(0) P(72) o5 #Scr(TR11)
TR(13) CH(13) Voice(76) M(0) REV(30) CHO(30) P(90) o7 #Scr(TR13)
TR(14) CH(14) Voice(76) M(0) REV(30) CHO(30) P(32) o7 t16 #Scr(TR13)

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

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