その1 MIDIからMMLを作る

まずは、適当なMIDIをダウンロードして、MMLを打ち込もう。初心者は、初期のドラゴンクエストの音楽といったファミコンの音楽や、バッハなどのバロック音楽から始めるといい。というのは、この時代の音楽は3和音で音楽を作っているため、ちょうどマビノギのMMLの限界と一致するので都合がいいからだ。

2和音だが、ここでは2声のインベンション#13を例にとる。まず、jsbach_bwv784.midをダウンロードしてきて、適当なMIDIシーケンサーで開こう。

なお、MIDIからMMLに変換するソフトは数多くあるが、MabinogiのMMLは最小限のMMLコマンドしかサポートしていない(反復やマクロなどは使えない)ため、ソフトによっては正常に変換できなかったり、ゴミデータが含まれる可能性がある。ここではマウス入力で移す説明にしておく。

compose1.png

次に、まきまびしーくで、同じ音階になるようにマウスで打ち込む。なお、先頭の4章節はあえて開けておく。

compose2.png

打ち込んだら聞いてみよう。あれ、なんだか音が低いなぁと感じるだろう。マビノギのMMLは1オクターブ低い音が出る。このため、単純にMIDIを打ち直すだけでは低い音になってしまう。そこで、ツールから移調を選び、12を入れる。これで同じ音がでるはずだ。

compose3.png

音がこのままでは小さいので、各トラックの一番最初にV15を加えておこう。これで、打ち込みは終わり。

MMLを圧縮する

compose4.png

もちろん、このままではMMLの文字数的にロスが多い。そこで、ツールからMML圧縮を行う。ただそれだけである。右下に文字数が表示されているので、どれだけ削れたか確認してみよう。146,145,0と書かれているのが文字数である。これを圧縮すると87,87,0になる。つまり半分になるわけだ。

マビノギで使用できる文字数はそう多くないので、この圧縮という機能が重要になってくる。

PluginRenderer::executePluginBlock(): プラグイン#floatclear()は、実装されていません。

さて、圧縮したMMLを見て気づくことがあるだろう。この曲の特徴として、和音とメロディの音符が交互に16分音符と8分音符で展開していくところがある。マビノギで使用可能な文字数は、メロディトラックは多く、和音トラックは少ない。つまり、16分音符が多いと言うことはその分容量を食っているということを頭に入れておいて欲しい。

そこで、次の圧縮方法は、16分音符の部分をメロディトラックに入れ、8分音符の部分を和音トラックに入れる作業を行う。まきまびしーくでは、右クリックで範囲選択なので、それをコピペで入れ替えていく。

compose5.png

結果、96,53,0となる。この結果、合計174文字だったMMLが149文字まで容量を減らすことができた。(ここでは、和音トラックの文字数を減らすことが目的であって、あまり、トータルの文字数の削減には意味ない。)

こういったテクニックは、長いMMLほど効果的である。

演奏してみたら音がおかしい

よくあるパターンである。マビノギではMMLが常に正しい音として再生されるとは限らないようになっている。そこで、「調律」と呼ばれる音符をMMLの先頭に入れておくことが慣習となっている。

compose6.png

この調律の内容は、64部音符を32個タイ記号(&)でつなげたものである。マビノギでは、演奏に失敗した場合、32個の音符がランダムに狂うようになっている。裏を返すと、32個の音符が正常に演奏できるときは演奏に成功したと見ていい。これは、この性質を利用したものである。なお、このテクニックは、打楽器では通用しないので注意。

l64d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d

これを楽譜の先頭に入れておくだけでその演奏が成功したか、失敗したかがわかる。もちろん、これは、32個の音符が正常に演奏出来ているのかを確認するのが目的なので、&は本来要らないが、フルートのようなアタックの弱い楽器の場合、音が出る前に次の音符に移動してしまい、確認が困難になる。そこで、&で音をつなげている。また、マビノギのMMLではスラーをサポートしていなので、音がそこで途切れたと認識されるため、演奏の失敗がわかりやすい。

また、この調律の後ろが

v0t84d2d16

と、音量0の音符が並んでいるのは、歌うペットとユニゾンするときに音がずれるのを防ぐためである。

マビノギのMML再生機能は、休符(r)の処理にバグがあり、ペットや他のプレイヤーと合奏するとき、しばしば音ズレの原因となる。特にテンポコマンドが入っていると、この現象がより顕著に現れる。そこで、rの代わりに音がでない音符を入れておく。同時にテンポ調整するとなおよし。

この音楽のメロディトラックは、ベースよりも16分音符だけ遅れているので、この末尾にd16を入れてある。

まとめ

  • MMLの先頭にはなるべく調律を入れる。
  • 音符が細かい(16分音符が多い)部分は極力メロディトラックに入れて、和音トラックにはなるべく細かい音符は入れない。
  • 調律の後ろからメロディが始まるまで、休符(R)を使ってはならない。

サンプル

ここで説明したMMLのサンプルです。最初の4章節のみ作ってあります。続きは自分で入力しましょう。

MML@l64d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&d&dv0d2t86l16dv15eab+beb>do3aeab+beb>daeab+beb>do3aeab+beb>dr>ece<ab+egd<afadf<a>cro5dc-d<gbdf<bgegce<gb,r1v15o2a8>al8g+o5ce<g+>e<c<ag+e>b+ar4c<ab+a>fa>dfo2b>cgb>eg>ce.,;