//-----------------------------------------------
// noise from galaxy
// (C)Yax
//-----------------------------------------------

TrackName     = {"noise from galaxy"}
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)
}


//------------------------------------------------
// 全体の調整
//------------------------------------------------
TR(1)  V(110) REV(30) CHO(20)
TR(2)  V(110) REV(50) CHO(40)
TR(12) V(110) REV(50) CHO(40)
TR(3)  V(110) REV(50) CHO(40)
TR(4)  V(102) REV(70) CHO(20)
TR(5)  V(120) REV(70) CHO(20)
TR(6)  V(105) REV(70) CHO(30)
TR(7)  V(105) REV(60) CHO(20)
TR(10) V(127) REV(30) CHO(0)


//------------------------------------------------
// テンポ
//------------------------------------------------
INT T = 145
Tempo=(T)


//------------------------------------------------
// キー
//------------------------------------------------
INT KEY=1

Key(KEY)                    // 全体のキー
TR(10) TrackKey(KEY * -1)   // リズムトラックの調整用、Keyの符号を逆にしたものをセットしておく



//------------------------------------------------
// MML
//------------------------------------------------

INT LOOP = 3

//------------------------------------
// Track 1 : 
//------------------------------------
TR(1) CH(1) P(64)
@34 v100

 o3 l8
 q90
 c1^1
 c+1^1
 d1^1
 d+1^1

[(LOOP)
 q80
 [8 c4]
 [8 c+4]
 [8 d4]
 [8 d+4]

 [8 c4]
 [8 c+4]
 [8 d4]
 [8 d+4]

 [2 [4 c : c] c16>c16<]
 [2 [4 c+ : c+] c+16>c+16<]
 [2 [4 d : d] d16>d16<]
 [2 [4 d+ : d+] d+16>d+16<]

 [2
  [2 eeee16e16]
  [2 cccc16c16]
  [2 dddd16d16]
  [2 d+d+d+d+16d+16]
 ]

  q90
  e2.<b4>
  c2 e4.g
  d2.<a4
  b2>d4.d+
  e2.ba16g+16
  g2e4.e16&f16
  f+2 a4. g24f+24f24
  e2.....&!4<a64>
]
 
 
 
//------------------------------------
// Track 2 : 
//------------------------------------
TR(2) CH(2) P(126)
@61 v95
M.onNoteWave(0,90,!1.)
FineTune(68)

 o2 l8 q99

  '>c1^1<c1^1'
  '>c+1^1<c+1^1'
  '>d1^1<d1^1'
  '>d+1^1<d+1^1'

[(LOOP)
  '>c1^1<c1^1'
  '>c+1^1<c+1^1'
  '>d1^1<d1^1'
  '>d+1^1<d+1^1'

 [2
  '>c1^1<c1^1'
  '>c+1^1<c+1^1'
  '>d1^1<d1^1'
  '>d+1^1<d+1^1'
 ]

 [2
  '>e1<e1'
  '>c1<c1'
  '>d1<d1'
  '>d+1<d+1'
 ]

 [2
  '>e1<e1'
  '>g1<g1'
  '>f+1<f+1'
  :
  '>d1<d1'
 ]
 '>e1<e1'
]

EP.onTime(127,0,!1^1^1^1^1^1^1^1)
  '>c1^1<c1^1'
  '>c+1^1<c+1^1'
  '>d1^1<d1^1'
  '>d+1^1<d+1^1'
r1


//------------------------------------
// Track 12 : 
//------------------------------------
TR(12) CH(12) P(1)
@61 v95
M.onNoteWave(0,90,!1^4)
FineTune(60)

 o2 l8 q99

  '>c1^1<c1^1'
  '>c+1^1<c+1^1'
  '>d1^1<d1^1'
  '>d+1^1<d+1^1'

[(LOOP)
  '>c1^1<c1^1'
  '>c+1^1<c+1^1'
  '>d1^1<d1^1'
  '>d+1^1<d+1^1'

 [2
  '>c1^1<c1^1'
  '>c+1^1<c+1^1'
  '>d1^1<d1^1'
  '>d+1^1<d+1^1'
 ]

 [2
  '>e1<e1'
  '>c1<c1'
  '>d1<d1'
  '>d+1<d+1'
 ]

 [2
  '>e1<e1'
  '>g1<g1'
  '>f+1<f+1'
  :
  '>d1<d1'
 ]
 '>e1<e1'
]

EP.onTime(127,0,!1^1^1^1^1^1^1^1)
  '>c1^1<c1^1'
  '>c+1^1<c+1^1'
  '>d1^1<d1^1'
  '>d+1^1<d+1^1'




//------------------------------------
// Track 3 : 
//------------------------------------
TR(3) CH(3) P(64)
@100 v80
P.onNote(10,117,64,32,96)

 o5 l16
  crrdrre-r r>e-rrdr<b-r   EP.onTime(127,20,!2..)[5 >c<gr] r EP(127)
  c+rre-rrer r>errd+r<br   EP.onTime(127,20,!2..)[5 >c+<g+r] r EP(127)
  drrerrfr r>frrercr<      EP.onTime(127,20,!2..)[5 >d<ar] r EP(127)
  d+rrfrrf+r r>f+rrfrc+<r  EP.onTime(127,20,!2..)[5 >d+<a+r] r EP(127)

[(LOOP)
  crrdrre-r r>e-rrdr<b-r   EP.onTime(127,20,!2..)[5 >c<gr] r EP(127)
  c+rre-rrer r>errd+r<br   EP.onTime(127,20,!2..)[5 >c+<g+r] r EP(127)
  drrerrfr r>frrercr<      EP.onTime(127,20,!2..)[5 >d<ar] r EP(127)
  d+rrfrrf+r r>f+rrfrc+<r  EP.onTime(127,20,!2..)[5 >d+<a+r] r EP(127)

  [2
   EP.onTime(127,70,!1^1) [4 r4 >c<cr8]
   EP.onTime(127,70,!1^1) [4 r4 >c+<c+r8]
   EP.onTime(127,70,!1^1) [4 r4 >d<dr8]
   EP.onTime(127,70,!1^1) [4 r4 >d+<d+r8]
  ]
  EP(127)

 [2
  [2 rrbgege<b>]
  [2 rr>c<gegec]
  [2 rr>d<af+af+d]
  :
  [2 rrbf+d+f+d+<a>]
 ]
 [2 rr>d+<af+bf+d+]

 g4.f+8e4<b8>b8 >c4.<ba g2
 a4.f+8d4.f+a b2 f+2
 g4.f+8e4.gb >c2<g4.gg+
 a4.b>c d2 e1<
]

 V.onTime(110,30,!1^1^1^1^1^1^1^1)
  crrdrre-r r>e-rrdr<b-r   EP.onTime(127,20,!2..)[5 >c<gr] r EP(127)
  c+rre-rrer r>errd+r<br   EP.onTime(127,20,!2..)[5 >c+<g+r] r EP(127)
  drrerrfr r>frrercr<      EP.onTime(127,20,!2..)[5 >d<ar] r EP(127)
  d+rrfrrf+r r>f+rrfrc+<r  EP.onTime(127,20,!2..)[5 >d+<a+r] r EP(127)


//------------------------------------
// Track 4 : 
//------------------------------------
TR(4) CH(4) P(64)
@5 v75

 o5 l16 q30
 P.onNote(32,127,64,1,96)

 ce-gb- g>gb-c e-g<b-g >e-c<e-<b- >gcgb-> g<e->e-g< b->g>ce-< b-ge-<g
 c+eg+e g+b>eg+ bec+>c+ <bc+<g+>e <b>e<bg+ e>eg+<b >g+>c+e<b g+e<g+e
 dfa>c< a>a>cd fac<a >fd<fc <a>da>c< a<d>d<a c>adf >c<af<a
 d+f+a+f+ a+>c+f+d+ >c+<f+d+>d+ c+<d+<a+>d+ c+d+c+<a+ f+>f+a+c+ a+>d+f+c+< a+f+<a+f+

[(LOOP)
 [3
  ce-gb- g>gb-c e-g<b-g >e-c<e-<b- >gcgb-> g<e->e-g< b->g>ce-< b-ge-<g
  c+eg+e g+b>eg+ bec+>c+ <bc+<g+>e <b>e<bg+ e>eg+<b >g+>c+e<b g+e<g+e
  dfa>c< a>a>cd fac<a >fd<fc <a>da>c< a<d>d<a c>adf >c<af<a
  d+f+a+f+ a+>c+f+d+ >c+<f+d+>d+ c+<d+<a+>d+ c+d+c+<a+ f+>f+a+c+ a+>d+f+c+< a+f+<a+f+
 ]

 [2
  [4 egb>e<]
  [4 eg>ce<]
  [4 f+a>df+<]
  [4 f+a+>d+f+<]
 ]

 [2 regb>ege<b rgb>e gbge<]
 [2 rdf+a>df+d<a rf+a>d f+af+d<]
 [2 regb>ege<b rgb>e gbge<]
 rdf+a>df+d<a df+a>d< f+a>df+
 ec<bg e4 r2
]

//------------------------------------
// Track 5 : 
//------------------------------------
TR(5) CH(5) P(62)
@91 v115
FineTune(68)

 [8 r1]

[(LOOP)
 [8 r1]

 o5 l16 q90
  M.onNoteWave(10,90,!1)

  c4.cd e-2 g4.f4.e-4
  c+4.c+d+ e2 g+.f+.e f+.e.d+ e.d+.c+ d+c+<b>c+
  d4.de f2 a4.g4.f8 cd
  d+4.d+f f+2 b-a-g-f a-8g-f g-fe-d- e-fe-d-

  e-8.c8rde- c4.cd e-4.e-f g8rf8re-8
  e8.c+8rer c+4.ef+ g+8f+e f+12e12d+12 ed+c+<b> d+c+<b>c+
  d4.df a8rg8rfr a2.agfe
  d+4.a+^4rf+8rr >c+2.^..&!8<f+64 r8

  [2
   g4.f+g e2    r-1 v(MML(v)-10) e2 <b2>  v(MML(v)+10)
   g4.ga b2     r-1 v(MML(v)-10) c2 e2    v(MML(v)+10)
   a4.ga f+2    r-1 v(MML(v)-10) f+2 d2   v(MML(v)+10)
   d+4.d+e f+2  r-1 v(MML(v)-10) <b2> d+2 v(MML(v)+10)
  ]

  b2..ab
  arrgrrf+8^4f+8f+g
  a2.. ga
  grrf+rre8^4rrga
  b2..ab
  arrgrra8^4a8b>c
  d2<b2>
  :
  e2.....&!8<e64>
]
e1

//------------------------------------
// Track 6 : 
//------------------------------------
TR(6) CH(6) P(66)
@91 v90
FineTune(60)

 [8 r1]
r16.

[(LOOP)
 [8 r1]

 o5 l16 q90
  M.onNoteWave(10,90,!1)

  c4.cd e-2 g4.f4.e-4
  c+4.c+d+ e2 g+.f+.e f+.e.d+ e.d+.c+ d+c+<b>c+
  d4.de f2 a4.g4.f8 cd
  d+4.d+f f+2 b-a-g-f a-8g-f g-fe-d- e-fe-d-

  e-8.c8rde- c4.cd e-4.e-f g8rf8re-8
  e8.c+8rer c+4.ef+ g+8f+e f+12e12d+12 ed+c+<b> d+c+<b>c+
  d4.df a8rg8rfr a2.agfe
  d+4.a+^4rf+8rr >c+2.^..&!8<f+64 r8

  [2
   g4.f+g e2    r-1 v(MML(v)-10) e2 <b2>  v(MML(v)+10)
   g4.ga b2     r-1 v(MML(v)-10) c2 e2    v(MML(v)+10)
   a4.ga f+2    r-1 v(MML(v)-10) f+2 d2   v(MML(v)+10)
   d+4.d+e f+2  r-1 v(MML(v)-10) <b2> d+2 v(MML(v)+10)
  ]

  b2..ab
  arrgrrf+8^4f+8f+g
  a2.. ga
  grrf+rre8^4rrga
  b2..ab
  arrgrra8^4a8b>c
  d2<b2>
  :
  e2.....&!8<e64>
]
e1


//------------------------------------
// Track 7 : 
//------------------------------------
TR(7) CH(7) P(64)
@92 v90
M.onNoteWave(10,40,!1.)
 [8 r1]

 o5 l16 q95

[(LOOP)
  g1^2..f+g
  g+1 e1
  f1^2..ef
  f+1 d+1

  [2
   EP.onTime(60,127,!1) 'g1e-1'
   EP.onTime(60,127,!1) 'e-1c1'
   EP.onTime(60,127,!1.) 'g+1^1e1^1'
   EP.onTime(60,127,!1) 'a1f1'
   EP.onTime(60,127,!1) 'f1d1'
   EP.onTime(60,127,!1.) 'f+1^1d+1^1'
  ]

  [8 r1]

  EP(110)
  b1> c4.<b4.g4
  a1  b4.g4.f+4
  g1  a4.g4.e4
  f+1 e1
  EP(127)
]



//------------------------------------
// Track 10 : ドラム系
//------------------------------------
TR(10) CH(10)

@1,90,1
l8
Rhythm {
  
  [2
   v70 brbr brbr r-1 [4 v100c v70c16c16] r-1 v127 e1
   v70 brbr brbr r-1 [3 v100c v70c16c16] c16c16o
   v70 brbr brbr r-1 [4 v100c v70c16c16]
   :
   v70 brbr brbr r-1 [2 v100c v70c16c16] [2 c16c16o]
  ]
  v70 brbr brbv90s16s16 r-1 [2 v100c v70c16c16] [2 c16c16o]
}
[(LOOP)
Rhythm {
  [2
   v70 brbr brbr r-1 [4 v100c v70c16c16] r-1 v127 e1
   v70 brbr brbr r-1 [3 v100c v70c16c16] c16c16o     r-1 v90 rrrr rrrs
   v70 brbr brbr r-1 [4 v100c v70c16c16]
   v70 brbr brbr r-1 [2 v100c v70c16c16] [2 c16c16o] r-1 v90 rrrr rsr16v100a16z16w16
  ]

  [2
   v70 brrr rrrb r-1 rrrr rr v90s4 r-1 [4 v80c16 v40c16 v100c16 v70c16] r-1 v127 y1
   v70 brrb rrrr r-1 rrrr rr v90sg r-1 [4 v80c16 v40c16 v100c16 v70c16] 
   v70 brrr rrrb r-1 rrrr rr v90s4 r-1 [4 v80c16 v40c16 v100c16 v70c16] 
   v70 brrb rrbr r-1 v90 rq16q16ar z16z16wrx16x16 r-1 [4 v80c16 v40c16 v100c16 v70c16] 
   v70 brrr rrrb r-1 rrrr rr v90s16s8. r-1 [4 v80c16 v40c16 v100c16 v70c16] r-1 v127 y1
   v70 brrb rrrr r-1 rrrr rr v90sg r-1 [4 v80c16 v40c16 v100c16 v70c16] 
   :
   v70 brrr rrrb r-1 rrrr rr v90s4 r-1 [4 v80c16 v40c16 v100c16 v70c16] 
   v70 brrb rrbr r-1 v90 l16 rrqa sara azwz rsss l8 r-1 [4 v80c16 v40c16 v100c16 v70c16] 
  ]
  v70 brrr rrrb r-1 rrrr rr v90sv70s16s16 r-1 [4 v80c16 v40c16 v100c16 v70c16] 
  v70 brrb rrbr r-1 v90 l16 qqqq aaaa zzzz wwww l8 r-1 [4 v80c16 v40c16 v100c16 v70c16] 

  [2
   v70 brrb brrb r-1 v90 rrsr rsrr            r-1 [4 v100c16 v30c16 v90c16 v60c16] r-1 v40 [4 rS] r-1 v127 e1
   v70 brrr brrr r-1 v90 rqaz rsss16s16       r-1 [4 v100c16 v30c16 v90c16 v60c16] r-1 v40 [4 rS]
   :
   v70 brrb brrb r-1 v90 rrsr rsrr            r-1 [4 v100c16 v30c16 v90c16 v60c16] r-1 v40 [4 rS]
   v70 brrr brrr r-1 v90 rzss ra16z16 ss16s16 r-1 [4 v100c16 v30c16 v90c16 v60c16] r-1 v40 [4 rS]
  ]
  v70 brrb brrb r-1 v90 rrsr rsrs16s16        r-1 [4 v100c16 v30c16 v90c16 v60c16] r-1 v40 [4 rS]
  v70 [4 rb16b16] r-1 l16 v90 ssrr v110 qqrr zzrr aarr  l8 r-1 [4 v100c16 v30c16 v90c16 v60c16] r-1 v40 [4 rS]

  v70 brrr rrrr      r-1 v90 rrrr s4rr r-1 v127 y4 v100 j4j4j4 
  v70 bbrr rrrb      r-1 v90 rrrr s4rr r-1 v100 j4j4j4j4 
  v70 brrb rrrr      r-1 v90 rrrr s4rr r-1 v100 j4j4j4j4 
  v70 bbrb rbrb16b16 r-1 v90 rrrr s4rr r-1 v100 j4j4j4j4 
  v70 brrr rrrr      r-1 v90 rrrr s4rv75s16s16 r-1 v127 y4 v100 j4j4j4 
  v70 bbrb rrrb16b16 r-1 v90 rrrr s4s16s. r-1 v100 j4j4j4j4 
  v70 brbr brbr       r-1 l16 v100 sazs zasa zsza swss l8 r-1 v100 j4j4j4j4 
  v70 brrr rrrr r-1 v127 y1
}
]

V.onTime(115,30,!1^1^1^1^1^1^1)
Rhythm {
  v127 'e1y1' r-1
  [4
   v70 brbr brbr r-1 [4 v100c v70c16c16]
   v70 brbr brbr r-1 [3 v100c v70c16c16] c16c16o
  ]
}

