マビノギ MML 文法ガイド
ゼロから、読めて書けるまで
MML とは
MML(Music Macro Language、音楽マクロ言語)は、楽譜をプレーンテキストで書く方法です。マビノギとマビノギモバイルの作曲システムはまさにこの形式のテキストを読み込みます —— t120 l4 cdefg のような文字列をゲームの白紙の楽譜に貼り付けると、キャラクターがそのとおりに演奏します。
五線譜でも数字譜でもなく、「各音符をどう鳴らすかを命令として書き下ろす」ものに近いです。利点はコピー&ペーストができ、テキストツールで処理できること。欠点は間違っていても誰も教えてくれないことで、たいてい鳴らしてみて初めて気づきます。
以下の各節はそのままエディターに貼り付けて再生できます。読みながら書き換えてみてください。文字を理解するより、違いが聞こえることのほうが大事です。
音符と休符
7 つの音名がドからシに対応します:
| 書き方 | 音 | 書き方 | 音 |
|---|---|---|---|
c | ド | g | ソ |
d | レ | a | ラ |
e | ミ | b | シ |
f | ファ | r | 休符(音が出ない) |
シャープは + か #、フラットは - を使います:
c+ ド♯(レ♭と同じ)
d- レ♭
大文字と小文字はどちらでも通り、このサイトは同じ音として扱います。
長さと付点
音名の後ろの数字がその音の長さで、この数字は分母です:
| 書き方 | 意味 |
|---|---|
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 拍ではありません。c だけ書いたものが 1.5 拍です。ここを勘違いする人が多く、長いフレーズで拍がずれる原因はここにあります。
オクターブ
o の後ろに 1 から 7 を付けると音の高さがどのオクターブに入るかが決まります。o4c が中央のドです。
< で 1 オクターブ下げ、> で 1 オクターブ上げます —— 旋律が上下に動くときは、o を何度も書くよりこの 2 つのほうがずっと短く済みます:
o4 cde >c 最後の c は 1 オクターブ上
ゲームが書ける範囲は o1 から o7 です。範囲外の音はこのサイトが範囲内に収め、ステータスバーで知らせます。ゲームに存在しない高さの音が黙って鳴ることはありません。
テンポ:曲全体で共有
t の後ろに数字を付けるとテンポ(BPM)を設定します。たとえば t120 です。
いちばん間違いやすいのがこれです:t は特定のトラックのものではなく、曲全体に効きます。
どのトラックに書いた t でも、その位置からすべてのトラックが一緒に変わります。同じ位置に複数のトラックが書いた場合は、トラック番号が小さいほうが優先されます。
踏むとこうなります。1 番目のトラックにだけ t100 を書いたとします。プレイヤーがトラックごとにテンポを持たせる作りだと、1 番目は 100、残りは既定の 120 のまま —— 聞くと、演奏が進むほどずれていきます。このサイトはゲームの挙動に合わせ、すべてのトラックの t をひとつのテンポマップにまとめてから変換するので、この問題は起きません。ステータスバーのテンポ欄がまとめた結果を表示するので、合っていなければ一目で分かります。
テンポを変えるときはツールバーのテンポボタンを使ってください。曲全体で実際に効いているテンポを主旋律のトラックにまとめ、他のトラックの t を消します —— 出口がひとつだけになるので、「2 つのトラックが喧嘩している」楽譜にはなりません。
ベロシティ
v の後ろに 0 から 15 を付けると音量が決まり、数字が大きいほど大きくなります。l と同じく効き続けるもので、設定するとそれ以降のすべての音がその強さになり、次の v まで続きます。
v12 cde v8 fga 前の 3 音は大きく、後ろの 3 音は小さく
合奏では伴奏トラックを数段下げると主旋律が浮き出ます。ツールバーのベロシティボタンならまとめて調整できるので、1 つずつ直す必要はありません。
タイと n コマンド
& は前後の同じ高さの音をつないで 1 つの長い音にします:
c1&c1 全音符 2 つ分の長さのド、途中で切れない
小節をまたぐ長い音や、長さでは表せない拍(たとえば 5 拍)はこれに頼ります。
n の後ろに数字を付けると絶対音高になり、n48 は o4c と同じです。o の影響を受けず、その後のオクターブの状態も変えません。手書きで使うことはほとんどなく、主にツールが作った楽譜に出てきます。
トラックと文字数上限
マビノギの白紙の楽譜は 6 トラックです:主旋律 1 本と和音トラック 5 本。トラックはカンマで区切り、曲全体の前に MML@、末尾に ; を付けます:
MML@t120l4cdefg,l4ceg,l4egc;
1 トラックあたり最大 2,400 文字です。これはゲーム側の硬い制限で、超えると貼り付けられません。数えるときに空白は含みません —— 改行とインデントは枠を消費しないので、小節ごとに改行して楽譜を読みやすくして構いません。
このサイトのエディターはタブを 15 個開けますが、ゲームに入るのは先頭の 6 個だけです。残りの 9 個は編曲中に素材を置いておくためのものです。タブの位置がそのタブの身分なので、ドラッグして並べ替えると内容と楽器も一緒に移動します。
2,400 文字を超えると文字数が赤くなりますが、編集は止められません。減らし方はよくある質問のその節を見てください。
他のツールとの書き方の違い
MML を使っているのはマビノギだけではなく、実装ごとに細かい点が違います。このサイトのパーサーはマビノギの書き方に従いつつ、外から来た書き方もいくつか処理して、他の場所で手に入れた楽譜も読み込めるようにしています:
| 書き方 | このサイトの処理 |
|---|---|
h | b として扱います。ドイツ式の記法で、3MLE の楽譜にときどき出てきます |
@ で始まる楽器コマンド | 読み込むが効きません。ここでの音色はタブの楽器ドロップダウンが決めます |
[ceg]4 の和音 | 廃止されました。[ と ] は解釈できない他の文字と一緒に捨てられ、中の音名は単音として順に読まれます —— 古い楽譜の和音は旋律に変わります |
| 1 トラック内のカンマ | 「貼り付け」を使うよう促されます。そちらが正しく複数トラックに分けます |
MML@ の接頭辞と末尾の ; | 単一のタブに貼り付けても問題ありません。解析も書き出しも自分で処理します |
よくある 4 つの間違い
tが自分のトラックだけに効くと思っている —— 曲全体に効きます。トラックごとに別のテンポを書けば、鳴らしたときに必ずずれます。- 付点の重ねがけで拍を数え間違える ——
l4.の後のc.はやはり 1.5 拍です。 [ceg]の和音記法がまだ使えると思っている —— すでに廃止され、その 3 文字は順に鳴る 3 つの音として読まれます。本当の和音はトラックを分ける必要があります。- 文字数は数えるがトラックを数えない —— 2,400 は1 トラックごとの上限で、曲全体の上限ではありません。6 トラック合わせれば 1 万 4 千文字を超えます。
できあがった曲を 1 音ずつ打たずに MML にしたいときは、MIDI から MML への変換ガイドを見てください。