﻿piko piko kun MML spec


できるだけ T'SoundSystem の MML

    http://www.toyoshima-house.net/classic/tss/manual.html

のサブセットとなるように心がけました (が、ウソっぱちです)。


基本的なルール
    . 常に、アルファベットの大文字小文字を区別します。

    . 行頭に '#' がある場合、制御コマンドを意味します。

    . '{' ... '}' はどのような場所にあってもコメントを意味します。
      コメントは入れ子にすることが可能です。

    . '//' 以降行末までコメントとなります。


制御コマンド

  #END               この行で MML コンパイル処理を終了します。
                     以降の行は無視されます。

  #OCTAVE
    #OCTAVE NORMAL   '<' でオクターブアップ、 '>' でオクターブダウン
    #OCTAVE REVERSE  '>' でオクターブアップ、 '<' でオクターブダウン

  #VOLUME
    #VOLUME NORMAL   '(' でボリュームアップ、 ')' でボリュームダウン
    #VOLUME REVERSE  ')' でボリュームアップ、 '(' でボリュームダウン

  #MODE
    #MODE TSOUND     @v 詳細な音量設定の範囲 [0,255]
                     q  ゲート比の範囲       [0,16]
                     <> 相対オクターブ指定   NORMAL

    #MODE MDX        @v 詳細な音量設定の範囲 [0,127]
                     q  ゲート比 (q) の範囲  [0,8]
                     >< 相対オクターブ指定   REVERSE
                     行頭に [A-Z] がある場合、トラックの指定を意味します。

  #[A-Z]             トラック指定


MML コマンド
  音長指定
    - 1, 2, 4, 6 などの通常の音長指定
    - '.' による付点指定
    - '^' によるタイ指定 (音長をつなげる)
    - '%' による絶対音長指定
      全音符を 192 とした音長指定。
      内部的には /2 される (全音符が 96 扱い) ので、奇数は指定しないこと
    - どのような場合でも、全音符以上の音長指定はできないので注意

  l<音長>            デフォルト音長。音程および休符で音長が省略された際の値
                     付点、'^'、'%' 指定も使用可能

  r[音長]            休符

  abcdefg[+-][音長]  音程。'+' でシャープ。'-' でフラット

  o<オクターブ値>    オクターブ。オクターブの範囲は [0,8]

  < >                相対オクターブ。#MODE, #OCTAVE によって動作が変わる。

  &                  スラー (キーオフしない)

  t<テンポ>          テンポ。１分間に演奏される４分音符の個数。

  /:[n]～/～:/       n 回リピート。n が省略された場合は n = 2 となる。
                     最後の１回の時に '/' を処理した場合は ':/' まで飛ぶ。

  [[n]～|～][n]      /: ... / ... :/ と同様の動作を行う (MML 互換性用)。
                     ']' の後ろにリピート回数を記述することもできる。

  v<音量>            音量設定。音量の範囲は [0,15]

  @v<音量>           詳細音量設定。音量の範囲は
                     #MODE TSOUND の場合 [0,255]。#MODE MDX の場合 [0,127]

  ([音量] )[音量]    相対音量設定。直前の音量設定が 'v' の場合は 'v' の単位
                     で音量が増減する。'@v' の場合は詳細音量単位で増減する。

  ~[音量] _[音量]    相対音量詳細設定。常に詳細音量での増減となる。

  k[デチューン]      デチューン値は符号付。64 で半音ずれる。

  D[デチューン]      k と同じ

  q<ゲートタイム比>  音長に対して、どの程度の割合でキーオフするかを指定する。

  @<音色番号>        音色指定。範囲は [0,494]。o3 c で原音が出力される。
                     必ずしも o3 c が「ド」の音になるとは限らないので、
                     適宜 'n' コマンドを用いて補正すること。

  n<シフト値>        ノートシフト。符号付半音単位

  @tA, @tD           アタック、ディケイ時間設定 (サンプル時間単位)

  @rA, @rD, @rS, @rR アタック、ディケイ、サスティン、リリースレート設定 (１サンプルあたりの音量増減値)

  s<速度>            リリースレート設定。@rR の別名

  @tL                LFO ディレイ設定 (サンプル時間単位)

  @rL                LFO レート設定 (１サンプルあたりの増減値。符号付)

  @rW                LFO デプス設定 (増減幅の絶対値 @rW10 なら [-10,+10] の範囲)
