MMLリファレンス

onitama edited this page Jan 19, 2019 · 8 revisions

MUCOM88 リファレンスマニュアル

■ パート構成

行の先頭に記述することでパート指定となります。
YM2203(OPN)ではA~Fのみ、YM2608(OPNA/サウンドボードII)ではA~K全てのパートが使用可能です。
リズム音源のGパート、およびADPCM音源のKパートでは、他のパートとMMLの記述方法が一部異なります。

トラック 名前 備考
A FM音源1
B FM音源2
C FM音源3
D SSG音源1
E SSG音源2
F SSG音源3
G リズム音源 (サウンドボード2専用)
H FM音源4 ( 〃 )
I FM音源5 ( 〃 )
J FM音源6 ( 〃 )
K ADPCM音源 ( 〃 )

■ 基本的なMMLの書き方

(例)

A t210 @70o3v15l16 [a8>aa<]4

※ 音色番号70、ボリューム15で、ラ8分音符、ラ16分音符、ラ16分音符を4回ループします。

■ MML内部

記述 説明
C 全音符あたりのクロック(分解能)指定 (デフォルトはC128)
t FM音源チップのタイマーBの数値を直接指定するテンポ指定
T テンポ指定 (1分間に演奏する四分音符の数で指定)
@ 音色番号指定(FM/SSG/PCM) SSGの場合はプリセット音色(16種)を使用する
@"..." [FM] 音色名での音色指定
o [FM/SSG] オクターブ絶対指定(o1~o8, デフォルトo4)、[ADPCM] o1が高音でo2,o3となるほど低音になる。
v [FM/SSG] 音量絶対指定(0~15)、[ADPCM] 音量絶対指定(0~255)、[リズム] vn1,n2,n3,n4,n5,n6,n7 (全体,BD,SD,HH,CY,TM,RY)
q 音の長さ全体から、キーオフを早めるタイミングをクロック数で指定。(スタッカート)
p パン (0=発音しない, 1=右, 2=左, 3=中央)
リズムパートでの指定時は、bit0~3でリズムの種類(0~5)、bit4,5でパン(1:右, 2:左, 3:中央)を指定する。
($を指定して16進指定可。例: p$12 = シンバルを右に)
l デフォルト音長指定
cdefgab 音程の指定 (必要に応じて後ろに調号(+がシャープ,-がフラット)、音長数値で指定します。「.」付点も指定可)
r 休符
% 音長をクロック値で指定 ※デフォルト音長指定をクロックで指定したい場合は、前にスペースを入れる。
D ディチューン (-32768~32767) 後ろに+を指定した場合、絶対指定でなく現在値からの相対指定になる
> オクターブ相対指定(上げ)
< オクターブ相対指定(下げ)
) 音量相対指定(上げ) 16段階 )nで一度に変化する量を数値で指定可
( 音量相対指定(下げ) 16段階 (nで一度に変化する量を数値で指定可
& タイ/レガート (前後の音のキーオフ/キーオンを省略)
^ 音長を繋げる
{…} ポルタメント。{c2b} で c→b へのポルタメント 数字は音長指定。オクターブをまたぐことも可。
[…]n ループ開始位置とループ終了位置。後ろに数字を置くことで繰り返し回数を指定
/ ループ内脱出位置指定 [ ]のループ内に記述すると、最後のループで / の位置でループを脱出します。
L 曲全体のループ位置指定 (各パート1箇所のみ指定可能)
K 移調絶対指定 (-12~+12) ループ内は繰り返し1回のみ
V 音量の相対変化指定(以降のvコマンドの値に増減, コンパイル時に評価)
=n1,n2 エコーマクロ。n1(0~9)で直前の音符数, n2(省略可能)でボリュームの下げ数を指定
\ =n1,n2で設定した音に置き換える
k (v1.7のみ) 移調相対指定
s (v1.7のみ) キーオンのタイミングを変える。クロック単位で指定し、正で遅らせ負の方向で早める(シャッフル)
H [FM] ハードウェアLFO Hn1,n2,n3 n1:速度(0-7),n2:PMS(0-7),n3:AMS(0-3)
R [FM/SSG] リバーブ Rn で音量の加減値を指定 (nは負の値も指定可)
キーオフ時、キーオフする代わりに現在の音量の約1/3に設定して発音を続ける。
RF [FM/SSG] リバーブ ON/OFF (0=off 1=on)
Rm [FM] リバーブの効果のかかる部分の指定(0=続く休符も含める 1=qで切られた部分のみ)
M ソフトウェアLFO (Mn1,n2,n3,n4) n1:delay n2:クロック単位 n3:振幅 n4:変化の回数)
MF ソフトウェアLFO ON/OFF (0=off 1=on)
MW ソフトウェアLFOのディレイ(n1)だけを設定
MC ソフトウェアLFOのクロック単位(n2)だけを設定
ML ソフトウェアLFOの振幅(n3)だけを設定
MD ソフトウェアLFOの変化の回数(n4)だけを設定
S [FM3] 効果音モードのスロットディチューン (Sn1,n2,n3,n4) n1=OP4 n2=OP3 n3=OP1 n4=OP2のディチューン順(0~255)
E [SSG] ソフトウェアエンベロープ(En1,n2,n3,n4,n5,n6) AL,AR,DR,SL,SR,RR
P [SSG] ミキサモード Pn (0:発音しない 1:トーン 2:ノイズ 3:トーン+ノイズ)
w [SSG] ノイズ周波数 (0~31)
s [SSG] SSGハードウェアエンベロープ・波形指定 (v1.5のみ)
m [SSG] SSGハードウェアエンベロープ・周期指定 (v1.5のみ)
y レジスタ直接書き込み(yn1,n2) n1=レジスタ番号 n2=データ
yDM [FM] DT/ML直接指定 yDM,n1,n2 n1=スロット番号 n2=データ
yTL [FM] TL直接指定 yTL,n1,n2 n1=スロット番号 n2=データ
yKA [FM] KS/AR直接指定 yKA,n1,n2 n1=スロット番号 n2=データ
yDR [FM] DR直接指定 yDR,n1,n2 n1=スロット番号 n2=データ
ySR [FM] SR直接指定 ySR,n1,n2 n1=スロット番号 n2=データ
ySL [FM] SL/RR直接指定 ySL,n1,n2 n1=スロット番号 n2=データ
ySE [FM] SSGEG直接指定 ySE,n1,n2 n1=スロット番号 n2=データ
vm [ADPCM] PCMボリュームモード(vmn で n を音量の補正値としてサウンドドライバ側で加算する)
* マクロ展開
; これ以降行末までコメント
: これ以降コンパイルを行なわない
! このパートのこれ以降を全て休符とする(発音しない)
J ジャンプコマンド(この位置から演奏開始)
| 何もしない スペースと同意 (視認性向上用の区切り)

■ 残念ながらドライバに実装されなかったもしくは無くなったMML(おまけ)

記述 内容 備考
MT [FM] ソフトウェアLFOをTLに適用 MTn1,n2 で指定 ※ドライバで正しく実装されていないため使用できません。
@n1= [SSG] 音色番号の登録 @n1=n2,n3,n4,n5,n6,n7 ※ドライバ側が実装されていないため使用できません。

■ FM音源音色定義

※音色パラメータの区切りは数字以外ならばなんでも使用できます。 ※パラメータは$を付けることで16進数での指定が可能です。

・設定方法その1

最初の行に@(音色番号)、 (最初に空白を必ず2文字以上入れる必要があります) 次の行にFB,AL、
その次の4行に9つのパラメータを並べます。
パラメータの間にはスペースを入れても構いません。

  @(音色番号)
FB,AL
AR,DR,SR,RR,SL,TL,KS,ML,DT ; op1
AR,DR,SR,RR,SL,TL,KS,ML,DT ; op2
AR,DR,SR,RR,SL,TL,KS,ML,DT ; op3
AR,DR,SR,RR,SL,TL,KS,ML,DT ; op4

・設定方法その2

POLL Vで音色エディタのパラメータを出力したときの書式です。
@%(音色番号)の後に25byteのレジスタデータをレジスタ順に直接並べます。
レジスタ順ですので、op1/op3/op2/op4の順となっていますので注意が必要です。

@%000
$073,$054,$073,$054 ; DT/ML
$01A,$019,$000,$000 ; TL
$01F,$01F,$01F,$01F ; KS/AR
$080,$080,$080,$080 ; AMON(OPNA)/DR
$000,$000,$001,$001 ; SR
$00F,$00F,$03F,$03F ; SL/RR
$034                ; FB/AL

■ SSG音色のプリセットパターン

デフォルトで以下の@0~@15までの16種類のプリセットパターンが定義されています。
このうちエンベロープパターンはサウンドドライバ(music)内に埋め込まれており、

ミキサ設定とLFOは ssgdat ファイル内で定義されています。

@0  :  E255,255,255,255,0,255 P1
@1  :  E255,255,255,200,0,10  P1
@2  :  E255,255,255,200,1,10  P1
@3  :  E255,255,255,190,0,10  P1 M16,1,25,4
@4  :  E255,255,255,190,1,10  P1 M16,1,25,4
@5  :  E255,255,255,170,0,10  P1
@6  :  E40,70,14,190,0,15     P1 M16,1,24,5
@7  :  E120,30,255,255,0,10   P1 M16,1,25,4
@8  :  E255,255,255,225,8,15  P1
@9  :  E255,255,255,1,255,255 P2
@10 :  E255,255,255,200,8,255 P2
@11 :  E255,255,255,220,20,8  P1 M1,1,300,-1
@12 :  E255,255,255,255,0,10  P1 M1,1,-400,4
@13 :  E255,255,255,255,0,10  P1 M1,1,80,-1
@14 :  E120,80,255,255,0,255  P1 M1,1,-250,1
@15 :  E255,255,255,220,0,255 P1 M1,1,3000,-1

■ リズムトラック

Gパートのリズムトラックでは、他のパートと一部表記が異なります。
・@の音色番号6bitを使用して発音するリズムを指定します。
各bitは以下のとおり対応しています。( ) 内の数字の合計(0~63)を @ で指定します。

ビット 楽器
bit5 (+32) リムショット
bit4 (+16) タム
bit3 (+ 8) ハイハット
bit2 (+ 4) ライドシンバル
bit1 (+ 2) スネアドラム
bit0 (+ 1) バスドラム

例) バスドラム,スネアドラム,ハイハットを同時に発音 = 1+2+8 = @11を指定する。
・MML中ではダミーの音程(cdefgab)のいずれかと休符(r)で発音を表記します。
・音量は vn1,n2,n3,n4,n5,n6,n7 で指定します。

パラメータ位置 詳細
n1 リズム全体音量 (0~63)
n2 バスドラムの音量 (0~31)
n3 スネアドラムの音量 (0~31)
n4 ライドシンバルの音量(0~31)
n5 ハイハットの音量 (0~31)
n6 タムの音量 (0~31)
n7 リムショットの音量 (0~31)

■ ADPCMトラック

KパートのADPCMトラックでは、o1cで原音の音程で再生され、
音階の指定が高いほど実際の発音される音程は下がります。
オクターブや <, > も通常のパートとは逆になります。
また、vコマンドによるボリューム指定の範囲は0~255までとなります。

ADPCMは以下の音色がロードされています。

音色番号 音色名
@1 kick
@2 snare
@3 kick+snare
@4 crashcymbal
@5 kick+c.cymbal
@6 ac.tam
@7 e.tam
@8 snare2
@9 o.hit
@10 909kick
@11 909snare
@12 808openhihat
@13 timbal
@14 hand clap
@15 timpani
@16 コーラス

自力でオリジナルの音を取り込むには、同梱のvoiceeditor.d88を使用します。

■ MML記述例

・リズムトラックのMMLの書き方

(例)

G t210 v63,31,31,31,31,31,31l16 @1c4@3c4@1c4@3c@2ccc

※ @1はバスドラム、@2はスネアドラム、@3はバスドラム+スネアドラムが鳴ります。

・ADPCMトラックのMMLの書き方

(例)

K t210 o1v50l16 @1c4@2c4@1c4@2cccc

※ ADPCMのオクターブは1が基準となりo2で一つ下のオクターブの音が鳴ります。

・ソフトウェアLFOの書き方

(例)

A t210 @90o4v10l2 M30,1,6,4 cdefgab>c

・SSGトラックのソフトウェアエンベロープの書き方

(例)

D t210 E255,255,255,190,0,10 o4v10l2 cdefgab>c

※ ソフトウェアエンベロープはプリセットが用意されています。
※ 前述の「SSG音色のプリセットパターン」をご参照ください。

・クロックの考え方

(例1)

A C128 t210 @90o4v10 c4

(例2)

A C128 t210 @90o4v10 c%32

※ 2つのMMLは同じ意味になります。
※ 全音符128クロックの場合、32クロックが4分音符と同じ音長になります。
※ 全音符128クロックの場合、12分音符は割り切れないため指定できません。

・エコーマクロの考え方

(例)

A t210 @93o5v13l4 \=1,4 c\d\e\f\g\a\b\

(例)

A t210 @93o4v13l4 c(4c)4d(4d)4e(4e)4f(4f)4g(4g)4a(4a)4b(4b)4

※ 2つのMMLは同じ意味になります。

(例)

A t210 @93o5v13l4 \=2,4 c\d\e\f\g\a\b\

(例)

A t210 @93o4v13l4 c(4o1c)4o4d(4c)4e(4d)4f(4e)4g(4f)4a(4g)4b(4a)4

※ 2つのMMLは同じ意味になります。
※ o1cは2つ前の音が無いためo1cが鳴ります。

■ マクロ

よく使うパターンを定義しておき、MML中で呼び出す機能です。
マクロ定義はコンパイル時にグラフィックVRAM(青)のエリアをワークに使用します。
マクロのネストも可能です。ネストの階層数には制限はなく、マクロバッファの容量に依存します。

・マクロ定義

# *(マクロ番号){マクロ内容} マクロ内容にはスペースを含むことが可能です。

・マクロ呼び出し

MML中で *(マクロ番号)

(例)

# *1{cdefg}
A t200 @90v15o5*1 @91v15o5*1
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.