コマンド一覧

大文字、小文字の区別はありませんが、半角で記述してください。
表の中の[n]というところは例えば T150 のように具体的な数字を書いてください。

音程関連

CDEFGAB音名。ドレミファソラシに対応。+または#をつければ半音上がる(C+、C#など)。-をつければ半音下がる(D-など)。
音階のあとに数字を付与することによって、音の長さを指定できます。八分音符のドなら C8 など。更にその後にピリオド(.)を付けると付点音符になります。
また上級者向けですが、C%96のように%を間に挟めばTickカウントによる指定が可能です(Rev.38695以降)。FlMMLでは全音符のtickカウントが384なので、4分音符の場合は 384÷4、8分音符の場合は384÷8で計算できます。384以上の長さを指定することも出来ます。
R休符。これも同様に長さを指定できます。
O[n]オクターブ指定。0~8まで。
<オクターブを上げます。
>オクターブを下げます。
ns絶対ノートシフト。例えば CDE NS-1 CDE NS-1 CDEと書くと二度目のドレミは半音下がります。三度目も同じ半音さがったドレミです。
@ns相対ノートシフト。例えば CDE @NS-1 CDE @NS-1 CDEと書くと二度目のドレミは半音、三度目は更に半音下がります。
#OCTAVE REVERSEMMLの先頭にこの記述をすると、オクターブ上げ下げ(不等号)の機能が逆転します。
@D[n]デチューン。cent単位でピッチを調整します。プラスマイナスどちらも可能。
@L[n],[n],[n],[n],[n],[n]LFO。depth、width、form、delay、time、destの順。depthは音程を揺らす振幅。単位はcent。widthは1周期の長さ。単位はticks。formは波形。0:サイン波/1:ノコギリ波/2:三角波/3:パルス波。番号の前にマイナスを付けると上下が反転した波形になる。delayは遅延。発音からこのticks経過後にLFOがスタートする。timeは回数。ここで指定した回数が終わったらLFOなしに戻る。destはLFOで揺らすパラメータ(0:音程、1:音量、2:フィルタカットオフ周波数、3:パルス幅、4:FM入力レベル、5:パン)。form、delay、time、destは省略可能。

音長関連

L[n]デフォルト音長指定。
Q[n]ゲートタイムの割合の指定。ある音を再生するとき、実際には指定された音長の[n]/16だけが発音され、残りの時間は休符になります。
@Q[n]ゲートタイムの絶対指定。qで指定されたゲートタイムら全音符のx/192の長さを引いたゲートタイムにする。
&タイまたはスラー。C2&C8と書けばタイ、C&D&Eと書けばスラー。Rev.38695以降なら、タイはC2&8のような書き方も可能です。
{}通常の音長指定では割り切れないような連符(5連符や7連符)を演奏する。{音程データ}音長 と言う感じで指定し、音長分の長さ内に音程データが均等に割り振られます。
[例] {CEGEC}2 /* 2分音符の長さ内で CEGEC を均等な長さで演奏します */
音長を省略するとデフォルト音長が使用されます。また、あまりにも無茶なデータは正しく演奏しない場合があるのでほどほどに。
{ }内では * コマンドは使用できません。連符を引数付きマクロの引数に使う場合は " " で括った指定方法で指定してください。
$MACRO{ARG} = %ARG;
$MACRO{{CDEFG}4} /* NG */
$MACRO{"{CDEFG}4"} /* OK */
(Rev.38695以降)

音量関連

V[n]大まかなベロシティ(音量)指定。0~15まで。
@V[n]細かいベロシティ(音量)指定。0~127まで。
@X[n]エクスプレッションの指定。ベロシティは発音時の音の強さですが、エクスプレッションは音の抑揚をつけるのに使われます。ですから、スラーの途中で変更可能です。0~127まで。
x[n]音量モードの指定。0のとき線形の音量指定。1のとき非線形の(音楽的な)音量指定。エンベロープとベロシティに影響します。デフォルトは0。
(ベロシティ(音量)を上げます。直前に使った音量コマンドがvか@vかによって変化量が変わります。
)ベロシティ(音量)を下げます。直前に使った音量コマンドがvか@vかによって変化量が変わります。
#VELOCITY REVERSEMMLの先頭にこの記述をすると、ベロシティ上げ下げ(括弧)の機能が逆転します。

制御関連

T[n]BPMによるテンポ指定。小数点以下第二位まで有効です(Rev.38599~)。
;(セミコロン)次のトラックへ移ります。和音を出したいときにはコレを使います。
/:[n]/:/(スラッシュ・コロン~スラッシュ~コロン・スラッシュ)繰り返しの指定。「/:」から「:/」の間を[n]回繰り返します。最終ループのときは「/」でループを抜けます。「/」は省略可能。[n]省略時は2回繰り返し。
/**//**/に囲まれた文字列はコメントとして読み飛ばします。(Rev.[650]から実装)
@P[n]PAN。1~127で、音の定位を指定します。小さいほど左、大きいほど右で、デフォルトは64。
*MML風ポルタメント(Rev.38695以降)。ノートを * で繋げるとポルタメントになります。
[例] C*<C4; /* ドからオクターブ上のドまで4分音符の長さで滑らかに変化します */
C1&C*<C4&C2. /* ドを全音符分なった後、オクターブ上のドまで4分音符の長さで変化し、その後符点2分音符の長さでなります */
次のような記述は出来ません。
[例] C*<C4*>C4 /* この場合はエラーになります */
全音符以上の長さで変化をさせたい場合は音長のみのタイで実現できます。
[例] C*<C1&1&1&1; /* 全音符4つ分の長さでドからオクターブ上のドまで変化します */
@UMIDIデータ風ポルタメント(Rev.38695以降)。@U コマンドは次の4つあります。
a) @U0
ポルタメントをOFFにします。MIDIで言う所のCC#65に相当します。
b) @U1
ポルタメントをONにしますMIDIで言う所のCC#65に相当します。
c) @U2,レート(0~127)
音程変化の割合を指定します。0が早く、127がゆっくり音程が変化します。MIDIで言う所のCC#5に相当します。
d) @U3,基準の音程
通常は直前の音程からの音程変化になるが、@U3を指定すると変化を開始する音程を指定することが出来ます。
有効になるのはこのコマンドが指定された直後のノートのみで、その次からはまた直前のノートからとなります。
基準の音程の指定方法は2種類あり、ノート番号を直接入力する方法とノートを文字として書く方法
[例]
@U3,48 /* o4c からの音程変化 */
@U3,O3A- /* o3a-からの音程変化 */
なお、文字表示の場合は オクターブ記号(O)、ノート文字(A~G)、フラット・シャープ(-,+,#)のみが使用できます。相対オクターブ変更等は使用出来ないので注意してください。MIDIで言う所のCC#84に相当します。
[例]
@U2,40 @U1 CG<C;

音色関連

@[n]VCOの波形(音色)を選びます。0:サイン波/1:ノコギリ波/2:三角波/3:パルス波/4:ホワイトノイズ。/5:FCパルス波/6:FC三角波/7:FCノイズ/8:FCショートノイズ/9:FC DPCM/10:GB波形メモリ音源/11:GBノイズ/12:GBショートノイズ/13:波形メモリ音源
@7、@8、@11、@12のノイズは音程によって周波数が変わります。o0cが一番高い周波数で、音程を上げるに従って低周波ノイズになります。特殊な表現なので注意してください。
@0のとき、@0-1とすると半波整流、@0-2とすれば全波整流の波形になります。@0-0なら通常通りです。
@1のとき、@1-1とすると変位0から始まるノコギリ波になります。
@2のとき、@2-1とすると変位0から始まる三角波になります。
@6のとき、@6-1とすると変位0から始まるFC三角波になります。
@9のFC DPCMは後述する#WAV9によって音色を定義し、@9-0のようにして音色を選択します。o0cが一番低い周波数で、音程を上げると16段階までの周波数を表現できます。
@10のGB波形メモリ音源も後述する#WAV10によって音色を定義し、@10-0のようにして音色を選択します。
@13の波形メモリ音源も後述する#WAV13によって音色を定義し、@13-0のようにして音色を選択します。
@E1,[n],[n],[n],[n]VCA(音量)のエンベロープ設定。attack、decay、sustain、releaseの順に指定します。attack, decay, releaseは127イコール1秒。sustainは0~127の間で指定します。また、decayとsustainのペアを複数続けて書くことでエンベロープの制御点を増やすことができます。
@E2,[n],[n],[n],[n]VCF(フィルタ)のエンベロープの設定。attack、decay、sustain、releaseの順に指定します。attack, decay, releaseは127イコール1秒。sustainは0~127の間で指定します。また、decayとsustainのペアを複数続けて書くことでエンベロープの制御点を増やすことができます。
@W[n]@3パルス波を選択しているときのパルス幅(デューティ比)をパーセントで指定します。0~100でデフォルトは50。@5のFCパルス波を選択しているときは12.5×n%のパルス波になります。@3のときマイナス指定をするとMIXモード(ノイズ混じりの音)になります。
@N[n]@4ノイズ、または@3MIXモード時のノイズ周波数設定。0~127で、大きいほど低い感じになります。
@'A'フォルマント・フィルタ。人の声が持つ特徴的な倍音を強調することで声のように聞かせます。@'A'は「あ」@'I'は「い」@'U'は「う」@'E'は「え」@'O'は「お」。@''で機能オフ。
@F[n],[n],[n],[n]フィルタ。switch、amount、frequency、resonanceの順。switchは0のときフィルタなし / 1のとき荒いLPF / 2のとき高品質LPF / -1のとき荒いHPF / -2のとき高品質HPF。amountは-127~127でフィルターエンベロープの影響度を設定します。frequencyは0~127で基準になるカットオフ周波数を設定します。resonanceは0~127でレゾナンス量を設定します。127のときは発振します。@E2のエンベロープが影響します。
@o[n],[n]FM変調のためのパイプへの出力。一つ目の数値が0ならOFF。1なら上書き、2なら加算モード。二つ目の数字は出力するパイプの番号(0~3)。詳しくはこちらの記事を。
@i[n],[n]FM変調のためのパイプからの入力。一つ目の数値が0ならOFF。1~8なら変調の感度を指定します。二つ目の数字は入力するパイプの番号(0~3)。
@r[n],[n]パイプ中の音声とのリングモジュレーション。一つ目の数値がモジュレーションの感度、0ならオフ。1~8ならモジュレーションの感度を指定します。4のときが通常のリングモジュレーション相当。二つ目の数値はモジュレーションに使用するパイプの番号(0~3)。
@s[n],[n]オシレータシンク。一つ目の数値が0ならOFF。1なら同期信号用パイプへ同期信号を出力(そのトラックの音声出力には影響なし)。2ならオシレータを同期信号用パイプの信号に同期させる。二つ目の数値は出力先・入力元とする同期信号用パイプ番号(0~3)。
#WAV9 [n],[n],[n],[....]FC DPCM音源のサンプルデータ定義。詳しくはこちらの記事を。
#WAV10 [n],[....]GB波形メモリ音源の音色テーブル定義。詳しくはこちらの記事を。
#WAV13 [n],[....]波形メモリ音源(@13)の音色テーブル定義。最初の数値で音色番号、そのあとに続くデータは波形データを16進数2桁で1サンプルを表すサンプル列(最大1024サンプル)です。

発音数関連

#USING POLY [POLYMAX] [force]ポリフォニックモード(以降 POLY)を有効にします。
この宣言がなければ、FlMMLは以前と同じ挙動をします。
# ポリフォニックモードとは
# 1つのトラックあたり複数の音を同時に鳴らすことが出来ます。
# 後述の和音記法を用いて1トラックで和音を奏でることが可能です。
# 長いリリースの音でも途切れずに再生が可能です。

スペースを空けて最大発音数(以降 POLYMAX)を記述します。
その後にスペースを空けて"force"と記述すると強制的にすべてのトラックにPOLYを設定します。

FMには向いてないので、FMトラックにはPOLYを適用しないように。
@pl[n]このコマンド以降、現在のトラックに対してPOLYを有効にします。

続けて最大発音数を記述します。
POLYMAXでリミットされます。
省略時はPOLYMAXが適用されます。

"#USING POLY"が宣言されていない場合、"@pl"は無視されます。
"#USING POLY"が宣言されていても、"@pl"がない場合MONOモード(以前のFlMML)のままですが
"#USING POLY force"が宣言されている場合はこの限りではありません。
[](大カッコ)和音記法。
[]で音符を括れば同時に鳴らすことが出来ます。
Rでカッコ内での発音位置をずらすことが出来ます。
#USING POLY宣言必須
使用トラックで@pl必須

機能制限
  スラー使用不可。(使用した場合の動作は未定義)
  連符記述は使用しても意味を成さない。  (分割された音符が同時に発声します。)
  パイプ処理非推奨。
詳しくはこちらの記事を。

付加情報関連

#TITLE曲のタイトルを記述します。
#ARTIST歌手・作曲者・編曲者などを記述します。
#COMMENTコメントを記述します。
#CODINGMML作成者の名前を記述します。
#PRAGMA外部ツールが使用するタグです。FlMMLでは当該行を無視します

FlMMLのページに戻る