MMLコマンド一覧

表記について

コマンド

日本語コマンドは青文字で記す。

<n> は必須オプション
[n] は省略可能オプション

【疑似命令】フラグ

MMLの解釈を変化させる、擬似的な命令。
設定した場所と同じ階層のループ終端・ループ途中脱出終端・連符終端では、設定した効果が自動的に消失する
例えば、ループ中にL8を設定した場合、同一階層のループ終了以降のデフォルトの音長は、元の値(例えばL4)に戻る

例: L4 cd [L8 ef [g] a] bc4d4 [ e8f8 [g8] a8] b4 と同じ

【全チャンネル共通】フラグ

どのチャンネルで指定しても、全チャンネルで同じ効果が出る命令。

♪ 音符
コスト
1 ~ 3
コマンド
C
D
E
F
G
A
B
ふぁ
ファ
説明
規定の音程の音を鳴らす
♪ 休符
コスト
1 ~ 3
コマンド
R
P
♪ 変化記号(シャープ / フラット / ナチュラル)
コスト
0
コマンド
<音符>+
<音符>#
<音符>
<音符>-
<音符>_
<音符>
<音符>=
<音符>
説明
それぞれ、直前の音符の音程を半音上げる / 下げる / 元に戻す。 1回だけ指定できる(ダブルシャープ / ダブルフラットなどには未対応)
シャープかフラットを付加した音符は、後述の @T を使うと(例えば E+F を)本来とは異なる音程に設定することができる。 ただし C+D- は同一(全部で最大14個の音程を設定できる)
♪ 音長1
コスト
0 ~ 3
コマンド
<音符>[変化記号][n]
<音符>[変化記号][n].
説明
音符(休符)を [n]分音符(休符)にする。 指定しない場合は、 L で設定した音長となる。 . を付加することで、付点[n]分音符(休符)とすることができる
♪ 音長2
コスト
0 ~ 3
コマンド
<音符>[変化記号]%<n>
<音符>[変化記号]%<n>.
パラメータ
<n>: 1 ~ 4095
説明
音長(ステップタイム)を ticks で指定する
付点は繰り返し指定できるが、内部的には全音符 1920 ticks を分割しているので、割り切れない数に注意
♪ タイ
コスト
0 ~ 3
コマンド
[音長]^[音長]
[音長][音長]
説明
音長と音長をつなぐ
いくつも指定できるが、合計のステップタイムが 4095 を超えてはならない。合計が 4095 を超える場合には 後述の & で音符同士を接続する。この際 ~ も指定するとアタックを抑制することができる。
また、音長にマイナスを指定することで減算可能。
♪ デフォルト音長の設定
コスト
0
コマンド
L<n>
パラメータ
<n>: 1 ~ 1920 (デフォルト: 4)
説明
音符に音長を書かない際の、デフォルトの音長を指定する
♪ オクターブの設定
コスト
1
コマンド
O<n>
パラメータ
<n>: -7 ~ 8 (デフォルト: 4)
説明
オクターブを指定した値に変更する
高音域は折返しノイズのため音痴になる。 また超低音域も音痴または発音されないので注意。
♪ オクターブの変更
コスト
1
コマンド
>
<
説明
オクターブを1つ上げる / 下げる
ループの中で使う場合にも繰り返し適用される
♪ テンポの設定
コスト
2
コマンド
T<n>
<n>
パラメータ
<n>: 16 ~ 1000 (デフォルト: 120)
説明
曲を演奏する際のスピードを設定する。
1分間に4分音符が何拍あるか(BPM)で設定する。但し、あまり正確ではない。
♪ 音圧の設定
コスト
2
コマンド
V<n>
パラメータ
<n>: 0 ~ 15
説明
音符を演奏する際の音圧を設定する
♪ 音色の設定1
コスト
5
コマンド
@<n>
パラメータ
<n>: 音色番号
説明
音符を演奏する際の音色を設定する。音色番号の定義は別記。
♪ 繰り返し演奏(ループ演奏)
コスト
5
コマンド
[[n] ~ ]
/
パラメータ
[n]: 0 ~ 255 (デフォルト: 2)
説明
囲まれた範囲を、指定された回数演奏する。但し、0 の場合は無限回。
曲の終端までにループが閉じられていない場合は、自動で閉じられる。/[0 と同じ。
♪ ループ最終時の演奏指示
コスト
3
コマンド
[ ~ | ~ ]
[ ~ () ~ ]
説明
最終ループの場合に | 以降(もしくは () の間)を演奏しない
コスト
0
コマンド
{[n] ~ }[音長]
パラメータ
[n]: 分割数 (デフォルト: 3)
説明
指定された音長となるように囲まれた範囲の音符を分割して演奏する。 分割された音符の合計は、分割前の音長と等しくなければならない(数が合わなければならない)
通常の連符のルールに従い、音長が4の場合L8が、音長が2の場合はL4などが暗黙的に設定され 一時的に範囲内の「全音符のticks」が自動調整されるので、基本的には譜面どおりの(見た目の)音符を入力すれば良い。 ただし6/8拍子などで使う2連符は {2 cd }.のように付点を補う必要がある。 連符は入れ子にすることができる。範囲内では通常どおりの記述が使えるが、ループは使えない。
♪ ゲートタイムの設定1
コスト
3
コマンド
Q<n>[,m]
パラメータ
<n>: 0 ~ 8(デフォルト: 8)
<m>: -128.0 ~ 127.0(デフォルト: 0)
説明
デフォルトのゲートタイム(発音時間)を音長(ステップタイム)の <n> / 8 倍 +(<m> × 16)ticks に設定する
つまり <n> はいわゆる「前」から指定。 演奏時、ゲートタイムの演算結果がマイナスになる場合の動作は未定義
♪ ゲートタイムの設定2
コスト
3
コマンド
Q%<n>
パラメータ
<n>: 0 ~ 4095
説明
デフォルトのゲートタイム(発音時間)を <n> ticks に設定する
♪ スラー/単発ゲートタイム1
コスト
3
コマンド
<音符>[変化記号][音長]&
<音符>[変化記号][音長],<n>[,m]
パラメータ
<n>: 0 ~ 8
<m>: -128.0 ~ 127.0(デフォルト: 0)
説明
この音符だけ、ゲートタイム(発音時間)を音長(ステップタイム)の <n> / 8 倍 +(<m> × 16)ticks に設定して演奏する。 &,8,0 と同じで、ゲートタイム=ステップタイムとなる。
♪ スラー/単発ゲートタイム2
コスト
3
コマンド
<音符>[変化記号][音長],%<n>
パラメータ
<n>: 0 ~ 4095
説明
この音符だけ、ゲートタイム(発音時間)を <n> ticks に設定して演奏する。
♪ 疑似ポルタメント(アタック無効化)
コスト
3
コマンド
<音符>[変化記号][音長/タイ][スラー]~<音符>
説明
直前の音符のエンベロープ状態を引き継ぎながら、直後の音符を演奏する。 そのため直後の音符のアタックが無く、音程が瞬間で切り替わる。
ゲートタイムを調整しないとあまり意味はない。
♪ 波形メモリ登録
コスト
36 / 68 / 132 / 260
コマンド
@W<ch>,<波形データ>
パラメータ
<ch>: 0 ~ 7
<波形データ>: 1周期分の波形データ
説明
波形データを登録する。
波形データは16進数文字列で、1サンプル2文字(8ビット unsigned)を 32 / 64 / 128 / 256 サンプル。
♪ チューニング
コスト
34
コマンド
@T<freq>
@T<C>,<C+>,<D>…<B>
@T<C>,<C+>,…<E+>,…<B+>
パラメータ
<freq>: 基準となるO4A の周波数(十二平均律)
<C>…<B>: O4 の各音符の周波数(12個)
<C>…<B+>: O4 の各音符の周波数(14個)
説明
各チャンネルごとに指定できる(しなければならない)
デフォルトは 440.0 Hz の十二平均律
設定可能範囲はおよそ 1280 Hz まで
♪ 移調
コスト
34
コマンド
@T+<delta>[,freq]
@T-<delta>[,freq]
パラメータ
<delta>: -12 ~ +12(整数のみ)
[freq]: 移調前の O4A の周波数(未指定時: 440)
説明
チューニング@Tの簡易記述版。 十二平均律を半音(semitone)単位で <delta> 分、移調する。
鍵盤には反映されない
♪ 調号の設定
コスト
0
コマンド
@+<音符>
@-<音符>
@=<音符>
@+{<音符>[音符...]}
@-{<音符>[音符...]}
@={<音符>[音符...]}
説明
音符の変化記号を省略した際の、デフォルトの変化記号を設定する。
例: @+{fcg} で、イ長調
♪ ADSRエンベロープの無効化
コスト
16
コマンド
@E0
説明
ADSRエンベロープの設定を無効化する。
@E1,0,0,127,0 と同じ
♪ ADSRエンベロープの設定1(計算モード)
コスト
16
コマンド
@E1,<A>,<D>,<S>,<R>
パラメータ
<A>, <D>, <R>: 各フェーズ完了までの時間(1/120 秒単位)
<S>: サステインレベルの音圧(0~127)
説明
指定した時間で指定したレベルになるよう、自動的に音圧を調整する
♪ ADSRエンベロープの設定2(テーブルモード)
コスト
18~
コマンド
@E2,<n>,<A>,<D>,<S>,<R>
パラメータ
<n>: 音圧更新タイミング
<A>, <D>, <S>, <R>: 音圧データ(16進数文字列)
説明
毎(<n> + 1)/ 120 秒ごとに、指定した音圧へ順次変化させる。 <A>, <D>, <S>, <R> には各フェーズでの音圧データ(0~F: 16進数)を、更新1単位につき1文字並べて指定する。
<S> についてはリリースまでループする。
<R>が終了すると、次の音符まで最後の音圧を維持する(ミュートの必要があるときは、最後に 0 を指定する)
♪ 音色の設定2(ADSR)
コスト
5
コマンド
@<A>,<D>,<S>,<R>
パラメータ
<A>, <D>, <S>, <R>: 各フェーズの音色番号
説明
音符を演奏する際、ADSRの各フェーズを指定した音色で演奏する。
♪ 周波数スイープ設定
コスト
3
コマンド
@S<m>,<count>,<amount>
パラメータ
<m>: モード
<count>: 0 ~ 15
<amount>: -7 ~ 7(0は無効)
説明
@S0 で無効
@S1 でFCスタイル(CH1モード)
@S2 でFCスタイル(CH2モード)
@S3 でGBスタイル
♪ 周波数指定音符
コスト
4
コマンド
@F<n>[,音長]
パラメータ
<n>: 1 ~ 14000.0
説明
スラー/単発ゲートタイムを使用可能(音長指定の一部なので,が必須)
高音域は折返しノイズのため音痴になる。 また超低音域も音痴または発音されないので注意。
音長を指定しない場合は、Lで設定した音長となる。
♪ フレーズ定義
コスト
1 ~
コマンド
$<x>=""
パラメータ
<x>: アルファベット / 数字
説明
"で囲われた部分を、後で使うためのフレーズとして定義する。頻出のフレーズを定義して使うことで、容量を節約することができる。
フレーズ定義中に、フレーズの演奏およびフレーズの定義を行うことはできない。 再定義はできない。また、定義はチャンネルごとに独立している。
♪ フレーズ演奏
コスト
3
コマンド
$<x>
パラメータ
<x>: アルファベット / 数字
説明
事前に定義したフレーズを演奏する
♪ コメント
コスト
0
コマンド
;<行末>
!!
!!<最後>
説明
それぞれ行コメント、ブロックコメント、最後までコメント。
♪ デバッグモード
コスト
0
コマンド
??
説明
囲われた部分の音符を演奏しない。
コメントとは違い、音符以外のコマンドは有効のまま。