// メタイベント Copyright = {"かまきりざーど"} TrackName = {"「久しぶりなのにこれかよぅ」な曲"} // 基本的な設定 Tempo = 110; TimeBase = 480; // 関数(この曲で使ってないのもある) /*: MT (開始トラック, 終了トラック, S) MT: 文字列Sを複数のトラックに対して実行する。 【使い方】 // トラック2~5のベロシティを+20する。 MT (2, 5, { v+20 }) ET (S, トラック,..<可変>) ET: 文字列Sを一部のトラックに対して実行する。 【使い方】 // トラック1とトラック11に対して「ドミソ」と鳴らす。 ET ({ ceg }, 1, 11) ONCE (フラグ, A, B) ONCE: フラグがオフならAを実行する。オンならBを実行する。 戻り値には必ずオンが返る。一度だけAを実行させる処理をIfを使わずに書きたい時に。 【使い方】 // 1回だけ途中で「かっこー」と鳴らす。 [3 cdef #F = ONCE(#F, { ``d32r8`b32r8 }) gab`c ] LTR (S, ティック) LTR: 指定したティックの経過後、Sを実行する。LaTeRの略。 【使い方】 // 対位法的な LTR { l4 "g"b"a-c"bd },!2 l8 ce-df e-cd"b cde-f g2 TRCH (チャンネル) TRCH: トラックとチャンネルを同時に設定しちゃう。 DRTR (トラック) DRTR: チャンネルを10にして別トラックに分ける。 MsToTickAbout (ミリ秒) MsToTickAbout: 指定した時間(ミリ秒)をティックに変換する。 ただし、テンポやタイムベースによっては誤差が生じる場合がある。 【使い方】 // 「ドミソ」の和音を500ミリ秒くらい鳴らす 'ceg'%(MsToTickAbout(500)) :*/ Function MT (From, To, Str S) { For (; From <= To; From++) { TR(From) S } } Function ET (Str S, Array TRs) { For (Int I = 0; I < SizeOf(TRs); I++) { TR(TRs(I)) S } } Function ONCE (Flag, Array A) { Str S; Result = on; S = A(Flag == on); S } Function LTR (Str S, Len) { Sub { r%(Len); S } } Function TRCH (Ch) { TR(Ch) CH(Ch) } Function DRTR (Tr) { TR(Tr) CH(10) } Function MsToTickAbout (Ms) { Result = (Ms * TimeBase) / (60000 / Tempo) } // MIDIリセットに必要なブランクタイムを計算する Int BlankMs = 50; Int BlankTick = MsToTickAbout(BlankMs); // 初期化 System.MeasureShift(1) System.TimeSignature(4, 4) TR(00) Time(0:1:0) ResetGS; MT(01, 16, { ArgOrder(lvqto); Time(0:1:BlankTick) }) // トラック設定 /*: TRCH(01) y0(000) r%1; y32(000) r%1; @(001) r%1; P(064) r%1; V(100) r%1; EP(127) r%1; REV(000) r%1; CHO(000) r%1; :*/ TRCH(01) y0(000) r%1; y32(000) r%1; @(045) r%1; P(064) r%1; V(100) r%1; EP(127) r%1; REV(060) r%1; CHO(030) r%1; TRCH(02) y0(000) r%1; y32(000) r%1; @(007) r%1; P(064) r%1; V(100) r%1; EP(127) r%1; REV(060) r%1; CHO(030) r%1; // ここからデータを書く // そろそろ綺麗なソースの書き方を考えたい。 TR(01) v100 q80 o6 EP.W(127, 127, !8, 127, 60, !1) l4 ce-gb- l8 a-^^g f^^^ | l4 "bdfa- l8 g^^f e-^^^ l4 e-cb-g l8 a-^^b- `c^^^ | l4 bgdf l8 e-^^d c^^^ | c1 '"bd*'1 TR(02) v100 q80 Include(delay.h) Sub { // 低音部 o4 l4 [2 c"g ] [2 d"g ] d"gd"b c4 l8 <ga-gfe-d l4 [2 cg ] [2 fa- ] gab>d c"gc4."b-8 | "a-1 "g1 } o5 LTR { [3 MidiDelay{ ``d32r8`b32r8 r4 },3,!12 ] },!1^4 // かっこー l8 [4 e-c ] [4 d"b ] [4 d"b ] [4 e-c ] l8 [4 e-c ] [4 fc ] [4 d"g ] ce-de- c^^^ | t.N(0, 16, 36, 64) '"f"a-ce-'1 '"e"gce'1 // 1行コメント /* 複数行コメント */ /** 複数行コメント(強調1) **/ /*: 複数行コメント(強調2) :*/ // エディタ設定の Brackets から // "/**" "**/" や "/*-" "-*/" みたいに色登録してあげると // いろんな色のコメントアウトが作れる。 // ただし、"/*" "*/" のやつを最後にしないとうまくいかないみたいだ。