オンラインマニュアル
オンラインマニュアル

じしょ・おんがく(MML)

はじめに

MMLモードは、MML(Music Macro Language)を用いて音楽を作曲したり聞いたりするモードです。
本ソフトウェアのMMLは一般的なMMLと異なる場合があります。

基本仕様

1曲につき共通1パートと、ABCDEの5パートで構成され、1パートあたり16384文字まで入力することが出来ます。
コメントや改行など演奏に関係の無い文字を入力することも可能ですがその分も文字数にカウントされるのでご注意下さい。 (コメントは1文字で2文字扱いになります)
入力は1パートずつ別々に行ないます。

なお、共通パートは演奏コマンドを使用できません。
A~Eパートの演奏開始前に実行される、設定専用のパートです。
音色定義やマクロ設定などをまとめて行うのに使用しましょう。

一般音符入力記号

音符を表す入力として「CDEFGAB」があります。
それぞれ「ドレミファソラシ」にあたります。
音符記号の後に「#」又は「+」で半音上げ、「-」で半音下げになります。
休符は「R」で表します。
また、後ろに数値をつけることでその音符の長さを直接指定したり、「.」を付けることで付点音符(音の長さ1.5倍)にすることが出来ます。

特殊音符入力記号

【前置き】ここではドレミ…の別表記方法を説明しますが、実際は使うことはありません。
(したがって読まなくても問題ありません)

別の音符を表す入力として「N」があります。
「N」の次に数値を付けることで現在の音の高さに関係なく音を出せます。

音の高さは半音部を含んで数値が1ずつ増えていきます。

0(ド)、1(ド#)、2(レ)、3(レ#)、4(ミ)、5(ファ)……といった具合です。

音の高さ指定に数値を使っているので、長さを指定するにはL(数値)で表記されたものしか正しく反映されません。

音符以外の記号とは

音符以外の記号はパートまたは曲全体に影響を及ぼしたり、何も指定しなかった時の音符の長さを指定したりします。

オクターブ設定

オクターブは「O」で設定します。
「O」の後に1~7の値を設定することで音符記号の出すオクターブが変わります。

指定したあとのそのパートのみに影響します。
また、「>」「<」でも変更が可能です。
それぞれ「1オクターブ高くする」「1オクターブ低くする」です。

どの指定にしても範囲外の値になる場合は正しいMMLとして受け付けません。

音量設定

音量設定は「V」で設定します。
「V」の後に0~255の値を設定することで音符記号の出す音の大きさが変わります。

指定したあとのそのパートのみに影響します。
注意点として、全パートの音量が最大の場合などは音が割れることがあります。

テンポ設定

テンポを設定します。
「T」の後に1~255の値を設定することでテンポが変わります。

「T」コマンドは過去シリーズと異なり、設定されたタイミングで、そのパートにのみ影響を及ぼします。
そのため最初のテンポ指定は共通部で行うのが推奨です。

音の長さ設定

音の長さは「L」で設定します。
「L」の後に音符の時と同じように数値を入れることで長さを設定します。

L4だと4分音符になります。
付点の利用も可能です。

音をつなげる

単体の長さ指定では、表現の難しい音の長さの場合は複数に分けてつなげます。
音をつなげる際は音符と音符を&でつなげます。

「A4&A16」といった具合です。
音楽で言うタイです。
別の音につなげるスラーも利用可能です。

音色を変える

MMLモードは複数の音色を奏でることが出来ます。
「@」の後に数値「0~4」又は「5~31」を入力することでそのパートのそれ以降の音色が変わります。

それぞれ「0:く形(くけい)波」「1:三角波」「2:ノコギリ波」「3:サイン波」「4:ホワイトノイズ」です。
音色は実際に聞いて確かめてみてください。

ただし「4:ホワイトノイズ」だけは、音の高さを変えても、変化しません。

「5~31」は自作音色です。
「@W」の音色定義コマンド、またはMML入力画面の「音」コマンドを使うと、音色を自作できます。

音色を定義する

【前置き】
音色定義から下の項目はマニアックな内容です。
MMLに慣れるまでは読まない方がいいかもしれません。

音色定義とは、@0~4には無い音色を自作することです。
@5~31までの27個の音色を作成可能です。

音色定義は、「@W」の後に音色番号「5~31」を入力し、その後に続けて、多数のパラメータを入力して設定します。
MML入力画面で「音」コマンドを使うと入力を補助してくれます。

「@W」数1「:」数2「R」数3「N」数4「C」数5「:」数6
「」内の英数字はそのまま入力してください。「C」と数5は省略できます。

(例)@W5:3R2N3:50

数1=音色番号5~31、数2=波形種別0~4
数1に音色番号「5~31」を入力。数2に波形種別「0~4」を入力。
波形種別は音色0~4と同じですが4ではピンクノイズが使用できます。

ピンクノイズはホワイトノイズと違って周波数で音が変化します。
ピンクノイズは乱暴に言うと、音が変化するノイズのことです。
ドラムなどのリズム楽器や効果音を作る際に便利です。

数3には周波数ランダム「0~100」を入力。
周波数ランダムはどれだけ周波数の振れ幅のあるノイズを入れるかの割合。(数値が大きいほど音がノイズ化します)

数4にデシベルランダム「0~100」を入力。
デシベルランダムは、波形に入れるランダムノイズの割合。(数値が大きいほどノイズがたくさん入ります)

数5にサイクル「0~1000」を入力。
サイクルは、2つ以上のDuty比を連続再生するサイクル(ミリ秒)
有効にするにはDuty比を2つ以上指定する必要があります。

数6にDuty比「0~99」を入力。
Duty比とは一定周期内の信号のオンオフの継続時間の比率です。(乱暴に言うと、この数値に応じて聞こえる音が変わります)

数2の波形種別に「4」を入力しており、数6のDuty比にDuty比「0」を入力するとホワイトノイズになります。
「1~99」入力時はピンクノイズとなりノイズ音が変化します。

ピンクノイズは「80」以上の方が差が分かりやすいかもしれません。
数6の次に「:」数7「:」数8「:」数9という具合に数13まで、Duty比は最大8個入力できます。

かなりマニアックな設定で、チンプンカンプンな方が多いかと思いますので、デフォルトの@0~4だけ使って作っても良いと思います。

もしチャレンジしてみたい方は、MML入力画面で「音」コマンドを選択し、入力補助画面から各設定をためして音を作り、@W5:3R2N3:50のようなコマンドを書き出すところから試してみましょう。

スラークロスポイント

スラークロスポイント定義は「@S」の後に「1~128」を入力します。
デフォルトは「4」で、小数点以下の指定が可能です。

例えば、C&Dのスラーのとき、Cの残り1/Sから終了の位置にかけて音程が変わっていきます。
つまり短いと(数値が大きい)ポルタメントのようで長い(値が小さい)とグリッサンドのようになります。

エンベロープ定義、変更する

エンベロープ定義は音作りに使用します。
音色定義が楽器の音そのものとすれば、エンベロープ定義ではその音の波形を時間経過と共に変化させます。

エンベロープ定義は「@ED」の後に「0~255」を入力し、その後に続けて、多数のパラメータの入力が必要です。
MML入力画面で「エ」コマンドを使うと入力を補助してくれます。

「@ED」数1「:」数2「:」数3「:」数4「:」数5「:」数6
数1にエンベロープ番号「0~255」を入力。
数2~数3に、A、D、R時間を「0.0~10000」ミリ秒を入力。

数2は音が鳴り始めてからのアタック時間を入力。
数3はアタックとリリースの間のディケイ時間を入力。
数4は音が鳴り終わる部分のリリース時間を入力。

数5はアタック時間の音量を「0~255」で入力。
数6はサスティン時間の音量を「0~255」で入力。

エンベロープ変更は「@E」の後に「0~255」の入力で行います。
定義したエンベロープ番号に変更し、以降そのパートで使用します。

音量ビブラートを指定する

音量ビブラート定義は「@LV」の後に、ビブラートの開始時間をミリ秒「0~32767」で入力し、その後に続けて、多数のパラメータの入力が必要です。

「@LV」数1「SまたはL」「:」数2「:」数3
数1に開始までの時間「0~32767」を入力。
その数値の後に「S」補完なし、または「L」線形補完ありを入力。

数2はビブラートを行う周期を「1~32767」ミリ秒で入力。
数3は音量の変動幅を「1~100」%で入力。
このビブラートは続けて6回まで指定できます。

例えば、@LV1000S:100:60:1500S:70:30 と定義すると2回指定となります。
1000ミリ秒後に100ミリ秒周期で60%変動するビブラートが1500ミリ秒後までかかり、1500ミリ秒後から70ミリ秒周期で30%変動するビブラートが最後までかかります。

この指定はミリ秒ではなく音に対する%で指定することもできます。
その場合は「@LVP」で指定をしてください。

例えば、@LVP50S:90:40:80S:70:30 と定義すると、その後の音に対して音の長さの50%地点から80%地点まで90ミリ秒周期で40%変動するビブラートがかかり、80%地点から最後まで70ミリ秒周期で30%変動するビブラートがかかります。

音程ビブラートを指定する

音程ビブラート定義は「@LT」の後に、ビブラートの開始時間をミリ秒「0~32767」で入力し、その後に続けて、多数のパラメータの入力が必要です。

「@LT」数1「SまたはL」「:」数2「:」数3
数1に開始までの時間「0~32767」を入力。
その数値の後に「S」補完なし、または「L」線形補完ありを入力。

数2はビブラートを行う周期を「1~32767」ミリ秒で入力。
数3は音量の変動幅を「1~100」%で入力。
このビブラートは続けて6回まで指定できます。

例えば、@LT123S:100:40:300S:66:20 と定義すると2回指定となります。
123ミリ秒後に100ミリ秒周期で40%変動するビブラートが300ミリ秒後までかかり、300ミリ秒後から66ミリ秒周期で20%変動するビブラートが最後までかかります。

この指定はミリ秒ではなく音に対する%で指定することもできます。
その場合は「@LTP」で指定をしてください。

例えば、@LTP20L:333:50:60L:111:30 と定義すると、その後の音に対して音の長さ20%地点から60%地点まで333ミリ秒周期で50%変動ビブラートがかかり、60%地点から最後まで111ミリ秒周期で30%変動するビブラートがかかります。

マクロ定義し、呼び出す

マクロ定義は「@!」の後に、任意の一文字を入力します。
その後は、実行したいコマンドを入力し、終了時に「!」を入力します。
呼び出しは「!」と「定義した一文字」で行います。

例えば、「@!AV180CCD!」と一度定義すると「!A」と入力するだけで「V180CCD」と同じ処理が実行されます。

細かく音色を変更する必要のあるリズムパートでは、共通パートで様々な音色をマクロ定義しておくことでMMLの可読性を上げることができます。

その他の入力

その他の入力として以下の二つがあります。
「改」「※」

「改」は現在のカーソル位置に改行を入れます。
見やすくするために好きに入れるといいでしょう。

「※」は現在の位置にコメントを入れます。
日本語で入力が可能です。
コメントは1文字で2文字分使います。
表示される際は周りと色が違います。

{}について

MML編集時、{}で囲うと連符になります。

{}内で許されるのは、A~G,R,N,X,O,<>,など、音を鳴らす、音程などのコマンドです。
その際、長さ変更はできません。
連符は、合計時間が現在の音の長さになるように、中に入った音符を連続で鳴らします。

[]と:について

MML編集時、[]で囲うとループ設定になります。
[]の後に数値を付ければ、指定回数ループ。
数値が無ければ無限ループになります。
ループ中に:を付ければループ脱出ポイントになります。
ループ回数残数が0のときは、:に来たらループを抜けます。

XとPについて

Xは周波数直接指定音符です(音階に無い音の高さを使いたい方用)
使用機会は無いかもしれませんがXのあとに数値で指定できます。
数値上限は無いですが10000程度を目安とすると良いでしょう。

ちなみに、CDEF等の音符命令や、N命令で表現できる一番高い音が3951.066Hz 、低い音が16.351Hz です。
X命令はその範囲を超えることができます。

Pは、パン(定位)命令です。
このコマンドで音を左右のチャンネルに分配できます。

Pのあとに0~255の数値で指定ができます。
128にすると音は中央に定位します。

セーブ、ロード

MMLは合計256曲のセーブが可能です。
セーブはMMLの編集を終わるとき行われます。
また、空きスロットに他のおんがくスロットの曲がロードできます。

戦闘中に選べる曲は1曲目~5曲目で固定です。

コピー&ペースト

/ /
入力画面で「ボタンタッチパッドボタン」を押すとコピーモードに移行できます。

コピーモードでは入力したMMLの一部をコピーしたり、切り取ってから別の場所に貼り付けることができます。
ボタンタッチパッドボタン」で、もとの入力モードに戻ります。

作成時のアドバイス

MMLデータを作成する際はこまめにテスト再生するとよいでしょう。
MMLがあっているかどうかをチェックしてくれるからです。

セーブデータ

「おんがく」で作成した最大256個のおんがくデータは、ゲームの進行をセーブするスロットやオートセーブとは別にアカウントごとに共通で1か所に保存されます。

おんがくデータの上限保存数は、空き容量が許した場合の最大数です。
自作要素は保存数が増えると容量が大きくなるため、空き容量が不足している場合は、それ以上保存できません。