MMLの利点

まず、MMLはそのソースがテキストファイルであることに利点がある。 ファイルサイズが小さいことがまず挙げられるが、何より編集するソフトを選ばないことが大きな利点だろう。 つまり、コンピュータの性能が低くても問題なく作れるのである。 最低でもメモ帳が有れば編集は可能である(流石に音楽ファイルにするには専用のコンパイラが必要となるが)。 そして、次に挙げられる利点としては、編集に際して主にキーボードを用いる点にある。 元々テキストファイルを編集するだけなので当たり前の話なのだが、これは、マウスを使って編集するよりも明らかに速く編集が可能であると言える。 慣れてしまえば、かなり編集が速くなり効率良く音楽ファイルが作成出来る。 大きく挙げるとこの2つが利点であると言えるだろう。

MMLの欠点

やはり、MMLといっても万能ではないので、欠点もある。 その最も大きなものは、ソースがテキストファイルであるため、利点の項にも書いたが、ファイルサイズが小さく、速く効率良く編集が出来る反面、内容が見にくく、ぱっと見ではさっぱり分からない事があると考えられる。 そして、それに付随して曲の流れが分かりにくいということも考えられる。 これらのことが初めての人には取っつきにくい要因であろう。 つまり、慣れるのが最も大きな課題であるといえる。

チャンネルとトラック

これは、MMLで曲を作る際に最も重要となる部分であり、なおかつ最初に知っておかなければならないと思われる部分である。 というのは、この設定をしないと音が鳴らないからである。 しかし、これは使用するコンパイラによってそれぞれ違うので、そのそれぞれのヘルプを参照しておいてほしい。

チャンネルとは、楽譜でいえば一つの五線の事で、それがいくつも重なっている状態を想像してもらえば、ある程度はわかりやすいことと思う。 FM音源の場合、1チャンネルに1音しか鳴らせないので、チャンネルとトラックは同一の物として考えてもらってもよいが、MIDI音源の場合、1チャンネルでいくつも音が重ねられるので、トラックの概念が必要になってくる。 というのは、MMLとはテキストファイルであるため、楽譜に書くように和音を重ねたりする表記ができない。 つまり、和音コマンド(後述)が存在する場合もあるが、一つの音が鳴っている間にもう一つ音を鳴らすこと(例えば、二分音符を鳴らす間に四分音符2つを鳴らす等)ができない。 そこで、トラックと呼ばれるものを用意し、それぞれのトラックで鳴らすチャンネルの設定をして、MMLを書いていく方式を取っている。 そうすれば、問題なく音を重ねる事が可能となる。

MMLの文法(基本編)

さて、ここから実際にMMLの内容に入っていくわけだが、一つ一つ項目を挙げて説明していく事にする。

{c〜b(cdefgab)}x

それぞれド〜シを表している。 表記の仕方としては、例を挙げると、

c4
四分音符でドを表す

といった形になる。 つまり、音階をc〜bで選び、その直後に何分音符かを指定する、といった感じでその音の長さを指定する。 省略した場合は、「l」で指定した長さ(デフォルトは大抵四分音符、「l」については後述)になる(音の長さを指定するやり方は主に2つ有るが、ここでは見た目にも分かりやすい何分音符かを指定するやり方で説明していく)。 例外として全音符の場合は「1」として表記するが、全音符本来の定義とは少し違い、大抵4拍分として取られることが多い。

.

付点を表している。 付点四分音符といったものも記述する事ができ、「.」を使ってそれを表す。 これは音の長さを指定した直後に置くのだが、コンパイラによっていくつも付けることができる場合がある。 例を挙げると、

c8.d8.e8 , c2..
これで2拍、後者は2+1+0.5拍

といった感じになる。 まあ、付点をいくつも付ける位ならタイを使う方が見やすくなってよいのだが(タイについては後述)。

+, -, =

それぞれ順に、シャープ、フラット、ナチュラルを表している。 ただ、本来の楽譜表記とは違い、毎回毎回指定する必要がある(そうなると、ナチュラルの必要性が無くなってしまうが、調号を指定する命令があるものがあるので、その場合において必要性が出てくる)。 例を挙げると、

c+8, d-8, g=8
音の長さ指定の直前に入れる
c+8c8
本来の表記とは違い、前後は別の音

となる。 ちなみに、一つ目と二つ目は同じことを意味している。

rx

これは休符を入れるときに用いる。 その直後に何分休符かを指定する。 音の長さの設定は上の音符の時と同じといえる。 ただ、休符の場合は、タイやスラーを使う必要がないため、使った場合にエラーが起こることがあるので注意する必要がある(タイについては後述)。 もし長く休みが必要ならば、続けて休符を並べればよいのである。 例を挙げると、

c8d8e8r8c8d8e8r8, r1r1
音階の部分を「r」にすれば休符になる

となる。

>, <, ox

これはオクターヴを指定するものである。 「>」でオクターヴを一つ上げて、「<」でオクターヴを一つ下げる(これは逆になる事がある。これについては使用するコンパイラのヘルプを参照して欲しい)。 「o」はオクターブを直接指定するもので、その直後に指定したいオクターヴの数字を入れる。 例としては、

cdefgab>c<, cdefgab o5 c o4
俗に言う「ドレミファソラシド」

といった形になる。 「o」は大抵初期設定に使い、後は途中で音色を変えない限り大抵使わないだろう。 上の例を見てわかるように、「>」や「<」を使った方が明らかに見やすいからだ。 ちなみに、見かけは違うが全く同じ事を意味している。

^, &

これらは主にタイ、スラーを使うときに用いる。 これはコンパイラによって少しずつ違ったりするので、一概には言えないが大抵次のような使い方になる。

c4^c8, g2&f2
記号は大抵どちらでもよい

言うまでもないが、左がタイで右がスラーである。 これも、使用するコンパイラのヘルプを参照してもらいたい。 ちなみに、左のタイの表現は先程の付点を用いて、

c4.
勿論、「c4&c8」としてもよい

と表しても、演奏される内容は同じである。

ここまでの知識が有れば、基本的に曲データを打ち込む、と言う事に於いて最低限の事は出来るはずである。 この後、もう少し詳しく触れていく事にする。

MMLの文法(中級編)

前項ではMMLにおいて最低限の部分を書いた。 ここでは音色の指定など、少しずつ踏み込んでいくことにする。

@xx

この記号で音色を指定する。 その番号に対応する楽器ついては、音源によって違うのでそれぞれの音源での音色を載せた表等で見てほしい。 例を挙げると、

@0 c1 @48 c1
音色はGM音源では128種類有る(ドラム音色を除く)

内容は、まずピアノで音を鳴らし、その後ストリングスで音を鳴らす、というものである(番号と音色の対応は、大抵のMIDI音源の場合で表記してある)。 これによってより曲らしい曲ができる。 もちろん途中で音色は変えられるので、様々な表現が可能となるだろう。

vxxx

この記号では音量を指定できる。 たとえ音量の設定は同じでも、音色によって音量が変わってきたりするので、この記号で音量をそれぞれ指定することにより、うまく調和を取る事ができるようになる。 例を挙げると、

v127 c8 v100 c8
後のドの方が音が小さくなる

といった感じになる。

lxx

これは音や休符を入れたときに、音の長さの指定を省略したときに指定される音の長さを指定するもので、「l」の直後に音の長さを指定する。 例を挙げると、

l4 cccc l8 cccc, c4c4c4c4c8c8c8c8
前者と後者は同じこと

といった感じになる。 これを用いると、例えばベースの音を入れる様な時に同じ長さの音が並んでしまい、文字として長くなって見づらくなる、と言う様な事がなくなる。

ここまでをきちんと使えるようになれば、ある程度のものは作れるようになるだろう。 この後では、使用するコンパイラによって違う物などに触れていくことにする。

MMLの文法(その他)

ここでは、使用すると便利にはなるが、使用するものによっては存在しなかったり、表記方法が違っていたりするので、またそれぞれのヘルプを参照して欲しい。

リピート

これは、表記が「[〜]」で囲んだりするものや、「|:〜:|」の様にリピート記号に似せているものなど、分かれていることがある。 ただ、これを使用すると、一般のリピート記号の様な使い方はもちろん、同じ音、長さのものが続くときにも使えるので、かなり重宝するものとなるだろう。 例としては、

[c8]5, c8c8c8c8c8
前者と後者では同じ意味を示している

というのがある。 使い方も豊富で、他にも多重のリピートも大抵は可能であり、機能としては非常によい。

和音

MIDI音源では、一つのチャンネルで音を重ねて出すことができる。 これも、使用するコンパイラによって様々なのだが、大抵は音の長さを「0」にして音を重ねて、発音するとき初めて音の長さを指定する形を取っている。 もしくはタイやスラーの形にする。 例を挙げると、

c0e0g4
ドミソの和音

といった感じになる。 FM音源では1チャンネルに1音しか鳴らせないので、MIDI音源でのこの機能ははかなり重宝する。 他にも、非常に使いやすいものがある。

と、ここではそれぞれのコンパイラによって違うこともあるが、あると便利になるものを主に紹介しておいた。

まとめ

ここまでMMLについてつらつら書いてきたが、この文章では主にMMLに触れるということに重きを置いているので、分解能のことなど、多々触れていない所がある。 分解能についてはそこまで重要ではないのだが、他にもMIDI音源ではリズム音源についての説明を端折っていたり、FM音源においても、詳しい説明は省いてある。 他にも、チャンネルとトラックについては、重要な部分であるのにも関わらずコンパイラに依存しているので、これらについては、もし物足りなくなったり、必要になったときにはそれぞれのコンパイラのヘルプを読んで欲しい。