What's MML? section

MMLとは?

Music Macro Languageの略で、まぁ音楽のプログラムです。
恐らく日本国内ぐらいしか普及していなかったかも知れません。

ココでは実際にどんな風に記述していくのかなどの基本を紹介していきます。


MMLは楽譜の表現に似ています。似せたんだと思うんだけど。 つか誰が考えたんだろうねぇ。あ、いきなり脱線。 MMLはプログラムなので、コマンドを理解する必要があります。 楽譜が読めることを前提の解説となってしまいますが、ご容赦を。 もし、楽譜の読み方も分からない場合は、そんな解説サイトが ゴロゴロしてますので、そちらを。 要望があればココでもやってみるかも知れませんが。 ではテキトーに解説していきます。
■ 音の高さ ■

[■] 音名 まずは音の高さから。 音楽の世界では音の高さを音名と呼ぶそーです。 更に、#や♭のついてないヤツを幹音名と呼ぶそーです。どーでもイーですけどね で、これが幹音名 MMLは英米方式ですな 幹音名な表
ファ
MMLCDEFGAB
英米CDEFGAB
CDEFGAH
DoReMiFaSolLaSi
UtReMiFaSolLaSi
上記の幹音に#や♭を付けた音名を派生音名と呼ぶそーです。これもどーでもイーですけど ♯(シャープ)は半音上げます。あ、「嬰」は「えい」と読みます。 MMLは幹音名に「+」がつきます。 派生音名な表(#)
ド#レ#ミ#ファ#ソ#ラ#シ#
MMLC+D+E+F+G+A+B+
嬰ハ嬰ニ嬰ホ嬰ヘ嬰ト嬰イ嬰ロ
英米C#D#E#F#G#A#B#
CisDisEisFisGisAisHis
DodiesisRediesisMidiesisFadiesisSoldiesisLadiesisSidiesis
UtdieseRedieseMidieseFadieseSoldieseLadieseSidiese
こっちが♭(フラット)。半音下げます。 MMLは幹音名に「-」がつきます。 派生音名な表(♭)
ド♭レ♭ミ♭ファ♭ソ♭ラ♭シ♭
MMLC-D-E-F-G-A-B-
変ハ変ニ変ホ変ヘ変ト変イ変ロ
英米C♭D♭E♭F♭G♭A♭B♭
CesDesEsFesGesAsB
DobemolleRebemolleMibemolleFabemolleSolbemolleLabemolleSibemolle
UtbemolRebemolMibemolFabemolSolbemolLabemolSibemol
mckcでは音名を小文字で記述します。 ではココまでのおさらい 音名 ト音記号があるコトから、一番左の音は「ド」になります。MMLだと「c」ですね。 この楽譜をMMLにすると c f b- g+ になります。 <補足> MMLには「ダブルシャープ」や「ダブルフラット」の記述はありません。 「c++」とか指定しても無効です(つかエラー出ると思う)のでお気を付け下さい。 その場合には全音ズラして下さい。 [■] スラー
slur 繋げたい音と音を"&"で繋ぎます。 残念ながらmckに本来のスラー機能はなく、同じ音同士でしか繋げません(使えネー MMLではひと工夫もふた工夫も必要となります。 [■] オクターブ
まんまですが、オクターブ4なら「o4」と記述します。 "o"コマンドはオクターブの絶対値指定、 ">","<"コマンドはオクターブの相対値指定です。 ">"で1オクターブ上がります。"<"で1オクターブ下がります。 ">>"だと2オクターブ上がります。 ちなみに、MMLによってはこの不等号の意味が逆なモノもあります。 ややこしいですね。 mckcでは両方設定できまして、上記の記述方式がデフォルトになってます。 これは画像を見て貰った方が早いかな。 オクターブ え〜と楽譜の下の方がヘ音記号ですので、一番初めの音は「オクターブ3」の「ド」ですね。 んで、上のMMLだとオクターブ毎にその指定をしてますが、これは果てしなく面倒です。 その下に書いてあるMMLでは、オクターブの変化を相対指定コマンドで指定してます。
■ 音の長さ ■

[■] 音長
前述までで音階はバッチリだと思いますので、音長にいきたいと思います。 MMLでは音長の指定方式が複数有り、mckcでは ・音楽的音長 ・カウント音長 ・フレーム音長 の3つがあります。 ここでは一番分かり易い音楽的音長を解説していきます。 つかスゲー簡単です。音階の後に数字を付けるだけです。 全音符 = 1 2分音符 = 2 4分音符 = 4 8分音符 = 8 16分音符 = 16 32分音符 = 32 64分音符 = 64 …以下続く? というように数字を付けます。 ですので、「ド」の「四分音符」は「c4」となるワケです。 まぁそのまんまですね。 [■] 付点音符
付点音符は"."(ピリオド)で記述します。 付点2分音符なら「c2.」となります。 複付点音符も同様に「c2..」となります。 コレもまんま。 例)c2.. → 「ド」の複付点二分音符 [■] 連符
連符 連符にしたい音名を"{","}"で囲み、その後ろに音長を記述します。 例){abc}4 → 「ラシド」の3つの音を四分音符の長さから等分し発音します。 [■] タイ
タイ 繋げたい音長と音長を"^"で繋ぎます。 例)c4^16 → 4分音符 + 16分音符 [■] 音長省略コマンド
音長指定が必要なコマンドは、このコマンドを使い頻繁に記述する音長を省略することも出来ます。 "l"(エル)コマンドの後ろに、省略時のデフォルト音長を指定します。 例)l4 cdefg → ドレミファソを全て四分音符で発音 では、ココまでのまとめといきましょう。 音長 下のMMLはlコマンドでの表記です。 ココまでで音長もバッチリですね!
音の速さ

この前のセクションで音の長さを指定しました。 でも、実際の発音時間に対しては相対的な意味となります。 絶対的な発音時間を決める要素としてテンポがあります。 では、実際に見ていきましょう。 [■] メトロノーム記号
テンポ MMLでは"t"コマンドを使用します。 例)t120 → 1分間に四分音符を120回演奏する速度 つかこんだけ。 <補足> 楽譜の中の表現で見かける、単語による速度指定というのはMMLにはありません。 相対的な速度指定で、遅い順に largo(ラルゴ) → adagio(アダージョ) → andante(アンダンテ) → allegro(アレグロ) → presto(プレスト) や、曲の途中で速度変化指示を与える 速める  accelerando , animato など 緩める  ritardando , ritenute など 元に戻す a tempo など 拍の規則的な進行を一時中断する rebato , senza tempo など これらはtコマンドを使い、その都度、変化を絶対値で指定する必要があります。
■ 音の大きさ ■

音量です。 コレの設定具合が一番奥深いように思います。 また、様々なテクニックも存在します。 ですがココでは基本をやりますので、通常の音量指定の仕方だけを解説していきます。 音量指定は"v"コマンドを使用します。この後に音量を指定します。 ちなみに 2A03内蔵音源       → min 0〜15 max ディスクシステム拡張音源 → min 0〜31 max ナムコ拡張音源      → min 0〜15 max が設定できる範囲です。0は消音になります。 が、2A03内蔵音源の第3チャンネル目は音量が固定になっています。 なぜこのような設計をしたかは分かりませんが、とにかく鳴るか鳴らないかの二択となります。 これに音量の指定が出来れば幅も広がったであろうにと残念ですが、それもまたファミコンなのです。 さてこの音量指定、非常に単純な設定方法ですが、これだけでもテクニックは存在します。 例)v15 c4. v8 c8 とすると、音の最後で音量が小さくなり、エコーがかったような効果を生み出します。 疑似ディレイってヤツでしょうか。アルゴスの戦士でよく出てくる技法です。 打ち込むのがメンドクサクはありますが。 あとはソフトウェアエンベロープ機能というのがあり、 これは時間に対する音量変化の度合いを自分で設定できるという機能になります。 この機能を使用すると、まさに無限の表現力が可能となります。 が、コレの解説やテクニックを紹介するとなると非常に メンドーなので割愛させて頂きます。スマン...
■ 音の色 ■

さて、ココまでで、音の高さ、長さ、速さ、大きさを設定しました。 残るは音色です。 どんな音色で鳴らすか? 後はコレを設定すれば、晴れて音が鳴り出すという寸法です。 じゃぁどんな種類の音色があるのか? これは音源により違うのですが、順を追って解説していきます。 2A03内蔵音源 デューティ比の違いにより音色に種類があります。 設定できるのは、12.5%、25.0%、50.0%、75.0%の4種類です。 デューティ比とは、出力する波形の上下の比率を指します。 |<- n2 ->| | | +--------+ +--------+ | | | | | | | | -+ +--------+ +--------+ | | |<------ n1 ----->| 上記図はファミコンの矩形波です この n2/n1 がデューティ比、或いはデューティサイクルと言います。 ファミコンはココの比率が4段階に変えられるのですね。 50%辺りが聞きやすい音色に聞こえると思います。古い人にはなじみの深い音色ですね。 しかし、その他の音色もうまく使ってやることにより、グッとファミコンらしさが増します。 さて、その音色指定ですが、"@"コマンドを使用します。 コレを指定した以降の音は、音色が指定したデューティ比の音色になります。 例)@1 v10 c4 → 「ド」の四分音符を、デューティ比25%の音色・音量10で発音する。 まぁ簡単ですね。 ちなみに2A03内蔵音源の第三チャンネルでは音色が固定されており、変更は出来ません。 どんな波形かと言いますと、 __ _| |_ _| |_ _| |_ _| |_ _| |_ _| |_ _| |_ _| |_ _| |_ _| |_ _| |_ _| |_ _| |_ _ _| |_ _| _|__________________________________________________________|__|___ 0V とまぁ、こんな感じで擬似的な三角波です。 低音で使えば迫力のあるベースに、高音で使えば哀愁の漂うメロディラインにと 使い方1つで曲がグッと変化します。 しかし2A03内蔵音源の第三チャンネルは特殊という他ありません。 当時のメーカーはこの制限にもかかわらず非常に豊かな楽曲を楽しませてくれました。 まさにプロですね。おっと脱線。 ディスクシステム拡張音源やナムコ拡張音源では、この波形をユーザーが編集して使います。 ココでは割愛させて頂きますが、この波形編集、実に奥が深いです。 mckでは2A03内蔵音源でも、この4種類の波形を1フレームごとに変化させる デューティエンベロープなる機能があります。これもまたファミコンの表現力に 幅を持たせる機能です。当時だとコナミが頻繁に使用してましたね。 でもココでは説明しませんので、慣れてきたら試してみて下さい。 つか、音色はとやかく言うよりもまずは聞いてみて下さい。それが早いです。
■ 演奏 ■

今までで音を鳴らす全ての要素は揃いました。 後は実際に打ち込んでいくだけです。 そこで、mckcでの記述の仕方を解説していきましょう。 今までで覚えたMMLを実際にどのチャンネルで鳴らすのか?は、 行の先頭にアルファベット大文字を置くことによって指定します。 A 2A03内蔵音源パルス波チャンネル1 B 2A03内蔵音源パルス波チャンネル2 C 2A03内蔵音源疑似三角波チャンネル D 2A03内蔵音源ノイズチャンネル E 2A03内蔵音源DPCMチャンネル F ディスクシステム拡張音源チャンネル P〜W ナムコ拡張音源チャンネル(設定により1ch-8chまで可変) となっています。 Fパート以降を使用の際は、MMLの前に使用宣言の構文を置きます。 #EX-DISKFM #EX-NAMCO106 (num) numは使用チャンネル数1〜8 がそれになります。 では2A03内蔵音源を使用し、実際に曲を打ち込んでみましょう。 まずは楽譜を用意。お題はギャラガから、2位以下ネームエントリー(3音で丁度良い… ギャラガ

 A t150 l4 o4         bgec                  r8.b16g8.e16   {ceg}4     {e-g-a}4  
 B t150 l4 o4         gec<b                 r8.f16>e8.c16  {<b>ce}4   {ce-f}4
 C t150 l4 o4         b1                    b2gb


ギャラガ


 A t150 l4 o4         fa>cd                 r8.e-16c8.<a-16  {fe-c}4  {a-e->c}4
 B t150 l4 o4         dfa>c                 r8.c16<a-8.f16  {ec<a-}4  {>fe-<a-}4
 C t150 l4 o4         a1                    a-2>cd


んで、上記MMLを一緒にしてみます。設定が重複してるのは一緒にしてます。
更に音色と音量を設定。Cパートはo4だと低いので、1オクターブ上げてみます。
小節毎にスペースで区切ったりすると見やすくてイイ感じカモ!?

 ABC t150

 A @2 o4 l4 v7 L
 B @2 o4 l4 v7 L
 C    o5 l4    L

 A bgec  r8.b16g8.e16{cege-g-a}2  
 B gec<b r8.f16>e8.c16{<b>cece-f}2
 C b1    b2gb                     

 A fa>cd r8.e-16c8.<a-16{fe-ca-e->c}2
 B dfa>c r8.c16<a-8.f16{ec<a->fe-<a-}2
 C a1    a-2>cd


こ〜んな感じで。
おっと、今までに出てないコマンドがありますね。
"L"コマンドです。
これはMMLを最後まで読みとった後、このLコマンドの場所に戻るという意味です。

では上記MMLをNSFにしたモノを早速聞いてみましょう。
ギャラガ 2位以下ネームエントリー(1)


これで一通りなのですが、実はここからが本番なのです。
ココまでは楽譜さえあれば誰でも作れます。
こっからが打ち込む人のセンスの見せ所。
例えば…


 ABC t150

 A @2 o4 l8 v7 L
 B @2 o4 l8 v7 L
 C    o5 l4    L

 A v6bv2b v6gv2g v6ev2e v6cv2c v6r8.b16g8.e16{cege-g-a}2  
 B v5gv2g v5ev2e v5cv2c<v5bv2b v5r8.f16>e8.c16{<b>cece-f}2
 C b1                          ^2gb                    

 A v6fv2f v6av2a>v6cv2c v6dv2d v6r8.e-16c8.<a-16{fe-ca-e->c}2
 B v5dv2d v5fv2f v5av2a>v5cv2c v5r8.c16<a-8.f16{ec<a->fe-<a-}2
 C a1                          a-2>cd


4分音符を8分音符2つに分け、後半の音は前半より音量を下げて設定します。
こうするとどう聞こえるのか?では早速聞いてみましょう。
ギャラガ 2位以下ネームエントリー(2)


どうですか?
擬似的にではありますが、チョットした残響効果がかかってるように聞こえませんか?
このように、音量の指定だけでずいぶんと印象が変わるのが分かります。
このテクニック、名称がいっぱ〜いあったりして、どう呼んでよいか迷ったり…
(疑似ディレイ、1chディレイ、自己ディレイとか、あとなんかある?)

更に、頭の部分を以下のように変更してみましょう。


 @MP0 = { 60 2 1 0}

 ABC t150

 A @0  o4 l8 v5     L
 B @0  o4 l8 v4     L
 C     o5 l4    MP0 L

 A v5bv2b v5gv2g v5ev2e v5cv2cv1c v5r16b16g8.e16{cege-g-a}2  
 B v4gv2g v4ev2e v4cv2c<v4bv2bv1b v4r16f16>e8.c16{<b>cece-f}2
 C b1                          ^2gb                    

 A v5fv2f v5av2a>v5cv2c v5dv2dv1d v5r16e-16c8.<a-16{fe-ca-e->c}2
 B v4dv2d v4fv2f v4av2a>v4cv2cv1c v4r16c16<a-8.f16{ec<a->fe-<a-}2
 C a1                          a-2>cd


これはABパートの音色変更と、CパートにLFOを使用する変更内容です。あとチョットだけ小細工。
LFOって何?は置いといて、さぁ聞いてみて下さい。
ギャラガ 2位以下ネームエントリー(3)


これも大分印象が変わったと思われます。相変わらずやかましいですが。

このように基本ができあがってから、いろいろと調整を加えていくのですが
そのやり方は人それぞれだったりします。オレは一通り打ち込んでから細部
に入りますが、初めから細かく打ち込む人もいます。自分なりのやり方とい
うモノを是非確立して下さい。

てか簡単だったでしょ?
まぁスゴイデータってヤツはこんな簡単にはいかないんだけどね。


■ その他 ■

え〜mckcのMMLには、ここでは解説しなかった機能が盛りだくさんです。 列挙すると… ・デチューン ・ソフトウェアエンベロープ ・ハードウェアエンベロープ ・相対音量 ・クオンタイズ ・ソフトウェアLFO ・ピッチエンベロープ ・ノートエンベロープ ・トラックループ ・リピート などなど、非常に便利なコマンドばかりです。 あ、ノイズやDPCMの使い方も無かったですね。 また時間が空けばやるやも知れません。
■ あとがき ■

MMLというのは、いわば演奏方法です。 ファミコンなどの音源(シンセサイザーと呼ぼうか)は数ある楽器の1つなワケです。 ピアノやギターなどの楽器に特有の演奏方法があるように、MML(プログラム)による シンセサイザーの演奏にも特有の技法が存在します。 ゼヒそれを身につけて素晴らしい音楽の世界に入門して下さい。 オリジナル・コピー何でも良いんです。 まずは始めてみましょう! この講座がMMLを始める手助けになれば幸いです。