マビノギMMLのNコマンド

オンラインRPG『マビノギ』の演奏システムの解説として、MMLのコマンド(命令)のひとつ「N」と、そのコマンドで記述した音符の独特な振る舞いについて取り上げます。

このページで扱っている『マビノギ』のゲーム画像やゲーム内データの知的財産権は、株式会社ネクソンおよび韓国NEXON社に帰属します。© NEXON Korea Corporation and NEXON Co., Ltd.

Nコマンドの基本

音符の高さ(以下、「音高」をこの意味で使います)をMMLで表わす方法はふたつあります。ひとつは、オクターブ番号(0から8)を指定しておき、音名(ABCDFEGと臨時記号)を用いる書きかた。もうひとつは、Nコマンドを用いる書きかたです。

Nコマンドは、音高をノート番号で直接指定します。ノート番号というのは、音高それぞれに、低い音から順に振った通し番号です。〈n60〉と書くと、ノート番号60番の音高を指定したことになります。これはオクターブ番号5のC(ド)とおなじ高さです。

同様に、〈n0〉がオクターブ番号0のCです。半音上がるごとに、ノート番号が1増えていって、〈n96〉がオクターブ番号8のCとなります。Nコマンドで指定できるノート番号の範囲は、0から96までになっています。97以上の値はすべて96として扱われます。

ピアノのみ鳴らせる〈o0c-〉(オクターブ番号0のド♭)や、エレキギターのみ鳴らせる〈o8c+dd+〉(オクターブ番号8のド♯以上)の音は、ノート番号0から96の範囲外なので、Nコマンドで鳴らせません。しかし、MML作成ソフトの「3MLE」でエレキギター用の譜面を最適化すると、97以上の値のNコマンドが現れることがあります。その場合、音名での記法に直す必要があります。

コンピュータープログラムの側では、オクターブ番号5のC、というようなデータだと処理がめんどうなので、ノート番号で音高を扱います。でも、人間が作譜するときは、音名(ABCDFEG)のほうが直感的だから、MMLではどちらの記法も使えるようになっています。

Nコマンドの音符にも、タイが使えます。〈o5L4c&n60〉や、〈L4n60&n60〉などのように書くことができます。

音符の長さは、音名で書くなら〈o5c4c8c16.〉というふうに、音名のあとに長さを付せばいいのですけれど、Nコマンドの場合は、Lコマンドで指定した「既定の長さ」しか適用できません。いまの例をNコマンドの音符であえて書き換えると、〈L4n60L8n60L16.n60〉となります。

ふつうのMMLを(手打ちで)つくるにあたって、Nコマンドを書いたり、ノート番号を覚えたりする必要はとくにありません。でも、Nコマンドを使ったほうが文字数が節約できることがあります。たとえば、つぎのふたつのMMLを(打楽器以外で)鳴らすと、どちらもおなじ音が出ます。

o4L8g<b->g<b->g
o4L8gn46gn46g

B♭3の音高をNコマンドで記述したふたつ目の例のほうが、文字数が少なくなっています。こういうパターンは珍しくありません。

MML作成ソフトの「MabiIcco」や「3MLE」は、MMLを最適化した際に、自動でNコマンドに置き換えて、さっきの例のように文字数を節約してくれます。最適化後のMMLにNコマンドが混じっているのは、そういうわけです。(「MabiIcco」で)ふつうに作譜するぶんには、Nコマンドの使いこなしについて、気にする必要はありません。めでたしめでたし。というわけにはいかないのが、マビノギMMLの、奥深いというかめんどくさいところです。それを次項から見ていきます。

打楽器で鳴らすNコマンドの音符は音量が変わる

小太鼓やシンバルなどの打楽器でNコマンドの音符を演奏すると、本来より小さい音量で鳴ります。

N指定音符の音量バグ調査

「N指定音符の音量バグ調査」の画像は、2017年10月26日のツイート(外部リンク)で載せたものです。(「不可解な現象」をバグと感覚的に呼んだだけであって、実際にバグなのかどうかはわかりません。「N指定音符」とは、本稿の「Nコマンドの音符」とおなじ意味です。)各種の打楽器をすべての音量指定で鳴らして、その音を録音して、波形の振幅(音の大きさ)を測って、一覧にした表です。こまかい数値そのものはどうでもよくて、大小関係だけ確認していただければ充分です。

画像のいちばん下、「シロフォンはv10以上およびv15nの場合、アタックの瞬間が少しだけ欠けてしまい、詰まったような音が出ることが多いので注意です。」という説明は、本稿のテーマとは別です。マビノギの楽器の詳細のページにて紹介しています。

まず、打楽器の場合、音量指定がv11からv15まですべて違いがない、ということも覚えておいてください。これも不思議な振る舞いのひとつです。

表のなかで「v15n」というふうに「n」つきで書いている行が、Nコマンドの音符の場合です。たとえば、ふつうの音名指定による音符をv10の音量で鳴らした場合と、Nコマンド指定による音符をv15の音量で鳴らした場合の音量とが、ほぼ一致しています。それから、v14の音量で鳴らしたNコマンドの音符は、ふつうの音名指定による音符のv9とv10の音量の間の大きさです。

「v10」と「v15n」の実際の音量が等しいように、「v8」と「v12n」、「v6」と「v9n」、「v4」と「v6n」、「v2」と「v3n」の実際の音量も、それぞれ等しいのが確認できます。つまり、Nコマンドの音符は、音量指定の値が本来の3分の2になる、ということがいえます。

だから、「v7n」は、(7の3分の2で)およそ4.67の音量指定に相当するわけです。もちろん小数点での指定なんてないので、v4とv5の間の音量、ということになります。もっとくだくだしく述べると、v4とv5の間を3等分した、v5のほうに近い音量、といえます。

いずれの打楽器も、その大小関係は共通しています。シロフォンについては4通りの音高で、シンバルについてはD♯2の音(銅鑼の音)でもテストして、すべて同様の結果となりました。

打楽器以外では、このようなことはもちろん起こりません。「鳥ペットは未調査」と画像には記しましたけれど、鳥ペットの音量は、正常な振る舞いをするようです。

太鼓類やシンバルでは、おなじ音高をずっと入力すればいいから、(最適化で)Nコマンドが意図せず現れることはふつうありません。ドレミが鳴らせるシロフォンの場合は、このNコマンドが現れることが多々あるので、注意しなければなりません(とはいえ、実際に気をつけているひとも少ないし、シロフォンの音色の性格上、1音単位で多少音量が落ちても、クセというかムラというか、そういう印象にとどまり、致命的にはならないことも多いでしょう。でも、意図しない音量であることには違いありません)

たとえば、〈o4v9gn46g〉は、ゲーム内では〈o4v9g<v6b->v9g〉のように鳴ってしまうというわけです。だから、シロフォンの譜面は、最適化後にNコマンドの有無を確かめて、もしあるなら、Nコマンドの音符をふつうの音名記法に書き換えるか、あらかじめ1.5倍相当の音量を指定しておくか、妥協してそのままにしておくか、なんらかの判断をすることになります。

この現象を逆手にとれば、わざとNコマンドを混ぜることで、太鼓類などで、従来より繊細な、21段階の音量制御ができるということでもあります。とくに、シンバルをこまかく連打してサーッと大きく・小さくしていきたいときに重宝します。案外、v2とv3の違いは大きいので、v4の音量のNコマンドの音符をその間に挟むと、音量変化がなめらかになります。v1とv2についても同様です。

さっき、「Nコマンドの音符の音量は本来の3分の2になる」という説明をしましたけれど、MML作成ソフトで鳴らした場合にくらべてゲーム内での打楽器の音量が大きい点と、v11以上がすべて等しい音量で鳴る点とを踏まえて推察すると、Nコマンドの音符で鳴らす音量のほうこそが本来あるべき大きさで、ふつうの音符のほうが異常な音量だ、ということなのかもしれません。

もし、Nコマンドをわざと使う打楽器用MMLが書きたい場合、次のような文字列で大小関係を確認しながら作業するといいでしょう。(ここでの「<」は不等号です。右側のほうが大きな音量になります。)

和音1・和音2に入れたNコマンドの音符は歌声・鳥ペットで鳴らせる

これは、マビノギのフリースタイルジャムによる演奏のページの「フリースタイルジャムを使って歌声をひとりでハモる」の項でも触れています。

フリースタイルジャムを女声・男声で行なうときに、歌パートではなく、メロディ・和音1・和音2のほうが適用されるパターンがあります。そのとき、ふつうはメロディパートを歌パートのようにして唄うのですけれど、和音1や和音2にNコマンドを入れていると、その音符も発音します。つまり、ひとりで3音ぶん同時に発声できます。

ただし、ふつうの音名指定(ABCDEFG)でも大文字であれば発音します。(最適化した小文字のMMLを)大文字に置換するのは、難しいことではありません。Nコマンドをわざわざ使う必要はなさそうです。

また、鳥ペット(アカショウビン、カワラヒワ、ヤイロチョウ)を召喚して演奏すると、ふつうはメロディパートを鳥ペットが一緒に唄います。しかし、和音1や和音2にNコマンドを入れていると、その音符も発音します。鳥ペットも3和音で鳴らせるのです。こちらもフリースタイルジャムの例と同様、音名を大文字で書けばいい……のかどうかは、まだよくわかりません。ほかの要因も絡むのかもしれません。

なお、打楽器は、大文字の音名やNコマンドで記した音符を和音1・和音2パートに書いても、やはりというべきか、まったく反応しません。

Nコマンドの音符は音が外れない

演奏に失敗すると、一部の音符の音高が(打楽器ならタイミングが)ずれます。Nコマンドの音符は、そのずれが起きません。

ということは、すべての音符をNコマンドで書けば、チューナーを装備せずとも、王立楽譜マビノギの楽譜スクロールについてのページ参照)に書き込まずとも、100パーセント音を外さずに演奏できることになります。

問題は、音符をNコマンドだけで書くと、音符の長さをいちいちLコマンドで変えないといけないから、文字数が一気に膨れ上がるし、書き換え作業自体が非常にめんどくさい、という点です。