//-----------------------------------------------
// wondering in twisted zone
// (C)Yax
//-----------------------------------------------

TrackName     = {"wondering in twisted zone"}
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(40) CHO(30)
TR(2)  V(108) REV(60) CHO(10)
TR(3)  V(105) REV(40) CHO(40)
TR(4)  V(110) REV(30) CHO(2)
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(112) REV(50) CHO(0)


//------------------------------------------------
// テンポ
//------------------------------------------------
INT T = 145
Tempo=(T)


//------------------------------------------------
// キー
//------------------------------------------------
INT KEY=1

Key(KEY)                    // 全体のキー
TR(10) TrackKey(KEY * -1)   // リズムトラックの調整用、Keyの符号を逆にしたものをセットしておく



//------------------------------------------------
// MML
//------------------------------------------------

INT LOOP = 2

//------------------------------------
// Track 1 : 
//------------------------------------
INT VX = 45
TR(1) CH(1) P(64)
@36 v100
M.onNoteWave(10,80,!2.)

[(LOOP)
 o2 l8 q95
 
  q95
  [2
   e1^1
   f+1^1
   g1^1
   :
   f+1^1
  ]
  a1^1

 [2
  q110
  [8 e v(MML(v)-(VX)) e v(MML(v)+(VX))]
  [8 d v(MML(v)-(VX)) d v(MML(v)+(VX))]
  [8 c v(MML(v)-(VX)) c v(MML(v)+(VX))]
  [8 d v(MML(v)-(VX)) d v(MML(v)+(VX))]
  [8 e v(MML(v)-(VX)) e v(MML(v)+(VX))]
  [8 f+ v(MML(v)-(VX)) f+ v(MML(v)+(VX))]
  [8 g v(MML(v)-(VX)) g v(MML(v)+(VX))]
  [8 a v(MML(v)-(VX)) a v(MML(v)+(VX))]

  q90
  [2
   [2 e1 eerr rr : rr] d4
   [2 c1 ccrr rr : rr] d4
  ]
 ]
  e1^1^1^1
]


//------------------------------------
// Track 2 : 
//------------------------------------
TR(2) CH(2) P(64)
@100 v63
FineTune(68)

[(LOOP)
 o6 l8

 P.onNote(60,68,64)
 [2
  [5 ef+b] f+
  [5 dea] e
  [5 cdg] c
  [5 df+a] f+
 ]

 [2
  [2
   [5 ef+b] f+  r-1^1 v(MML(v)-10) [5 gb>e<]  b v(MML(v)+10)
   [5 dea] e    r-1^1 v(MML(v)-10) [5 f+a>d<] a v(MML(v)+10)
   [5 cdg] c    r-1^1 v(MML(v)-10) [5 eg>c<]  e v(MML(v)+10)
   [5 df+a] f+  r-1^1 v(MML(v)-10) [5 f+a>d<] a v(MML(v)+10)
  ]

  [2
   [2 bg<b>a f+<b>ge <b>f+d<b> : e<b>f+g] e<gb>e
   [2>c<acb gcaf+ cgec : f+cga] f+<a>cf+
  ]
 ]

 EP.onTime(127,30,!1^1^1^2..)
 [2 ebge bge>e <bgbg ege<b>]
 EP(127)
]


//------------------------------------
// Track 3 : 
//------------------------------------
TR(3) CH(3) P(64)
@97 v63
FineTune(60)

[(LOOP)
 o4 l8

 P.onNote(10,117,32,64,96)
 
 [2
  [8 be]
  [8 >d<f+]
  [8 >c<e]
  [8 ad]
 ]

 [2
  [2
   [8 be]
   [8 >d<f+]
   [8 >c<e]
   [8 ad]
  ]

  [2
   EP.onTime(40,100,!1^1) [16 be]
   EP.onTime(40,100,!1^1) [16 >c<g]
  ]
 ]

  EP.onTime(127,20,!1^1^1^2..) [16 be]
  EP(127)
]


//------------------------------------
// Track 4 : 
//------------------------------------
TR(4) CH(4) P(64)
@49 v95
M.onNoteWave(0,50,!1)

[(LOOP)
 o5 l8 q95

 [7 r1]
 r2.e16f+16g16a16

  b1^2 a2
  f+1^2 d2
  e1 f+2g2
  a1 f+2 d4..d32d+32

 [2
  e1^1   r-1^1   b2...>c32&c+32 d2<b2
  d1^1   r-1^1   a2...g+32g32 f+2 d2
  c1^1   r-1^1   e2 g2 >c4..<b32a32 g2
  d1^1   r-1^1   f+2 a4..b32>c32 d2 c2<

  e1^1   r-1^1  g1 r-1 b2 >d2  <b1> r-1 f+2 e2<
  d1^1   r-1^1  a1 r-1 >d2<a2  f+1 r-1 b2 f+2
  e1^1   r-1^1  e1 r-1 g2 b2 g1 r-1 >c2 e2<
  f+1^1  r-1^1  a1 r-1 >d2..d+24e24f24 d1 r-1 f+1<

  <v(MML(v)-10) e1^1^1^1 v(MML(v)+10)> r-1^1^1^1 e1 f+2g4..g32g+32 a1 f+2d2
  <v(MML(v)-10) c1^1^1^1 v(MML(v)+10)> r-1^1^1^1 c1 e2f+4..f32f+32 g1 b2a2
  <v(MML(v)-10) e1^1^1^1 v(MML(v)+10)> r-1^1^1^1 f+2g2 a2b4..a32g32 f+1 d2<b2>
  <v(MML(v)-10) c1^1^1^1 v(MML(v)+10)> r-1^1^1^1 e2f+2 g2a2 b2a2>d2c2<
 ]

 EP.onTime(127,0,!1^1^1^2...)
 v(MML(v)-10) ARP(0,!1^1^1^1,{<egb>}) v(MML(v)+10)
 r-1^1^1^1
 ARP(0,!1^1^1^1,{b})
 EP(127)
]

//------------------------------------
// 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

[(LOOP)
Rhythm {
  [2
   v80 brrr rrrb r-1 v90 rrrr srrr     r-1 v127 yr v110 rrjrrr   r-1 [4 v60fv30f]
   v80 brbr rrrr r-1 v90 rrrr srrr     r-1 v110 jrrr jrrr        r-1 [4 v60fv30f]
   v80 brrb rrrb r-1 v90 rrrr srrr     r-1 v110 jrrr jrrr        r-1 [4 v60fv30f]
   v80 brbr rrrr r-1 v90 rrrr srr v70s r-1 v110 jrrr jrrr        r-1 [4 v60fv30f]
   v80 brrr rrrb r-1 v90 rrrr srrr     r-1 v110 jrrr jrrr        r-1 [4 v60fv30f]
   v80 brbr rrrr r-1 v90 rrrr srrr     r-1 v110 jrrr jrrr        r-1 [4 v60fv30f]
   :
   v80 brrb rbrr r-1 v90 rrrr srr v70s             r-1 v110 jrrr jrrr r-1 [4 v60fv30f]
   v80 bbrb16b16 rbrr r-1 v90 rrrr srs v70 s16s16  r-1 v110 jrrr jrrr r-1 [4 v60fv30f]
  ]
  v80 brrb16b16 rrbr r-1 v90 rrrr s v70 srs16s16      r-1 v110 jrrr jrrr r-1 [4 v60fv30f]
  v80 brbr brbr      r-1 v100 rqaz rw v90s v70s16s16  r-1 v110 jrrr jrrr r-1 [4 v60fv30f]

 [2
  [2
   [2
    v80 brrr bbrr r-1 v90 rrsr rrsr r-1 v127 er [3 v110 jv80t] r-1 [4 v60fv30f]
    v80 brrr bbrb r-1 v90 rrsr rrsr r-1 [4 v110 jv80t] r-1 [4 v60fv30f]
    v80 brrr bbrr r-1 v90 rrsr rrsr r-1 [4 v110 jv80t] r-1 [4 v60fv30f]
    :
    v80 brrr bbrb r-1 v90 rrsr rrsr r-1 [4 v110 jv80t] r-1 [4 v60fv30f]
   ]
   :
   v80 brbr brbr r-1 v100 rq64q16..az v90 x16w16 'ws''ws' v70s16s16 r-1 [4 v110 jv80t] r-1 [4 v60fv30f]
  ]
  v80 brbr brbr r-1 v100 rq16q16a16a16z16z16 v90 x16w16g16g16 s16v70s16s16s16 r-1 [4 v110 jv80t] r-1 [4 v60fv30f]

  [2
   v80 brrr rrrr r-1 v90 rrrr xrrr r-1 v127 y4 v110 ur urur r-1 [4 v60fv30f]
   v80 bbrr rrrr r-1 v90 rrrr xrrg r-1 v110 urur urur       r-1 [4 v60fv30f]
   v80 brrr rrrr r-1 v90 rrrr xrrr r-1 v110 urur urur       r-1 [4 v60fv30f]
   :
   v80 bbrr brrr r-1 v90 rrrw az16z16x16x16g r-1 v110 urur urur r-1 [4 v60fv30f]
  ]
  v80 bbrr brrr r-1 v90 rrrq16q16 l12 aaz l16zxxw l8 r-1 v110 urur urur r-1 [4 v60fv30f]

  [2
   v80 brrr rrrr r-1 v90 rrxr rrxr r-1 v127 y4 v110 ur urur r-1 [4 v60fv30f]
   v80 bbrr rrrr r-1 v90 rrxr rrxr r-1 v110 urur urur       r-1 [4 v60fv30f]
   v80 brrr rrrr r-1 v90 rrxr rrxr r-1 v110 urur urur       r-1 [4 v60fv30f]
   :
   v80 bbrr brrr r-1 v90 rrxr rrxw r-1 v110 urur urur       r-1 [4 v60fv30f]
  ]
  :
  v80 bbrr brbr r-1 l16 v90 q63a32.qss aass zzss wwss l8 r-1 v110 urur urur r-1 [4 v60fv30f]
 ]
 v80 bbrr brbr r-1 l16 v90 qqaa zzqq aazz s64s32.sss l8 r-1 v110 urur urur r-1 [4 v60fv30f]

 v80 brrr rrrr r-1 v127 e1 r-1 [4 v60fr]
 v80 brrr rrrb r-1 [4 v60fr]
 v80 brrr rrrr r-1 [4 v60fr]
 v80 brrr rrrb r-1 [4 v60fr]
}
]

Rhythm {
  v80 brrr rrrr r-1 v127 'e1y1'
}

