マビノギMMLのNコマンド

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

このページで扱っている『マビノギ』のゲーム画像やゲーム内データの知的財産権は、株式会社ネクソンおよび韓国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倍相当の音量を指定しておくか、妥協してそのままにしておくか、なんらかの判断をすることになります。

MML作成ソフト「MabiIcco」のバージョン1.3.97で、トラック単位で「Nコマンドを使用しない」オプションが使えるようになりました。シロフォンのトラックでオンに設定しておけば、Nコマンドによる上記の問題を回避できます。

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

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

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

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

(2023年4月11日・16日、加筆・修正。)

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

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

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

また、唄う鳥ペット(ヤイロチョウ、アカショウビン、カワラヒワ)を召喚して楽器演奏をすると、ふつうは〈メロディ〉パートを鳥ペットが一緒に唄います。しかし、マビノギの唄う鳥ペットのページの「和音1・和音2の音符の扱い」の節にも書いたとおり、〈和音1・和音2〉にNコマンドや大文字で書いた音符があれば、その音符も発音します。鳥ペットの声も3和音で鳴らせるのです。

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

和音1・和音2を歌声・鳥ペットで鳴らすときの落とし穴

Nコマンドの話からすこし脱線ぎみになりますけれど、とりあえずここに書きます。

歌声や鳥ペットで鳴らす〈和音1・和音2〉パートは、〈小文字abcの音符にシャープ・フラットがついている場合、音符ごとの音長指定が効かず、Lコマンドの値が適用される〉という落とし穴があります。

ふつうの演奏では、このようなことは起きません。鳥ペットと一緒に演奏した場合、飼い主の楽器演奏のほうは正常な長さで、鳥ペットのほうがずれます。フリースタイルジャムも同様で、ジャム主催者がリュートやウクレレなどふつうの楽器で弾き、参加者がマイクで参加した場合、歌声のタイミングだけがずれます

説明用の音源とMMLを載せました。

唄う鳥ペット・和音パートの音符の音長_MabiMML.m4a[AAC]
MML@o7l4eeeeeeeee1,l4v12o1C+C+C+C+C+c+C+c+C+1;
MML@o7l4eeeeeeeee1,l1v12o1C+4C+4C+4C+4C+4c+4C+4c+4C+1;

ヤイロチョウとともにリュートで演奏。前半がひとつ目のMML、後半(8秒以降)がふたつ目のMMLです。〈メロディ〉パートはリュートで鳴ってヤイロチョウでは鳴らない、E7(オクターブ番号7のE)の高さの4分音符を並べて、リズムを刻んでいます。肝腎なのは〈和音1〉の内容です。こちらは、リュートでは鳴らないC♯1の高さの音符を使って、なおかつ大文字で記して、ヤイロチョウだけ発音するようにしています。ひとつ目のMMLの〈和音1〉は、Lコマンドで4分音符の長さを既定値としているのに対し、ふたつ目のMMLの〈和音1〉は、音符ひとつひとつに「4」をつける形で4分音符を記しています。音符の既定の長さは〈L1〉です。どちらの〈和音1〉も、5音目と7音目だけ小文字の〈c+〉になっています。この小文字の音符は、鳥ペットでは発音されません。鳥ペットを使わずにふつうに弾くかぎりは、どちらもおなじ演奏結果になります。

これらを鳥ペットとともに実際に弾くと、音源のようになり、ひとつ目は、鳥ペットも正しく唄います。ところがふたつ目は、〈c+4〉の「4」が効かず、既定の長さが適用され、〈c+1〉扱いになっています。発音しないので休符〈r1〉と実質おなじです。そして最後の〈C+1〉に到達しないまま、演奏が終わってしまいます。


〈和音1・和音2〉のすべての音符を歌声や鳥ペットで鳴らしたいなら、小文字を入れる必要はないので、こういったことは気にしなくてかまいません。発音される音符とされない音符とを仕込んで、凝ったことをしようとするときは、こういう落とし穴があるので気をつけましょう、という話でした。(〈和音1・和音2〉を歌声や鳥ペットで鳴らそうなんていう段階ですでに凝りすぎ、ですかね。)うまく利用すれば、楽譜1本だけで輪唱っぽいこともできます。

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

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

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

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