//-----------------------------------------------
// Against a shadow
// (C)Yax
//-----------------------------------------------

TrackName     = {"Against a shadow"}
Copyright     = {"Yax"}

ResetGM();
r4
TrackSync;


//------------------------------------------------
// GMドラム
//------------------------------------------------
// b = bass / B = acostic basss 
 $b{n36,} $B{n35,}

// s = acostic Snare / S = electric Snare / R = side stick
 $s{n38,} $S{n40,} $R{n37,}

// h = close hi-hat / f = pedal hi-hat / o = open hi-hat
 $c{n42,} $f{n44,} $o{n46,}

// e = crash / y = crash 2 / j = ride / t = ride bell / u = ride 2 / d = chinese / i = splash
 $e{n49,} $y{n57,} $j{n51,} $t{n53,} $u{n59,} $d{n52,} $i{n55,}

// q = high tom / a = high mid / z = low mid / w = low / x = high floor/ g = low floor
 $q{n50,} $a{n48,} $z{n47,} $w{n45,} $x{n43,} $g{n41,}

// p = hand crap / k = cowbell / m = tambourine / n = clavas
 $p{n39,} $k{n56,} $m{n54,} $n{n75,}

// A = vibra-slap / C = high bongo / D = low bongo / E = mute high conga / F = open high conga / G = low conga
 $A{n58,} $C{n60,} $D{n61,} $E{n62,} $F{n63,} $G{n64,}

// H = high timbale / I = low timbale / J = high agogo / K = low agogo / L = cabsa / M = maracas
 $H{n65,} $I{n66,} $J{n67,} $K{n68,} $L{n69,} $M{n70}

// N = short whistle / O = long whistle / P = short guiro / Q = long guiro / T = hi wood block / U = low wood block
 $N{n71,} $O{n72,} $P{n73,} $Q{n74,} $T{n76,} $U{n77,}

// V = mute cuca / W = open cuca / X = mute triangle / Y = open triangle
 $V{n78,} $W{n79} $X{n80} $Y{n81}


//------------------------------------------------
// アルペジオ関数
//  D - 1音あたりのずらし幅
//  L - 全体の長さ
//  S - 鳴らす音、{}内に音階を記述(>と<は利用可能)
//------------------------------------------------
Function ARP(Int D, Int L, Str S) {
  Int LNG = L
  Int STP = 0
  Int TEMP = 0
  Str X = ""
  Str RS = ""
  Str NS = ""
  Int J = 0
  Array NAR = ()

  For(Int I = 1; I <= 100; I++ ){
    X = MID(S,I,1)
    J = ASC(X)

    IF (X == "") {
      EXIT
    }

    IF ( J >= 97 ) {
      IF ( J <= 103 ) {
        IF ( NS != "" ) {
	    NS = Replace(NS,{@-},{-@},off)
	    NS = Replace(NS,{@+},{+@},off)
	    NS = Replace(NS,{@#},{#@},off)
	    NS = Replace(NS,{@*},{*@},off)
          NAR = (NAR,NS)
	    NS = ""
        }
	  X = X + "@"
	}
    }
    NS = NS + X
  }
  IF ( NS != "" ) {
    NS = Replace(NS,{@-},{-@},off)
    NS = Replace(NS,{@+},{+@},off)
    NS = Replace(NS,{@#},{#@},off)
    NS = Replace(NS,{@+},{*@},off)
    NAR = (NAR,NS)
    NS = ""
  }

  For(Int I=0;I<SizeOf(NAR);I++){
    TEMP = L - STP
    RS = "r%" + #STR(STP)
    NS = Replace(NAR(I), {@}, {%}+#STR(TEMP),off)
    Sub{ RS NS }
    STP = STP+D
  }
  r%(L)
}

//------------------------------------------------
// ××ダンド関数
// (B>Eでリタルダンド、B>Eでアッチェラダンド)
//  B   - 開始時のテンポ(bpm)
//  E   - 終了時のテンポ(bpm)
//  LEN - 開始から終了までの長さ
//  STP - 切り替えのステップ幅
//------------------------------------------------
Function DANDO(B, E, LEN, STP) {
  Int _STEP = 24
  Int _DIFF = 0
  Int _CNT = 0
  Int _TMP = 0
  Int _LAP = 0

  IF( STP != 0 ) {
    _STEP = STP
  }

  _CNT = LEN/_STEP
  _DIFF = (E - B)/_CNT

  _TMP = B
  Tempo = %(B)

  For(Int I = 1; I < _CNT; I++ ){
    r%(_STEP)
    _TMP = _TMP + _DIFF
    Tempo = %(_TMP)
    _LAP = _LAP + _STEP
  }

  r%(LEN-_LAP)
  Tempo = %(E)
  r-%(LEN)
}

//------------------------------------------------
// 転調関数
//------------------------------------------------
// 転調
//  VAL - 転調幅
FUNCTION EDTRANS(VAL) {
  TrackKey(VAL)
}

// 転調を戻す
FUNCTION EDTRANS_REV() {
  TrackKey(0)        // 普通に戻すなら0で(Keyで指定したとこに戻る)
}


//------------------------------------------------
// 全体の調整
//------------------------------------------------
TR(1)  V(110) REV(20) CHO(0)
TR(2)  V(115) REV(35) CHO(40)
TR(3)  V(100) REV(30) CHO(30)
TR(4)  V(115) REV(35) CHO(50)
TR(5)  V(110) REV(20) CHO(0)
TR(6)  V(110) REV(20) CHO(0)
TR(7)  V(110) REV(20) CHO(0)
TR(8)  V(110) REV(20) CHO(0)
TR(9)  V(110) REV(20) CHO(0)
TR(10) V(118) REV(25) CHO(0)


//------------------------------------------------
// テンポ
//------------------------------------------------
INT T = 115
Tempo=(T)


//------------------------------------------------
// キー
//------------------------------------------------
INT KEY=1

Key(KEY)                    // 全体のキー
TR(10) TrackKey(KEY * -1)   // リズムトラックの調整用、Keyの符号を逆にしたものをセットしておく



//------------------------------------------------
// MML
//------------------------------------------------

INT LOOP = 4

//------------------------------------
// Track 1 : 
//------------------------------------
TR(1) CH(1) P(64)
@35 v95

  o2 l16 q80

  [2 f+8 f+f+] [2 g+8 g+g+]
  [2 e8 ee] [2 f8 ff]
  f+8f+f+ f+f+>f+<f+ g+8g+g+ g+g+>g+<g+
  aa>a<a >a<aa>a< ff>f<f bag+f

[(LOOP)
  [4
   eebe ee>e<e eebe ee>e<e
   f+f+bf+ f+f+>f+<f+ : f+f+bf+ f+f+>f+<f+
  ]
  f+f+>f+<f+ >e<f+>d<f+

  [2
   aaaa aaaa>   dddd dddd
   <g+g+g+g+ g+g+g+g+> c+c+c+c+ c+c+c+c+
   <aaaa aaaa  f+f+f+f+ f+f+f+f+
   g+g+g+g+ g+g+g+g+> c+c+c+c+ c+c+c+c+<
  ]

  f+f+rf+ rrrr f+f+rr f+f+a>c+<
  g+g+rg+ rrrr g+g+rr g+g+b>d<
  aara rrrr aarr aa>df+<
  g+g+rg+ rrrr g+brg+ g+g+b>e<
  f+f+rf+ >f+<rf+f+ f+>f+<rf+ f+f+a>c+<
  g+g+rg+ >g+<rg+g+ g+>g+<rg+ g+g+b>d<
  aara >a<raa a>a<ra aa>df+<
  bb>e<b >b<b>g+<b g+>g+<g+g+ g+>e<f+f
]

 f+rre rrd1


//------------------------------------
// Track 2 : 
//------------------------------------
TR(2) CH(2) P(64)
@30 v90
M.onNoteWave(10,60,!2.)

 o5 l16

 [3 r1]
 r2. ref+g+

[(LOOP)
  [2
   a8.g+8^2g+ab
   :
   b8.a8^2ag+f+
   a8.g+8^2ab>c+
   d8.c+8^2<ef+g+
  ]
   b8.a8^2g+ab
  >c+8.<b8^2^16 g+8
   b8.a^2.

  [2
   >c+2 d8.c+8.<a8
   :
   b2>c+4<g+4
   a2b8.a8.f+8
   g+2>c+2<
  ]
  b2>c+4f4
  f+2f+8.g+8.a8
  g+2f2

  [2
   f+2 rf+g+a >dc+<ba
   g+2 rfg+a bag+f
   f+2 rab>c+ dc+<ba
   :
   b2 g+4f4
  ]
  b4 >c+.<b. g+ f4^32.&!16.<b64 ef+g+
]

  a8.g+8.b^2.


//------------------------------------
// Track 3 : 
//------------------------------------
TR(3) CH(3) P(44)
@59 v75
M.onNoteWave(0,40,!2)

 o5 l16 q70

  v(MML(v)-5)
  q80
  'c+2<a2>' 'd2<b2>'
  'e2c+2' 'f2d2'
  'f+4d4''e4c+4' 'd4<b4>' 'e4c+4'
  'f+2d2'
  'g+4.f4.c+4.'c+16d16
  v(MML(v)+5)
  q70

[(LOOP) 
  [2
   'e8.<b8.>''e8.<b8.>''e4<b4>' 'b8g+8' 'a8e8' 'g+8e8'
   'f+8.c+8.''f+8.c+8.''f+4c+4' '>c+4<f+4' 'f+8c+8'
   'e8.<b8.>''e8.<b8.>''e4<b4>' 'b8g+8' 'a8e8' 'g+8e8'
   'f+8.c+8.''f+8.c+8.''f+4c+4' '>c+4<f+4' 'a8f+8'
  ]

  [2
   'e2c+2' [2 'f+8.d8.'] 'f+8d8'
   'g+2f2' '>c+8.<f8.''b8.f8.''g+8f8'
   'f+2a2' [2 'f+8.c+8.'] 'f+8c+8'
   'g+2f2' 'f4d4' 'd4<b4>'
  ]

  [2
   'c+2<a2>' r-16 d32e32 'f+2c+2'   r-1 v(MML(v)-15) q90 a1 q70   v(MML(v)+15)
   'g+2e2'   r-16 f+32f32 'e2c+2'   r-1 v(MML(v)-15) q90 b1 q70   v(MML(v)+15)
   'f+2c+2'  r-16 e32d32 'c+2<a2>'  r-1 v(MML(v)-15) q90 >c+1< q70 v(MML(v)+15)
   :
   'e2<b2>'  r-16 d32c+32 '<b2g+2>' r-1 v(MML(v)-15) q90 b1 q70   v(MML(v)+15)
  ]
  'e2<b2>'  r-16 e32f+32 'g+2e2'    r-1 v(MML(v)-15) q90 b2f2 q70 v(MML(v)+15)
]

 'f+8c+8'r'e8c+8'r'd1<b1>'



//------------------------------------
// Track 4 : 
//------------------------------------
TR(4) CH(4) P(84)
@7 v80

 o4 l16 q70

 [2 a>c+f+a<] [2 b>df+a<]
 [2 >c+eg+a<] [2 >dfg+a<]
 [2 a>c+f+a<] [2 b>eg+a<]
 [2 >df+g+a<] >dfg+a>c+<af+d<

[(LOOP)
  [4
   [2 <bb>e<b eb>e<b>]
   [2 c+c+f+c+ <f+>c+f+c+]
  ]

  [2
   c+c+ac+ ee>c+<e  ddad f+f+>d<f+
   ffbf g+g+>f<g+ ff>c+<f bb>f<b
   f+f+>c+<f+ aa>f+<a c+c+ac+ f+f+>c+<f+
   ffbf g+g+>f<g+ ff>d<f bb>f<b
  ]
  <
  [2
   f+f+>f+<f+ rra>c+ rrf+<a rf+af+
   ee>e<e rrg+b rr>e<b r eg+e
   f+f+>f+<f+ rra>c+ rrf+<a rf+af+
   g+g+>g+<g+ rrb>e rrg+<b eg+b>e<
  ]
  >
]

//------------------------------------
// Track 5 : 
//------------------------------------
TR(5) CH(5) P(64)



//------------------------------------
// Track 6 : 
//------------------------------------
TR(6) CH(6) P(64)



//------------------------------------
// Track 7 : 
//------------------------------------
TR(7) CH(7) P(64)



//------------------------------------
// Track 8 : 
//------------------------------------
TR(8) CH(8) P(64)



//------------------------------------
// Track 9 : 
//------------------------------------
TR(9) CH(9) P(64)



//------------------------------------
// Track 10 : ドラム系
//------------------------------------
TR(10) CH(10)

@1,90,1
l8
Rhythm {

  v80 brbr brbr      r-1 v127 e v70 o [3 v80 c16c16 v70 o]
  v80 brbr brbb16b16 r-1 [4 v80 c16c16 v70 o]
  v80 brbr brbr      r-1 v127 y v70 o [3 v80 c16c16 v70 o]
  v80 bbbb16b16 bbbb16b16 r-1 r v40 'sw' v50 'sw' v60'sw' v80s16w16 v70 s16s16 v80 s32s32 v70s16s16s16
    r-1 v100 d v70 f ff ffff
}
[(LOOP)
Rhythm {
  [2
   v80 br.b. b.bb. r-1 v80 rsrs rsrs r-1 v127 e v70 o [3 v80 c16c16 v70 o]
   v80 br.b. b.bb. r-1 v80 rsrs rsrs r-1 [4 v80 c16c16 v70 o]
   v80 br.b. b.bb. r-1 v80 rsrs rsrs r-1 [4 v80 c16c16 v70 o]
   :
   v80 brb16b16r b16bbbr16 r-1 v80 rsrs rss32s32s16s r-1 [4 v80 c16c16 v70 o]
  ]
  v80 brb16b16r b16bbbr16 r-1 v80 rsrs ss s64v70s32.s16v80s16v70s16 r-1 [4 v80 c16c16 v70 o]

  [2
   v80 br.b. b.bb.   r-1 v80 rsrs rsrs r-1 v127 e v70 o [3 v80 c16c16 v70 o]
   v80 brb16b. b.bb. r-1 v80 rsrs rsrs r-1 [4 v80 c16c16 v70 o]
   v80 br.b. b.bb.   r-1 v80 rsrs rsrs r-1 [4 v80 c16c16 v70 o]
   :
   v80 brb16b16r b16bbbr16 r-1 v80 rsrs rss32s32s16s r-1 [4 v80 c16c16 v70 o]
  ]
  v80 brb16b16r [8 b16] r-1 v80 rsrs32s32 v95 l16 q32q32 aazz xx v80sv70s l8 r-1 [4 v80 c16c16 v70 o]

  v80 b.b.r brrr      r-1 v80 rrrr rrsr      r-1 v127 yr v100 jrjrjr
  v80 b.b.r b16b16rrr r-1 v80 rrrr rrs16s16r r-1 v100 jrjrjrjr
  v80 b.b.r brrr      r-1 v80 rrrr rrsr      r-1 v100 jrjrjrjr
  v80 b.b.r b16bb16rr r-1 v80 rrrr rrs16s16 v90 z16z16 r-1 v100 jrjrjrjr
  v80 b.b.r b16br16rr r-1 v80 rrsr rrsr  r-1 v127 yr v100 jrjrjr
  v80 b.b.r b16bb16rr r-1 v80 rrsr rrsr  r-1 v100 jrjrjrjr
  v80 b.b.r b16br16rr r-1 v80 rrsr rrsr  r-1 v100 jrjrjrjr
  v80 b.bb. b16bb16rr r-1 v80 rsrs16s16 l16 as32s32sa ssas l8   r-1 v100 jrjrjrjr
}
]
l16
Rhythm {
  v80 brrb rrbr rrrr rrrr r-1 v100 rq64q32.as zxrr r2 r-1 v100 v100 drrirr v127'ey'r r2
}
