マビノギ MML 文法ガイド
ゼロから、読めて書けるところまで
MML とは
MML(Music Macro Language、音楽マクロ言語)は、楽譜をただのテキストで書く方法です。マビノギの作曲システムはまさにこの形式を受け取ります——t120 l4 cdefg のような文字列をゲームの白紙の楽譜に貼れば、キャラクターがそのとおりに演奏します。
五線譜でも数字譜でもなく、「各音符をどう鳴らすかを命令として書き並べたもの」に近いものです。長所はコピー&ペーストができ、テキストツールで加工できること。短所は、間違っていても誰も教えてくれないことで、たいていは鳴らして初めて気づきます。
以下の各節はそのままエディターに貼って再生できます。読みながら書き換えてみてください。説明を理解することより、違いが耳で分かることのほうが大事です。
音符と休符
7 つの音、Do から Si までに 7 つの文字が対応します:
| 書き方 | 音 | 書き方 | 音 |
|---|---|---|---|
c | Do | g | Sol |
d | Re | a | La |
e | Mi | b | Si |
f | Fa | r | 休符(音を出しません) |
シャープは + または #、フラットは - です:
c+ Do のシャープ(Re のフラットと同じ)
d- Re のフラット
大文字と小文字はどちらでもよく、本サイトは同じ音として扱います。
長さと付点
音名のうしろに数字を付けるとその音の長さになります。数字は分母です:
| 書き方 | 意味 |
|---|---|
c1 | 全音符 |
c2 | 2 分音符 |
c4 | 4 分音符 |
c8 | 8 分音符 |
c16 | 16 分音符 |
すべての音に数字を書くのは面倒なので、l(length)で既定の長さを決められます。うしろに数字のない音はこれを使います:
l8 cdefg c8 d8 e8 f8 g8 とまったく同じ
l8 cde4 fg e だけが 4 分音符で、あとは 8 分
うしろに点を 1 つ付けると付点になり、長さが 1.5 倍になります:
c4. 4 分音符 × 1.5
c4.. 4 分音符 × 1.75
付点は数字に付くもので、重ねがけにはなりません。 l4. と書いたあとの c. は 1.5 拍で、2.25 拍ではありません。1.5 拍になるのは c と書いたほうです。ここは勘違いが多く、長いフレーズで拍が合わなくなる原因はたいていこれです。
オクターブ
o のうしろに 1 から 7 を付けると、音がどのオクターブに入るかが決まります。o4c が中央の Do です。
< は 1 オクターブ下げ、> は 1 オクターブ上げです。旋律が上下するときは、毎回 o を書くよりこの 2 つのほうがずっと短くて済みます:
o4 cde >c 最後の c が 1 オクターブ上
ゲームが表せる範囲は o1 から o7 までです。そこから外れた音は範囲内に丸められ、ステータスバーに注意が出ます。ゲームに存在しない高さの音を黙って鳴らすことはしません。
テンポ:曲全体で共通
t のうしろに数字を付けるとテンポ(BPM)が決まります。たとえば t120。
いちばん間違えやすいのがここです:t は 1 本のトラックのものではなく、曲全体に効きます。
どのトラックに書いた t でも、その位置からすべてのトラックが一緒に変わります。同じ位置に複数のトラックが書いた場合は、番号の小さいほうが優先されます。
ひっかかる状況はこうです。1 本目のトラックにだけ t100 と書いたとします。もしプレイヤーがトラックごとに別々のテンポを持たせる作りなら、1 本目は 100、残りは既定の 120 のままになり、鳴らすほどずれていきます。本サイトはゲームと同じ動きをします——すべてのトラックの t をまず 1 枚のテンポ表にまとめてから換算するので、この問題は起きません。ステータスバーの「テンポ」欄はまとめた結果を表示するので、食い違いは一目で分かります。
テンポを変えるときはツールバーのテンポボタンを使ってください。実際に効いているテンポをメロディのトラックにまとめ、他のトラックの t を消します。出口が 1 つになるので、「2 本のトラックが互いに殴り合っている楽譜」ができません。
ベロシティ
v のうしろに 0 から 15 を付けると音量が決まり、数字が大きいほど大きな音になります。l と同じで効き続けます——一度指定すると、次の v まですべての音がその強さになります。
v12 cde v8 fga 前の 3 音は大きく、後ろの 3 音は小さく
合奏では伴奏のトラックを数段下げると、メロディが浮かび上がります。ツールバーのベロシティボタンならまとめて調整できるので、1 つずつ直す必要はありません。
タイと n コマンド
& は同じ高さの隣り合う 2 音を、1 つの長い音につなぎます:
c1&c1 全音符 2 つ分の長さの Do、途中で切れません
小節をまたぐ長い音や、長さでは表せない拍(たとえば 5 拍)は、これに頼ります。
n のうしろに数字を付けると絶対的な高さになります。n48 は o4c と同じです。o の影響を受けず、そのあとのオクターブの状態も変えません。手書きで使うことはまれで、主にツールが生成した楽譜に出てきます。
トラックと文字数の上限
マビノギの白紙の楽譜は 4 トラックを受け取ります:メロディ、ハーモニー1、ハーモニー2、歌唱。トラックどうしはカンマで区切り、全体の先頭に MML@、末尾に ; を付けます:
MML@t120l4cdefg,l4ceg,l4egc;
これは楽器譜で、前の 3 トラック(メロディ/ハーモニー1/ハーモニー2)を使っています。歌唱譜は 4 本目だけを使います。
トラックごとに別々の文字数の上限があります。 数字はゲームが決めるもので、これは動かせない上限です。超えると貼れません。数えるときに空白は入りません——改行やインデントは上限を消費しないので、改行で小節を区切って読みやすくして構いません。
ゲームの上限を超えると文字数が赤くなりますが、編集を止められることはありません。減らし方はよくある質問のその節をご覧ください。
他のツールとの書き方の違い
MML はマビノギだけのものではなく、実装ごとに細部は一致しません。本サイトの解析器はマビノギに合わせていますが、他所から持ってきた楽譜も読めるように、いくつかの外来の書き方に対応しています:
| 書き方 | 本サイトの扱い |
|---|---|
h | b として扱います。ドイツ式の記法で、3MLE の楽譜にときどき出てきます |
@ で始まる楽器コマンド | 読みますが効きません。 本サイトの音色はタブの楽器ドロップダウンが決めます |
[ceg]4 の和音 | 廃止しました。 [ と ] は解釈できない文字として捨てられ、中の音名は単音として順に読まれます——ですから古い楽譜の和音は旋律に変わります |
| 1 本のトラック内のカンマ | 「貼り付け」を使うよう促されます。そちらが正しく複数トラックに分けてくれます |
MML@ の接頭辞と末尾の ; | タブ 1 つに貼っても害はありません。解析でも書き出しでも自動的に処理します |
よくある 4 つの間違い
tが自分のトラックにしか効かないと思い込む——曲全体に効きます。複数のトラックがそれぞれテンポを持っていたら、鳴らせば必ずおかしくなります。- 付点を重ねて拍を数え違える——
l4.のあとのc.はやはり 1.5 拍です。 [ceg]がまだ使えると思い込む——和音の記法は廃止済みで、その 3 文字は順に鳴る 3 つの音として読まれます。和音は別々のトラックに分けてください(よくある質問)。- 文字数だけ見てトラックを見ない——上限はトラックごとで、曲全体ではありません。1 本が超えていたら、他に余裕があっても通りません。
1 文字ずつ打ちたくない場合は、マウスで描くこともできます——エディター入門をご覧ください。描いたものが、そのまま上のテキストになります。既存の曲をまるごと変換したい場合は MIDI から MML へへどうぞ。