/*
  すぱ〜くカマキリの過去曲集
*/

  //       ↓曲番号を変えて聴いてください
  Int No = 0

  // 0: 冒険者の宿
  // 1: ベンチに座って
  // 2: クローズドアイ
  // 3: 白夜の森
  // 4: 長い道のり
  
  /*
    0: 冒険者の宿
    　HPでMIDI素材やろうかなーと考えてた頃に作った曲。
      悪くはないと思ってるけどやっぱりどこか足りない…でもベース入れるのはなんか…
      とボツにしてから3年後。ああ、ベタ打ちすぎるんだなと今更気付く（遅い）
    1: ベンチに座って
    　寒さがやってくる秋の中、静かな公園のベンチに一人で座っている男をイメージ。
      彼が感じているのは寂しさだけでしょうか。
    2: クローズドアイ
    　実は以前にも投稿したことがありましたが、今のHNに改名した時に非公開にした記憶。
      ということで実質再投稿という形に。
      この曲は自作ゲーム「PHANTOM DREAMER」で使ったものを少し改変したものです。
　　3: 白夜の森
　　　MIDI素材として作って出すつもりだったもの。
    4: 長い道のり
    　これも実は曲板Part5時代に投稿した…つもりだったが、掲示板のバグなのか
    　なぜか消えててなかったことにされてしまった曲。というわけで改めて投稿。
    　ツクール用のBGMに作ったのでループさせるために終わり方が変です。
    　曲名のレパートリー少なすぎて以前もこんな曲名付けた気しかしない…
  */

Function Select(Array Arr) {
  Str S;
	S = Arr(No); S;
}

Int Itempo      // テンポ
Int Itimebase   // タイムベース
Int Iloop       // 繰り返し回数
Int Ireset      // 音源初期化
Str Melo
Str Chord

/* -------------------------------------------------------------------------------- */
// ディレイ関数用
#delay_none     = 0;
#delay_normal   = 1;
/* -------------------------------------------------------------------------------- */

//
Int IresetLen   = !1;       // 音源初期化直後の休符

// ユニゾン関数
Function Funi ( Str Sstr , Int Ikey ) {
    Sub { TrackKey(Ikey) Sstr } TrackKey(0) Sstr
}

// ディレイ関数
Function Fdly ( Str Sstr , Int Itype , Int Itime , Int Iwait ) {
    If ( Itype == #delay_none ) {
        Sstr
    } If ( Itype == #delay_normal ) {
        Int Iv = MML(v)
        For ( Int i = 1 ; i <= Itime ; i++ ) {
            Sub { r%(Iwait * i) v(Iv / (i + 1)) Sstr }
        }   v(Iv) Sstr
    }
}

// Itimeで指定した時間の後にSstrを実行する
Function Fsto ( Str Sstr , Int Itime ) {
    Sub { r%(Itime) Sstr }
}

// セットアップ
Function SetUp ( Array Ap )
{
    Track( Ap(0) ) Channel( Ap(1) )
    If ( Ap(0) != 1 && Ap(1) != 1 ) {
        @( Ap(2) , Ap(3) , Ap(4) ) v( Ap(5) ) q( Ap(6) )
        FineTune( Ap(7) ) Expression( Ap(8) ) Panpot( Ap(9) )
        Reverb( Ap(10) ) Chorus( Ap(11) )
    } Else {
        If ( Ireset != 0 ) {
            Tempo(    120 ) ResetGM r%(IresetLen) TrackSync
        }   Tempo( Itempo )
    }
}

Select({

Copyright = {"spark.K"}
TrackName = {"冒険者の宿"}

/* ----------------------------------------------------------
  テキスト音楽「サクラ」用テンプレート
    作成日：2010/04/22  最終更新日：2010/08/05
---------------------------------------------------------- */

    Itempo      = 120;  // テンポ
    Itimebase   = 384;  // タイムベース
    Iloop       =   1;  // 繰り返し回数
    Ireset      =   0;  // 音源初期化

Str Melo = {
//1
    [2
    o5 l4 r*`cb l8 ag | ab^g ^^fe :
     l4 dfa`c      | l8 b^a^ g^e^
  ]  l8 df^a ^>c^e | ^^^^ l4 cd
//2
       l8 d^^<a ^^a^>| eee<a ^b^>c
        d^^e ^^"b^ | c^^d ^^e^
       l8 e^^<a ^^b>c| eee<a ^b^>c
        d^^e ^^"b^ | c^^<b ^^a^
//3
       l4 r*dfa r*egb | r*dfa l2 gf
     g1^2 r*2
}

Str Chord = {
    #on = { t.N(0,20,50) }
  #off = { t0 }
//1
    [2
    o5 [2 l1 'cdf' : 'ceg' ] #on l2 'ceg' 'deg' #off
  ]
//2
    [2
     [2 'dfa'1 ] 'ceb'1 l2 'ceg' 'egb'
  ]
//3
    l1 'dfa' 'egb' 'dfa' #on [2 '"a-ce-'2 ]
  l1 'ceg' #off '"gce'
}
Key = 7
        TimeBase ( Itimebase )
    //  SetUp (tr,ch, @1, @2, @3,  v,  q, ft,exp,pan,rev,cho)
        SetUp ( 1, 1,  1,  0,  0,100, 96, 64,127, 64,  0,  0)
        SetUp ( 2, 2, 83,  0,  0,120, 96, 64,127, 64, 60,  0)
    M.Frequency(!4) M.W(0,30,!2)
    EP.Frequency(!32) EP.W(127,60,!1)
    TrackKey(0) Melo
    M(0) EP(127)
    TrackKey(12) @89 Melo
        SetUp ( 3, 3, 12,  0,  0, 90, 96, 64,127, 64, 30,  0)
    [2 Chord ]


},{

Copyright = {"spark.K"}
TrackName = {"ベンチに座って"}

/* ----------------------------------------------------------
  テキスト音楽「サクラ」用テンプレート
    作成日：2010/04/22  最終更新日：2010/06/19
---------------------------------------------------------- */
     Itempo      = 112;  // テンポ
     Itimebase   = 384;  // タイムベース
     Iloop       =   1;  // 繰り返し回数
     Ireset      =   1;  // 音源初期化
                            // 拍子
    Int Ibeats      =   3;  // 分子
    Int Ilen        =   4;  // 分母

Key = 0
 Melo = {
    [16 r2. ]
  EP.W(127,60,!2^4,59,31,!8) M.W(0,20,!16)
  o6 l8 a2gf l4edc | d<a2^2.
       l8 a2g`c l4agf | e2^8f8 e2.
  o5 l4 def a2. | "ace g2e4
     l4 fed c2"a | d2.^2 e4

     l4 fga TempoChange ( Itempo , 80 , !2^4 ) gce | d1.
}

 Chord = {
    o5 l2.
  [2 'dfa' 'dgb' 'dfa'2 'dfa'4 'dgb'2 'eg'8'ce'8 ]    // 8
  [2
      '"b-da'2 '"b-da'4 '"acg'2 'ce'8'"ac'8 | '"adf'2 '"adf'4 : '"ade'2 '"ac'4
  ]   '"ade'                                          // 8
  
  [2
      '"b-da'2 '"b-da'4 | '"acg'2 '"ace'4 | '"adf'2 '"adf'4 '"ade'2 '"ac'4 
  ]
  
  '"b-da'2 '"b-da'4 '"b-da' | '"acg'2 '"acg'4 '"acg'
  '"b-df'2 '"b-df'4 '"ace'2 '"ace'4 | 'dfa'2 'dfa'4 'dfa'2 'ceg'4
  '"b-da'2 '"b-da'4 | '"ace'4 'ceg'4 '"ace'4 | 'dfa'^8 ""d1.
}

        TimeBase ( Itimebase )
    //SetTimeSignature ( Ibeats , Ilen )
    //  SetUp (tr,ch, @1, @2, @3,  v,  q, ft,exp,pan,rev,cho)
        SetUp (21, 1,  1,  0,  0,100, 96, 64,127, 64,  0,  0)
        SetUp (22, 2, 83,  0,  0,110, 96, 64,127, 64, 90, 50) // メロディ
        Melo y111,1
        SetUp (23, 3,  3,  0,  0,100, 96, 64,127, 64, 60, 30) // ピアノ
        Chord


},{

Copyright = {"LITTLE.B.C"}
TrackName = {"クローズドアイ"}

/* ----------------------------------------------------------
  テキスト音楽「サクラ」用テンプレート
    作成日：2010/04/22  最終更新日：2010/05/01
---------------------------------------------------------- */

    Itempo      = 120;  // テンポ
    Itimebase   = 384;  // タイムベース
    Iloop       =   1;  // 繰り返し回数
    Ireset      =   1;  // 音源初期化

// 楽器
Int __p = 003;
Int __m = 012;

Str _v1 = {
    q192 l8 o4
  // 1
      cegb ^^g^ cegb ^^ge
  // 2
    [4 dfa>c ^^<a^  ceg:b ^^ge ] b egb>d<
  // 3
      fa>ce ^^c^< | fa>ce ^^c<a
    cegb ^^g^ | cegb ^^ge
    dfa>c< d>c<af | egb>d< e>d<bg
    <b>dfa< b>afd | <a->cea- gfed
    cegb ^^g^ cegb ^^ge
}

Str _v2 = {
    q192 l8 o4
  // 4
      [3 dfa>c ^^<a^ cegb ^^ge ]
    <b>dfa ^^g^ cegb egb>d<
  // 5
      fa>ce ^^c^< | fa>ce ^^c<a
    cegb ^^g^ | cegb ^^ge
    dfa>c< d>c<af | egb>d< e>d<bg
    <b>dfa< b>afd | <a->cea- gfed
    [3 cegb ^^g^ ] q768 cegb ^^^^
}

Str _m1 = {
    // 1
      r1^1
  // 2
  q96 o5
      [2 l4ra>c< l8a>c< | l8 bage ga^ l16ge :| l8de^c de^f | g2.e4 ]
    l8de^c de^ l16cd | e2 l8 >c<bag
  // 3
      q64 f4 q96 l8>ec^<a>c2. l4de< | l8 bgga b>ed<b8^2> cdc<b
    l4 rdfa regb | r"bda g l8fe l4de | e8g8^2. r1
}

Str _m2 = {
    // 4
  q96 o5
        l4 rcda l8gf^e ^d^e | c4<a4.b4g8> r1
        l4 rcda l8gf^e ^d^e | l4 c<ba l8b>c r2 l8 o7 c<bag
  // 5
      q64 f4 q96 l8>ec^<a>c2. l4de< | l8 bgga b>ed<b8^2> cdc<b
    l4 rdfa regb | r"bda g l8fe l4de | e8g8^2. r1
}

        TimeBase ( Itimebase )
    //  SetUp (tr,ch, @1, @2, @3,  v,  q, ft,exp,pan,rev,cho)

      // 音源初期化
        SetUp (31, 1,  1,  0,  0,100, 96, 64,127, 64,  0,  0)
    
    // ピアノパート
        SetUp (32, 2,__p,  0,  0,100, 96, 64,127, 64, 90,  0)
    M(0) _v1; _v2;
    
    // ピアノパート（ディレイ）
        SetUp (33, 3,__p,  0,  0, 67, 96, 60,127, 64, 90,  0)
    M(0) r12 _v1; _v2;
    
    // メロディパート
        SetUp (34, 4,__m,  0,  0,120, 96, 64,127, 64, 30,  0)
    M(16) _m1; _m2;

    // メロディパート（ディレイ）
        SetUp (35, 5,__m,  0,  0, 60, 96, 60,127, 64, 30,  0)
    M(0) r12 _m1; _m2;


},{

Copyright = {"spark.K"}
TrackName = {"白夜の森"}

/* ----------------------------------------------------------
  テキスト音楽「サクラ」用テンプレート
    作成日：2010/04/22  最終更新日：2010/08/05
---------------------------------------------------------- */

    Itempo      = 120;  // テンポ
    Itimebase   = 384;  // タイムベース
    Iloop       =   1;  // 繰り返し回数
    Ireset      =   0;  // 音源初期化
                            // 拍子
    Int Ibeats      =   4;  // 分子

Str Melo = {
//1
  l4 o6 ab`cb | aef+d< | bga^ | ^^r*e
//2
        ab`cb | aef+d> | cd<bg| ^^r*e
//3
  l8    fgab> | cdef   | g^^^ | ^^<a^
        gab>c | defg   | a^^^ | l16 b^^`c^^b^
//4
        e1^2 r*4 <b4 | a1e2^4 // r*4
}

Str Piano = {
//1-2
    l8 o5
  [8 Sub{ ea`ca f+a`ca } a>cec | df+af+< ]
//3
    [4 Sub{ dfaf } f>cfc< ] [4 Sub{ dgbg } g>dgd< ]
//4
  [4 Sub{ ea`ca f+a`ca } a>cec | df+af+< ]
}
        TimeBase ( Itimebase )
    //  SetUp (tr,ch, @1, @2, @3,  v,  q, ft,exp,pan,rev,cho)
        SetUp (41, 1,  1,  0,  0,100, 96, 64,127, 64,  0,  0)
        SetUp (42, 2, 74,  0,  0,100, 96, 64,127, 64, 60,  0)
    M.Frequency(!8) M.W(0,30,!2)
    EP.Frequency(!16) EP.W(127,60,!1)
    [(Iloop) Melo ] r*4
        SetUp (43,12, 74,  0,  0, 67, 96, 64,127, 64,120,  0) r8
    [(Iloop) Melo ] r*8
        SetUp (44,15, 74,  0,  0, 33, 96, 64,127, 64,120,  0) r4
    [(Iloop) Melo ]
        SetUp ( 3, 3,  2,  0,  0, 90, 96, 64,127, 64, 60,  0)
    [(Iloop) Piano ]
        SetUp (45,13,100,  0,  0, 30, 96, 56,127, 64,120,  0)
    [(Iloop) Piano ]


},{

Copyright = {"spark.K"}
TrackName = {"長い道のり"}

/* ----------------------------------------------------------
  テキスト音楽「サクラ」用テンプレート
    作成日：2010/04/22  最終更新日：2010/06/19
---------------------------------------------------------- */

    Itempo      = 120;  // テンポ
    Itimebase   = 384;  // タイムベース
    Iloop       =   2;  // 繰り返し回数
    Ireset      =   1;  // 音源初期化
                            // 拍子
    Int Ibeats      =   4;  // 分子
    Int Ilen        =   4;  // 分母

#e2 = {EP.W=127,63,!1}
#ex = {EP.W=127,31,!1^1^1^1}
#en = {EP=127}
#mod = {M.W(0,20,!4,20,30,!16)}

Int LoopStart;
Str Melo = {
    o5 M.Frequency(!8) EP.Frequency(!16) #mod
    #e2;l4;f+ab^ LoopStart = Time;

  [4
  #e2;l8;
    a^>ed f+eg^ agf+d f+ee<b
    abge abge b`cbg abg^
    a^b-g ab-`cb- >dfe-c d^^e-
    c^d"b- c^d"b- c^"b-c d^^ l24 #en g^f+ #e2 l8
    e^<a^ ^^^^ ^^^^ ^^a^
    
    #ex e^^^ ^^^^ ^^^^ ^^^d+
        f^^^ ^^^^ ^^^^ ^^^f+
        e^^^ ^^^^ ^^^^ ^^^^ #e2
  ]

  #e2;l8;
  [2 a^>ed f+eg^< ]
  a^>ed gea^ b^ l32b-a-g^ ^^^^ l8 f+edd
  e-^b-a- `c+^b-a- b-^^^ a-^g-^
  a-^^^ ^^a-^ b-^^^ g^a^
  a^^^ ^^^^ [6 r* ] eg<
}

Str Bass = {
    o3 l8
    "d^"d^ e`cbg
  [4
    [2 "aa`ea `f+a`ga `aa`ga `f+a`ea ]
    [2 "b-b-`fb- `gb-`a-b- `b-b-`a-b- `gb-`fb- ]
    [2 "aa`ea `f+a`ga `aa`ga `f+a`ea ]
    [1 "b-b-`fb- `gb-`a-b- `b-b-`a-b- `gb-`fb- ]
    [1 "aa`ea `f+a`ga `aa`ga `f+a`ea ]
  ]

    l4;
    [2 "aa`ea `f+a`ga ]
    [2 "a-a-`e-a- `fa-:`g-a- ] `ee
    l8;
    [1 "aa`ea `f+a`ga "d^"d^ "e`cbg ]
}

        TimeBase ( Itimebase )
    //SetTimeSignature ( Ibeats , Ilen )
    Key ( 0 ) // キー指定
    //  SetUp (tr,ch, @1, @2, @3,  v,  q, ft,exp,pan,rev,cho)
        SetUp (41, 1,  1,  0,  0,100, 96, 64,127, 64,  0,  0)

        SetUp (42, 2, 83,  0,  0,100, 96, 64,127, 64, 90, 30) // メロディ
        Melo
        SetUp (43,12, 92,  0,  0, 67, 96, 64,127, 64, 90, 30) // メロディ（ディレイ）
        #e2={} #ex={} #mod={} Melo
        SetUp (44, 3,  3,  0,  0,100, 96, 64,127, 64, 50, 20) // ベース
        Bass
    // ループ位置の設定
        Time ( LoopStart ) y111,1;

})