• Welcome to Touhou Wiki!
  • Account registration has been reopened! Register an account if you wish to edit.

User:Mamizou/Music Dev/PMD/Pmdmml

From Touhou Wiki
Jump to: navigation, search

*Professinal Music Driver [P.M.D.] version 4.8 MML Command Manual*
Apr.4th 1997 by M.Kajihara (KAJA)

§1 基本事項

MMLを表記するにあたって基本となる事項を解説します。

Will explain the underlying matters referred to In the MML.

1-1 パート表記 1-1 Part notation
§1-1-1 パート表記の方法

行の頭に、各パートに付けられているアルファベット文字を指定する事により、その行はそのパートで演奏されるMMLとなります。

MMLは頭から順にコンパイルされ、演奏されていきます。

パート記号とMMLは、必ず SPACE 又は TAB で区切られている必要があります。

[例]

A	@1v13cdefg

[結果] このMMLは、Aパートで演奏されます。

[失敗例1]

A	@1v13cdefg

[原因] パート記号が行頭ではない。

[結果] このMMLは認識されず、コメントとして扱われます。

[失敗例2]

A	@1v13cdefg

[原因] パート記号とMMLの間に SPACE 又は TAB がない。

[結果] 複数パート表記(->§1-1-2)として扱われます。


§1-1-1 Part way of notation

The head of the line, by specifying the alphabetic characters that are attached to each part, the line will be that part is played in MML.

MML are compiled in order from the head, will be played.

Symbols and MML part, you must have always separated by a TAB or SPACE.

[Example]

A	@1v13cdefg

[Results] MML, this will be played in the A part.

[Failure case 1]

A	@1v13cdefg

[Cause] Part symbol is not at the beginning of the line.

[Result] MML this is not recognized, it is treated as a comment.

[Failure case 2]

A@1v13cdefg

[Cause] There is no TAB or SPACE between part symbols and MML.

[Result] Will be treated as (-> § 1-1-2) multi-part notation.

§1-1-2 パートの複数表記

パート記号は、複数指定出来ます。

複数指定する場合は、パート記号とパート記号の間を開けずに表記して下さい。

存在しないパート記号を指定しても、エラーにはならず、読み飛ばされます。

これを逆に利用して、パート記号直後に数値を表記し、MMLを見易くする事もできます。特にリズムパート(->§1-2)では有用です。

[例1]

AC	@1v13cdefg

[結果] このMMLは、Aパートと Cパートで演奏されます。<p>

<p>[例2]

AC1	@1v13cdefg

[結果] このMMLは、Aパートと Cパートで演奏されます。

"1" は無視されます。

[失敗例]

A C	@1v13cdefg

[原因] パート記号間が離れている。
[結果] "C" はMMLコマンドとして認識されます。</br>

<p>[関連]

コマンド (->§16-3)

§1-1-3 パート記号と音源の対応

ドライバ(音源)によって、パート記号と音源の割り振りが異なります。

以下の表のようになっていて、任意、とある箇所はユーザーで設定が可能です。(->§2-18,§2-25)

1. PMD.COM / PMDVA1.COM の場合 (98,88VA1ノーマル音源)

A FM音源1
B FM音源2
C FM音源3
Dor任意 FM音源3
Eor任意 FM音源3
For任意 FM音源3
G SSG音源1
H SSG音源2
I SSG音源3
K リズムパターン指定

R リズムパターン定義

[関連]
#FM3Extend コマンド (->§2-18)

2. PMDB2.COM / PMD86.COM / PMDVA.COM の場合 (SpeakBoard,音美,86,VA2音源)

A FM音源1
B FM音源2
C FM音源3
D FM音源4
E FM音源5
F FM音源6
G SSG音源1
H SSG音源2
I SSG音源3
J PCM音源
K リズムパターン指定
R リズムパターン定義
任意1 FM音源3
任意2 FM音源3

任意3 FM音源3

[関連]
#FM3Extend コマンド (->§2-18)

3. PMD.X の場合 (X68000)

A FM音源1
B FM音源2
C FM音源3
D FM音源4
E FM音源5
F FM音源6
G FM音源7
H FM音源8

J PCM音源

[関連]
MC.EXE /m オプション (-> MC.DOC)

4. PMD.EXP の場合 (FM-TOWNS)

A FM音源1
B FM音源2
C FM音源3
D FM音源4
E FM音源5
F FM音源6
J PCM音源1

K PCM音源2

[関連]
MC.EXE /t オプション (-> MC.DOC)

5. PMDIBM.COM の場合 (IBMPC)

A FM音源1
B FM音源2
C FM音源3
D FM音源4
E FM音源5
F FM音源6
G FM音源7
H FM音源8

I FM音源9

[関連]
MC.EXE /l オプション (-> MC.DOC)

6. PMDPPZ.COM の場合 (86)

A FM音源1
B FM音源2
C FM音源3
D FM音源4
E FM音源5
F FM音源6
G SSG音源1
H SSG音源2
I SSG音源3
J PCM音源 (ちびおとが付いている場合のみ再生)
K リズムパターン指定
R リズムパターン定義
任意1 FM音源3
任意2 FM音源3
任意3 FM音源3
任意4 PPZ8用PCM音源1
任意5 PPZ8用PCM音源2
任意6 PPZ8用PCM音源3
任意7 PPZ8用PCM音源4
任意8 PPZ8用PCM音源5
任意9 PPZ8用PCM音源6
任意10 PPZ8用PCM音源7

任意11 PPZ8用PCM音源8

[関連]
#FM3Extend コマンド (->§2-18)
#PPZExtend コマンド (->§2-25)

§1-2 リズムパート(K/R)の使用方法
§1-2-1 PMD内蔵SSGドラムを演奏する場合

K/Rパートは基本的に、PMDに内蔵されている、SSGドラムを演奏するパート

です。


ただし、PPSDRV(->PPSDRV.DOC)が常駐し、PMDがそれに対応している場合は、

(->PMD.DOC /P オプション)SSGPCM音色を演奏するパートとなります。


YM2608のリズム音源専用パートではないので注意して下さい。(->§1-2-2)


R パートでパターンを定義し、K パートでそのパターンを演奏する順番を

指定します。


R パートは、定義順に内部で 0 から 255 までの数値がつきます。

演奏順を指定する際にはその数値を K パートで R コマンド(->§6-7)を

使って指定します。


[例]

K R0 L [R1]3R2

R0 l16[@64c]4

R1 l8 @1c@128c@2c@128c

R2 @1c@16c@8c@4c

[結果] イントロに、Snare2のロール(2行目、R0)が入り、

8ビートのパターン(3行目、R1)が3回繰り返され、

タムのフィルイン(4行目、R2)が入って、ループします。


パート記号 R の後ろの数値はダミーで、省略可能ですが、表記しておくと

解りやすいでしょう。(->§1-1-2)


[関連]

R コマンド (->§6-7)

@ コマンド (->§6-1)


§1-2-2 YM2608のリズム音源を演奏する場合


PMDではYM2608のリズム音源専用のパートは用意されていませんが、

リズム音源のコマンド(->§14)はどのパートでも表記できますので、

同じリズムを演奏する、SSGリズムパート(K/R)で指定するのが便利です。


[例]

K ¥V63¥vs31¥vb31¥vh15¥vt31 ;リズム音源音量設定

K R0 L [R1]3R2

R0 l16[¥sr]4

R1 l8 ¥br¥hr¥sr¥hr

R2 ¥br¥tr¥tr¥tr

[結果] タムの上下はありませんが、§1-2-1の例と同様のリズムパターンを

リズム音源を使って演奏します。


ただし、リズム音源コマンド(->§14)は、基本的にどのパートでも

使用出来ますので、FM音源パートやSSG音源パートで使用しても

支障ありません。


[関連]

MMLコマンド・リズム音源コマンド (->§14)

§1-2-3

K/RパートのSSGリズムが使用するSSG音源パートについてK/Rパートが演奏するSSGリズムは、SSGの3チャネル目が使われます。よって、I パートと競合が起きる結果となります。同時に使用しない方が無難ですが、もし同時に使用した場合には、 以下のような法則が成り立ちます。

1) どちらかがKEYONした時点でもう片方の音は消されます。

2) 同時にKEYONした場合には、K,Rパートが優先されます。

§1-2-3

SSG rhythm K/R part to play Rhythm of SSG SSG For Part Instrument K/R part is to use, the third channel of the SSG will be used. Thus, the result is a conflict happens and I part. It is safe is not to use at the same time, if at the same time if you use, the law such as the following is true:

1) Sound will be turned off one another at either has KEYON.

2) If you KEYON at the same time, K, R part will be given priority.

§1-3 数値表記の方法


数値の表記には、10進及び16進の指定が可能です。


16進の数値を表記する場合は、頭に"$"を付けます。


音長指定時にのみ、頭に "%" を付ける事によって、内部カウンタ値を

直接指定する事が出来ます。


コマンド名とパラメータ数値の間は、spaceまたはtabで空白を空けても

構いませんが、数値が続く場合のカンマ等は、数値の直後にある必要が

あります。


[例1] c4

[結果] 4分音符のドが指定されます。


[例2] c$10

[結果] 16分音符のドが指定されます。


[例3] c%12

[結果] 8分音符(内部クロック12)のドが指定されます。


[例4] MA 12, 1, 8, 2

[結果] 間のspaceは無視され、MA12,1,8,2 と同等になります。


[失敗例]

MB 12 , 1 , 8 , 2

[結果] エラー。数値とカンマの間にはspaceは空けられません。


§1-4 コメントの表記方法


MML内部にコメントを記したいという場合は、基本的には

; 記号 (->§16-5) を書いて、そこから改行までをコメントとします。


[例1]

A @13 v13 ; A.Piano

‾‾‾‾‾‾‾‾‾‾ コメント


但し、行の頭に SPACE または TAB が存在する場合は、 ; 記号がなくても

その行はすべてコメントとして扱われます。


[例2]

Part A (<-コメント)

A ・・・

B ・・・


MML中、一定行を総てコメントとしたい場合は、行頭に ` 記号 (->§16-6)

を用い、次の 行頭 ` 記号までがすべてコメントとなります。


[例3]

`

MML Coded by M.Kajihara.

Copyright(c)1994.

`


MML行間にコメントを記したい場合も、` 記号を用いる事で実現可能です。


[例4]

A @13 v13 `c major` cdefgab>c< `c minor` cde-fga-b->c<


また、MML中の全角文字は、#定義命令などの特殊な場合を除き、総て無視

されますので、全角文字だけで構成されているコメントであれば、

` 記号は特に表記しなくても大丈夫です。


[例5]

A @13 v13 ハ長調→ cdefgab>c< ハ短調→ cde-fga-b->c<


但し、以下の場合は特別となり、コメントは表記出来ません。


1) #定義命令中の、文字列を定義する命令の文字列中

2) !定義及び使用命令中の、変数文字列中

3) @定義命令中の、=音色名文字列中


[失敗例]

  1. Title Sample Music ;music title

‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ 下線部が全部#titleとして定義されてしまう。


[関連] ; コマンド (->§16-5)

` コマンド (->§16-6)


§2 [[ 全体制御コマンド ]]



以下のコマンドは、行頭に指定し、全パートに影響する制御や

曲自体の各種定義を行います。


"Filename" "Composer" "Extend" 等のアルファベット文字列は、

小文字でも大文字でも構いません。


コマンド名と文字列及び数値は、1つ以上の SPACE 又は TAB で区切られて

いる必要があります。


1PASS目に処理されるため、MMLファイルのどの位置にあっても構いませんが、

#Memo以外のコマンドを重複指定した場合は、後ろの行にあるものが有効と

なります。


§2-1 出力ファイル名指定

#Filename


[書式1] #Filename ファイル名

[書式2] #Filename .拡張子


MC.EXEの出力するコンパイル後の曲データのファイル名を変更します。


デフォルトでは、MMLのファイル名の拡張子を".M"に変更したものに

なります。


拡張子のみ指定されていた場合は、拡張子のみ、デフォルトの".M"から

変更します。


ファイル名はTAB/ESC以外のCTRLコードが来るまで定義されます。

(通常は行の終わり(CR)迄です。)


[注意] 後ろに ; をつけてコメント等は記せません。


[例1] #Filename SAMPLE.M

[結果] MMLのファイル名に関らず、作成する曲データファイル名は"SAMPLE.M"に

なります。


[例2] #Filename .M2

[結果] 作成する曲データファイル名は、MMLのファイル名の拡張子を".M2"に

変更したものとします。


§2-2 使用SSGPCMファイル名指定

#PPSFile


[書式] #PPSFile ファイル名


使用するPPS(SSGPCM)File名を定義します。(->PPS.DOC)


ファイル名はTAB/ESC以外のCTRLコードが来るまで定義されます。

(通常は行の終わり(CR)迄です。)


[注意1] 後ろに ; をつけてコメント等は記せません。


[注意2] 拡張子は省略出来ません。


[注意3] MC.EXEを使用する際は、音色データを曲データ中に定義するように(->MC.DOC)

しないと、MC.EXEの /P または /S オプションで即演奏した場合にしか

ファイルが読み込まれません。


[例] #PPSFile PPS01.PPS

[結果] K/RパートのSSGPCM音色に PPS01.PPS を使用します。


§2-3 使用PCMファイル名指定

#PCMFile , #PPCFile


[書式1] #PCMFile ファイル名

[書式2] #PPCFile ファイル名


Jパートで使用するPCM(.PPC/.PVI/.P86)ファイル名を定義します。

(->PMDPCM.DOC)

PMDPPZEを使用する場合は .PVI/.PZI ファイル名を指示します。


#PCMFileと#PPCFileは全く同じです。


ファイル名はTAB/ESC以外のCTRLコードが来るまで定義されます。

(通常は行の終わり(CR)迄です。)


[注意1] 後ろに ; をつけてコメント等は記せません。


[注意2] 拡張子は省略出来ません。


[注意3] MC.EXEを使用する際は、音色データを曲データ中に定義するように(->MC.DOC)

しないと、MC.EXEの /P または /S オプションで即演奏した場合にしか

ファイルが読み込まれません。


[例] #PCMFile SAMPLE.PPC

[結果] JパートのPCM音色に SAMPLE.PPC を使用します。


§2-4 使用音色ファイル名指定

#FFFile


[書式] #FFFile ファイル名[.FF/.FFL]


使用する音色(.FF/.FFL)ファイル名を定義します。


ファイル名はTAB/ESC以外のCTRLコードが来るまで定義されます。

(通常は行の終わり(CR)迄です。)


MC.EXEのコマンドラインに音色ファイル名を書いた場合(->MC.DOC)と全く

同じ動作をし、

ファイルが存在する場合は、同時に /V オプションも自動付加され、

ファイルが存在しない場合は、/VWオプションの効果で書き込む際に、

指定したファイル名が使用されます。


拡張子を省略した場合、OPLオプション(/L)がついている場合は .FFL、

ついていない場合は .FF になります。


[注意1] 音色定義コマンド(@)と併用する場合は、必ずFFFile -> 音色定義の順に

表記して下さい。

後ろに書くと定義した音色に上書きしてFILEを読み込んでしまう

可能性があります。


[注意2] もしコマンドラインで音色を指定していても、このコマンドが指定されている

場合はこちらが有効となります。


[例1] #FFFile EFFEC.FF

[結果] FM音源音色ファイル "EFFEC.FF" を読み込んで使用します。


[関連] FM音色定義(@) (->§3-1)

MC.DOC


§2-5 コンパイラオプション設定

#Option


[書式] #Option 文字列


コンパイラのオプションを設定します。


指定する文字列は、コマンドラインに表記するものと全く同一です。

(->MC.DOC)


[注意1] コマンドラインに設定したオプションに、付加される形で追加されます。

/N と /L といった、同時に設定出来ないオプションがかち合った場合は、

後に設定したものが有効になります。


[注意2] /N、/M、/Lといった、FM音色定義に関係するオプションを設定する場合は、

必ず音色定義(@)前に設定して下さい。


[例] #Option /L/S/A/O

[結果] MCのコマンドラインオプションの /L/S/A/O を設定します。


[関連] FM音色定義(@) (->§3-1)

MC.DOC


§2-6 タイトル定義

#Title


[書式] #Title タイトル文字列


曲のタイトルを定義します。


文字列はTAB/ESC以外のCTRLコードが来るまで定義されます。

(通常は行の終わり(CR)迄です。)


[注意1] 後ろに ; をつけてコメント等は記せません。


[注意2] MC.EXEを使用する際は、音色データを曲データ中に定義するように(->MC.DOC)

しないと、MC.EXEの /P または /S オプションで即演奏した場合にしか

この文字列は表示されません。


[例] #Title サンプル曲

[結果] 曲のタイトルを"サンプル曲"とします。


§2-7 作曲者定義

#Composer


[書式] #Composer 作曲者名文字列


作曲者名を定義します。


デフォルトでは、環境変数 "COMPOSER=" または "USER=" が定義されている

場合は、定義されている文字列を使用します。(->MC.DOC)


文字列はTAB/ESC以外のCTRLコードが来るまで定義されます。

(通常は行の終わり(CR)迄です。)


[注意1] 後ろに ; をつけてコメント等は記せません。


[注意2] MC.EXEを使用する際は、音色データを曲データ中に定義するように(->MC.DOC)

しないと、MC.EXEの /P または /S オプションで即演奏した場合にしか

この文字列は表示されません。


[例] #Composer M.Kajihara

[結果] 作曲者名を"M.Kajihara"とします。


§2-8 編曲者定義

#Arranger


[書式] #Arranger 編曲者名文字列


編曲者名を定義します。


デフォルトでは、環境変数 "ARRANGER=" または "USER=" が定義されている

場合は、定義されている文字列を使用します。(->MC.DOC)


文字列はTAB/ESC以外のCTRLコードが来るまで定義されます。

(通常は行の終わり(CR)迄です。)


[注意1] 後ろに ; をつけてコメント等は記せません。


[注意2] MC.EXEを使用する際は、音色データを曲データ中に定義するように(->MC.DOC)

しないと、MC.EXEの /P または /S オプションで即演奏した場合にしか

この文字列は表示されません。


[例] #Arranger M.Kajihara

[結果] 編曲者名を"M.Kajihara"とします。


§2-9 メモ定義

#Memo


[書式] #Memo メモ文字列


メモ文字列を定義します。


複数指定が可能で、順に定義されます。最大は 128行 までです。


[注意1] 後ろに ; をつけてコメント等は記せません。


[注意2] MC.EXEを使用する際は、音色データを曲データ中に定義するように(->MC.DOC)

しないと、MC.EXEの /P または /S オプションで即演奏した場合にしか

この文字列は表示されません。


[例] #Memo 作ったのは 94年 3月 25日

[結果] メモとして"作ったのは 94年 3月 25日"を定義します。


§2-10 テンポ指定

#Tempo #Timer


[書式1] #Tempo 数値

[書式2] #Timer 数値


[範囲] [書式1] 18〜255

[書式2] 0〜250


テンポを指定します。


#Tempoの場合、内部クロック 48 が1分間に何回になるかを指定します。

内部クロック 48 は、デフォルトでは2分音符ですが、#Zenlen コマンド

または C コマンドで変更されます。


#Timerの場合、TimerB が いくつになるかを直接指定します。


このコマンドを指定するとパート G の頭に t または T コマンドを自動的に

発行します。


[例1] #Tempo 60

[結果] テンポを 2分音符=60 とします。(4分音符=120)


[例2] #Timer 100

[結果] テンポを 内部TimerB値で 100 とします。


[関連] t コマンド (->§11-1)

T コマンド (->§11-2)

C コマンド (->§4-11)

#Zenlen コマンド (->§2-11)


§2-11 全音符長指定

#Zenlen


[書式] #Zenlen 数値


[範囲] 1〜255


全音符長を指定します。


MMLのCコマンドと同様で、96以外の値を指定するとパート G の頭に

C コマンドを自動的に発行します。


指定するすべての音符長は、この数値の約数でなくてはなりません。


デフォルトは 96 ですので、使用出来る音符長は、

1,2,3,4,6,8,12,16,24,32,48,96

になります。


[注意] 変更した場合、テンポの値が、1分間にどの音符がテンポ指定値になるかが

変化します。


[例] #Zenlen 192

[結果] 全音符を内部クロック 192 とし、使用出来る音長を

1,2,3,4,6,8,12,16,24,32,48,64,96,192 の14種類に増やします。

#Tempo 及び t コマンドの指定値は 4分音符= の値になります。


[補足] このコマンドで全音符長を大きくすると、より細かな表現が可能となりますが、

その分、演奏時に、よりCPUパワーを消費するようになってしまいます。


特に高速処理を要求される場面のBGMとして使用する曲を作る場合は、

この値を小さくすると、演奏処理に掛かるCPUパワーを軽減させる事が

出来ます。


[関連] C コマンド (->§4-11)

#Tempo コマンド (->§2-10)

t コマンド (->§11-1)


§2-12 オクターブ上下記号の機能指定

#Octave


[書式1] #Octave Reverse

[書式2] #Octave Normal


>、< コマンドの役割をreverseで反対に、normalで標準にします。


MMLのXコマンドと同様で、指定するとパート A の頭に X コマンドを

自動的に発行します。


[例] #Octave Reverse

[結果] > コマンドでオクターブダウン、< コマンドでオクターブアップとします。


[関連] X コマンド (->§4-6)

> < コマンド (->§4-5)


§2-13 デフォルトループ回数の設定

#LoopDefault


[書式] #LoopDefault 数値


[範囲] 0〜255


ループ終了コマンド ] で、数値を省略した場合に指定される値を

設定します。


デフォルトは0(無限ループ)です。


[例] #LoopDefault 2

[結果] ] コマンドで数値を省略した場合、2回ループをデフォルトとします。


[関連] ] コマンド (->§10-1)


§2-14 音色データにDT2を含めるかどうかの設定

#DT2Flag


[書式1] #DT2Flag on

[書式2] #DT2Flag off


音色データフォーマットにDT2が含まれるかどうかを設定します。


デフォルトは、MCのオプションによって変化し、

/m が指定されていた場合 -> on

/m が指定されていない場合 -> off

となります。


DT2が必要とされる音源で、このフラグがoffで指定されていない場合は、

DT2は全スロット 0 となります。


[例] #DT2Flag on

[結果] 音源に関らず、音色データフォーマットにDT2を表記します。


[関連] FM音色定義(@) (->§3-1)


§2-15 ベンドレンジ設定

#Bendrange


[書式] #Bendrange 数値


[範囲] 0〜255


ベンド幅を設定します。デフォルトは0です。


MMLの B コマンドと同様で、指定するとパート A の頭に B コマンドを

自動的に発行します。


0以外の値を指定すると、I コマンドが有効になり、

I±8192 でベンド幅 × 半音分ずれるようになります。


[注意] ベンド指定は、I コマンドに関するかなりの注意(->§7-5)を要する上、

MMLが見づらくなることもあり、MIDIからのコンバート以外では使用しない

方が無難です。


[例] #Bendrange 12

[結果] I±8192 で、ちょうど1オクターブ分音程がずれるように設定します。


[関連] B コマンド (->§7-4)

I コマンド (->§7-5)


§2-16 SSG音程 拡張/ノーマル選択

#Detune


[書式1] #Detune Extend

[書式2] #Detune Normal


SSGのDetune/LFOを拡張仕様にするかノーマル仕様にするかを選択します。


Extendにした場合、SSGパート(G,H,I)の頭全てに"DX1"コマンドを指定した

のと同じになります。


ノーマル仕様の場合、DETUNE/LFOは1ずれると、音源に送る音程値も必ず

1ずれるようになります。(同じDETUNE値でも高音域になるとずれが大きくなる)


拡張仕様の場合は、高音域にいけばいくほどDETUNE値が小さくなるようにし、

同じDETUNE値ならどの音程でも同程度ずれるように補正します。


[例] #Detune Extend

[結果] SSGのデチューン値を拡張仕様に変更します。


[関連] DX コマンド (->§7-3)

D DD コマンド (->§7-1)

M MA MB コマンド(->§9-1)


§2-17 ソフトウエアLFO速度 拡張/ノーマル選択

#LFOSpeed


[書式1] #LFOSpeed Extend

[書式2] #LFOSpeed Normal


ソフトウエアLFOの速度をテンポ依存しない拡張仕様にするかどうかを

選択します。


Extendにした場合、FM,SSG,ADPCMパート(A〜J)の頭全てに "MXA1 MXB1"

とコマンドを指定したのと同じになります。


2つあるLFOのうち、片方のみ変更したいといった場合は、MXコマンドを

使用して下さい。


[例] #LFOSpeed Extend

[結果] ソフトウエアLFOの速度をテンポに依存させない拡張仕様にします。


[関連] MX MXA MXB コマンド (->§9-5)

M MA MB コマンド (->§9-1)


§2-18 ソフトウエアエンベロープ速度 拡張/ノーマル選択

#EnvelopeSpeed


[書式1] #EnvelopeSpeed Extend

[書式2] #EnvelopeSpeed Normal


SSG/PCMのソフトウエアエンベロープの速度をテンポ依存しない拡張仕様に

するかどうかを選択します。


Extendにした場合、SSG,PCMパート(G〜J)の頭全てに "EX1"コマンドを指定

したのと同じになります。


[例] #EnvelopeSpeed Extend

[結果] ソフトウエアエンベロープの速度をテンポに依存させない拡張仕様にします。


[関連] EX コマンド (->§8-2)

E コマンド (->§8-1)


§2-19 PCM音量値 拡張/ノーマル選択

#PCMVolume


[書式1] #PCMVolume Extend

[書式2] #PCMVolume Normal


PCMパートの"v"値->"V"値の変換方法を、

Normal: V = v×16

Extend: V = v×v

のどちらにするかを選択します。


PMDB2,PMDVAでは Extend、PMD86では Normalにすると、"v"値での音量カーブ

が、ほぼ直線に近くなるようです。


[例] #PCMVolume Extend

[結果] PCMパートの "v"値->"V"値変換方法を、 V=v×v とします。


[関連] v コマンド (->§5-1)

V コマンド (->§5-2)


§2-20 FM音源3チャネル目のパート拡張

#FM3Extend


[書式] #FM3Extend パート記号1[パート記号2[パート記号3]]]


[記号] LMNOPQSTUVWXYZabcdefghijklmnopqrstuvwxyz のうちのいずれか


FM音源3 のパートを、指定したパート記号で拡張します。

最大3ch分設定可能です。


FM音源3チャネル目は、独立して最大4つまでのパートを演奏する事が

可能ですが、デフォルトでは PMD/PMDVA1 を除き、1パートしか定義されて

いませんので、このコマンドで新たにパート記号を定義します。


PMD/PMDVA1 では、D E F パートがFM3chの拡張パートとしてデフォルトで

定義されていますが、このコマンドはそれを変更します。


[例] #FM3Extend XYZ

[結果] パート X,Y,Z を新規に拡張し、FM音源3 パートとします。

PMD/PMDVA1 の場合は、パート名 D,E,Fを X,Y,Zに変更します。


[関連] パート記号と音源の対応(->§1-1-3)


§2-21 MMLファイルの挿入

#Include


[書式] #Include ファイル名


MMLの#Include行〜次の行の間にMMLファイルを読み込んで追加します。

拡張子は省略出来ません。


デフォルトの #命令、@音色、!変数などを定義したMMLを外部から読み込む

と非常に便利です。ただし、MMLの長さ制限(61KB)には充分注意して下さい。


INCLUDEファイル中にINCLUDEファイルを読み込む(ネストする)事も可能です。


[例] #Include default.mml

[結果] その場に default.mmlを読み込んで挿入する。


§2-22 音源別音量ダウン設定

#Volumedown


[書式] #Volumedown [F[S[P[R]]]][±]数値[,[F[S[P[R]]]][±]数値,]・・・・


[範囲] [±がない場合] 0〜255

[±がある場合] -128〜+127


音源別音量ダウン値を変更します。


F がFM音源、

S がSSG音源、

P がPCM音源、

R がリズム音源をそれぞれ表します。


設定された場合、Gパートの頭に自動的に DF,DS,DP,DRコマンドが

発行される形になります。


数値の前に + - が付いた場合は、PMDの/DF,/DS,/DP,/DRオプションの値から

相対的に変化されます。

+で音量が下がる点に注意して下さい。


[注意] ここで設定される音量ダウン値は、その曲のみに有効の局所的な値であり、

再度演奏開始する際に、PMDの/DF,/DS,/DP,/DRオプションで指定した値が

再設定され、元に戻ります。


[例1]

  1. Volumedown FR+16,P+128,S+32

[結果] FMとリズムを16、PCMを128、SSGを32、PMDのオプション設定

から相対的に加算され(音量を下げ)ます。


[例2]

  1. Volumedown F-16

[結果] FMを16、PMDのオプション設定から相対的に減算され(音量を上げ)ます。


[例2]

  1. Volumedown P96

[結果] PCMの音量ダウン値をPMDのオプション設定に関らず、96とします。


[関連] DF DS DP DR コマンド (->§15-4)

PMD /DF /DS /DP /DR オプション (->PMD.DOC)


§2-23 PCMパートの仕様設定

#ADPCM


[書式1] #ADPCM on

[書式2] #ADPCM off


PMD86で演奏した際にのみ有効で、


onの場合 ADPCMに音量・ループを合わせる (/s オプションあり)

offの場合 ADPCMに音量・ループを合わせない (/s オプション無し)


とします。


/sオプションの状態に関らず、状態をそのように変更します。


その曲のみに有効な、局所的な設定で、他の曲を演奏する際には

元に戻ります。


このコマンドが使用されると、Jパートの頭に、A コマンドを発行します。


[例]

  1. ADPCM on

[結果] その曲をPMD86で演奏した場合、PCMパートをADPCMと同じ仕様で演奏します。


[関連] A コマンド (->§15-10)


§2-24 演奏開始小節指定

#Jump


[書式1] #Jump 小節番号


[範囲] 0〜65535


MCH.EXE または MC.EXEの /P,/S オプションで演奏を開始する場合のみに

有効で、演奏を開始する小節番号を指定します。


作成される .M ファイルには影響を及ぼさないので、PMP.COM 等で再演奏

させた場合は、曲の頭から再生されますので注意して下さい。


また、CPUが遅い機種で、大きな小節番号を指定した場合は、演奏開始まで

しばらく時間がかかる事があります。


[例]

  1. Jump 16

[結果] MCH.EXE または MC.EXEの /P,/S オプションで演奏を開始した場合、

16小節目から再生が開始されます。


§2-25 PPZ8用パート拡張

#PPZExtend


[書式] #PPZExtend パート記号1[パート記号2[パート記号3]・・・・(8つまで)]]


[記号] LMNOPQSTUVWXYZabcdefghijklmnopqrstuvwxyz のうちのいずれか


PPZ8用のパートを、指定したパート記号で拡張します。

最大8ch分設定可能です。


[例] #PPZExtend abcdefgh

[結果] パート a,b,c,d,e,f,g,h を新規に拡張し、PPZ8 パートとします。


[関連] パート記号と音源の対応(->§1-1-3)


§2-26 使用PPZ用PCMファイル名指定

#PPZFile


[書式] #PPZFile ファイル名[.PVI/.PZI][,ファイル名[.PVI/.PZI]]


PPZ拡張パートで使用するPCM(.PVI/.PZI)ファイル名を定義します。

拡張子が省略された場合、通常は読み込み時にPZI->PVIの順で検索されます。


ファイルは2つまで定義できます。

2つ目に定義したPCMファイルは、音色番号に 128が加算され、

@128〜@255 に定義されます。


ファイル名はTAB/ESC以外のCTRLコードが来るまで定義されます。

(通常は行の終わり(CR)迄です。)


[注意1] 後ろに ; をつけてコメント等は記せません。


[注意2] 2つ目のPCMファイルを定義する際に、カンマ [,] 記号の左右に

スペース、タブなどは入れられません。


[注意3] MC.EXEを使用する際は、音色データを曲データ中に定義するように(->MC.DOC)

しないと、MC.EXEの /P または /S オプションで即演奏した場合にしか

ファイルが読み込まれません。


[例] #PPZFile SAMPLE.PZI

[結果] #PPZExtendで指定したパートのPCM音色に SAMPLE.PZI を使用します。


[例2] #PPZFile BASEPCM.PZI,EXTEND.PVI

[結果] #PPZExtendで指定したパートのPCM音色に BASEPCM.PZIを@0〜@127、

EXTEND.PVIを@128〜@255として使用します。


[失敗例]#PPZFile BASEPCM.PZI , EXTEND.PVI

[結果] カンマ記号の左右にはスペースは入れられません。

PCM読み込み時にエラーとなります。


§2-27 全体転調設定

#Transpose


[書式] #Transpose 数値


[範囲] -128〜+127


曲全体の転調値を設定します。


指定した場合、Rhythm以外の全パートの頭全てに "_M"コマンドを指定

したのと同じになります。


リズムに使用しているトラック等で、転調したくないパートがある場合は、

当該トラック先頭に "_M0" コマンドを発行してキャンセルしてください。


[例] #Transpose 1

[結果] 曲全体を半音上に上げます。


[関連] _M コマンド (->§4-16)


§3 [[ 定義コマンド ]]



FM音源の音色及び、MML変数を定義するコマンドです。


1PASS目に処理されるため、MMLファイルのどの位置にあっても構いません。


ただし、重複指定された場合は、後の行のものが有効となります。


§3-1 FM音色定義

@


[書式1] @ 音色番号 ALG FB

AR DR SR RR SL TL KS ML DT AMS

AR DR SR RR SL TL KS ML DT AMS

AR DR SR RR SL TL KS ML DT AMS

AR DR SR RR SL TL KS ML DT AMS

[書式2] @ 音色番号 ALG FB

AR DR SR RR SL TL KS ML DT DT2 AMS

AR DR SR RR SL TL KS ML DT DT2 AMS

AR DR SR RR SL TL KS ML DT DT2 AMS

AR DR SR RR SL TL KS ML DT DT2 AMS

[書式3] @ 音色番号 ALG FB

AR DR RR SL TL KSL ML KSR EGT VIB AM

AR DR RR SL TL KSL ML KSR EGT VIB AM


[備考] 任意の位置に、= 音色名 を表記する事が出来る。


[範囲] [書式1および2] ALG ・・・・ 0〜7

FB ・・・・ 0〜7

AR ・・・・ 0〜31

DR ・・・・ 0〜31

SR ・・・・ 0〜31

RR ・・・・ 0〜15

SL ・・・・ 0〜15

TL ・・・・ 0〜127

KS ・・・・ 0〜3

ML ・・・・ 0〜15

DT ・・・・ -3〜3 または 0〜7

AMS ・・・・ 0〜1

[書式2] DT2 ・・・・ 0〜3

[書式3] ALG ・・・・ 0〜1

FB ・・・・ 0〜7

AR ・・・・ 0〜15

DR ・・・・ 0〜15

RR ・・・・ 0〜15

SL ・・・・ 0〜15

TL ・・・・ 0〜63

KSL ・・・・ 0〜3

ML ・・・・ 0〜15

KSR ・・・・ 0〜1

EGT ・・・・ 0〜1

VIB ・・・・ 0〜1

AM ・・・・ 0〜1


FM音源の音色を定義するコマンドです。


@ 記号は必ず行頭に表記し、数値と数値の間には、1つ以上の

SPACE、TAB、カンマ、改行のいずれかが必要です。

ただし、音色名の区切りはTABと改行のみです。


[書式1] は、 MC.EXEに /M オプションを付けていないか、

#DT2Flag off の状態での書式。

[書式2] は、 MC.EXEに /M オプションを付けているか、

#DT2Flag on の状態での書式。

[書式3] は、 MC.EXEに /L オプションを付けている状態での書式

となっています。


@ から、最後の値まで、; か = を付けずに、数字以外の文字を書くと、

エラーになります。

音色名以外の各数値の省略は出来ません。


各パラメータの意味は、本体マニュアルやFM音源マニュアルを参照して

下さい。


[注意] MC.EXEを使用する際は、音色データを曲データ中に定義するように(->MC.DOC)

しないと、定義されていても無効となります。


[例1]

@ 0 4 5 =falsyn?

   31  0  0  0  0  22  0  2  3   0
   18 10  0  6  0   0  0  8  3   0
   31  0  0  0  0  23  0  4 -3   0
   18 10  0  6  0   0  0  4 -3   0

[結果] 音色番号 0 に falsyn? を定義する。


[例2] MC.EXE /Mオプション指定時 または #DT2Flag on 指定時

NM AG FB Falcom Synth(?)

@ 0 4 5 =falsyn?

AR DR SR RR SL TL KS ML DT DT2 AMS
   31  0  0  0  0  22  0  2  3   0   0
   18 10  0  6  0   0  0  8  3   0   0
   31  0  0  0  0  23  0  4 -3   0   0
   18 10  0  6  0   0  0  4 -3   0   0

[結果] 音色番号 0 に falsyn? を定義する。


[例3] MC.EXE /Lオプション指定時

NM AG FB E.Bass

@ 2 0 5 =E.Bass

AR DR RR SL TL KSL ML KSR EGT VIB AM
   11  5  2  2 29   0  0   0   0   1  0
   12  8  6  1  0   0  1   1   1   1  0

[結果] 音色番号 2 に E.Bass を定義する。


[関連] @ コマンド(MML) (->§6-1)

#DT2Flag コマンド (->§2-14)

MC.EXE /N /M /L オプション (->MC.DOC)


§3-2 MML変数定義 ! [書式1] !文字列 MML文字列 [書式2] !数値 MML文字列 [文字列] 文字種・文字数は任意。先頭から半角30文字まで判別。 [範囲] 0〜255 MML変数を定義します。 文字列定義は最大256種類、数値での定義も256種類、 それぞれ独立して定義が可能です。 文字列は、先頭が数字でなければ、どんな文字でも使用出来ます。 ( !スネア 等の全角での指定も可能 ) 文字列、数値と、MML文字列の間には、必ず1つ以上のスペースまたは タブが必要です。 変数のネストも可能ですが、絶対に再帰させないで下さい。 変数をMML中で使用するのは、! コマンド(MML) です。 [注意1] 文字列の認識長は半角30文字です。それ以上の文字数を定義した場合は、 残りの文字列は無視されます。 [注意2] 再帰させて永久ループになった場合、最悪の場合暴走します。 充分注意してください。 [例1] !A cde !1 !A fga A l8 !1 b [結果] A l8 cdefgab と同等。 [例2] !BassDrum @0v12 !SnareDrum @1v14 A !BassDrum cc !SnareDrum g !BassDrum c [結果] A @0v12 cc @1v14 g @0v12 c [失敗例] !A cde !B !B cde !A A !A [結果] !Aと!Bがお互いを参照し続けるので、スタックが溢れ、最悪の場合暴走します。 [関連] ! コマンド(MML) (->§16-1)
§4 [[ MMLコマンド・音程/音長部 ]]




ここから、MML本体のコマンド群に関しての解説をします。


[ ] に囲まれたパラメータは、省略可能であることを示します。


[音源] にはそのコマンドが使用出来るパート(音源)を表記します。

それぞれ具体的に以下のパートとなります。


FM FM音源パート (98,88は A〜F 及び FM3拡張パート,68は A〜H,IBMは A〜I)

SSG SSG音源パート(G〜I)

PCM PCM音源パート(J(townsのみJ,K) 及び PPZ拡張パート)

R選択 リズム選択パート(K)

R定義 リズム定義パート(R)

FM(OPNA)FM音源パート (PMDB2/VA/86 の A〜F 及び FM3拡張パート 専用)

FM(OPM) FM音源パート (PMD.X A〜H 専用)

FM(ch3) FM音源パート (PMD.COM C〜F , PMDB2/VA/86 C 及び FM3拡張パート 専用)

PCM(AD) PCM音源パート(PMDB2/VA の J パート専用)

PCM(86) PCM音源パート(PMD86 の J パート専用)

PCM(68) PCM音源パート(PMD.X の J パート専用)

PCM(PPZ)PCM音源パート(PPZ拡張パート専用)


このセクションでは、音程・音長に関するコマンドをまとめています。


K (リズム選択)パートではこれらのコマンドは、ほぼ使用できません。


§4-1 音程・音長指定

c/d/e/f/g/a/b/x


[書式1] c/d/e/f/g/a/b [=] [+/-] [音長] [.]

[書式2] x [音長] [.]


[範囲] 1〜255のうち、全音符長の約数となる値(->§2-11)または % をつけたclock値


[音源] FM / SSG / PCM / R定義


1つの音符を表します。それぞれ、

c = ド

d = レ

e = ミ

f = ファ

g = ソ

a = ラ

b = シ

に対応しています。


また、音符データに x を用いると、直前に演奏した音が採用されます。

(例: c4x8 の場合は c4c8 と演奏される)


オクターブの上下は、o < > の各コマンドで行います。

ただし、音程 x は直前の音符のオクターブがそのまま採用されます。


R パートと、PMD.Xでの J パート(PCM)では、c〜b,xは、どれを

指定しても同じ音になります。


_{ } コマンド(->§4-15)で 移調指定がされていた場合は、音程c〜bに、

自動的に移調処理がされますが、=記号(ナチュラル)をつければ回避されます。


+記号(シャープ)を付けた場合、半音上の音、

-記号(フラット)を付けた場合、半音下の音になります。

+記号と-記号は、2つ以上指定する事も可能です。(ダブルフラット等)

ただし、音程 x には付けられません。


音長を省略した場合は、l コマンドで指定された音長となります。


.記号(符点)を付けた場合は、音長が1.5倍されます。

2つ以上付けた場合は、さらに1.5倍ずつ、と音長が長くなります。

[例1] c2..

[結果] c2&c4&c8


3,6連符は3,6,12,24,48,96分音符に計算して使用して下さい。

[例2] c12d12e12

[結果] 8分3連符の cde ( N88Basic での {CDE}4 と同等 )

[補足] 12分の1を3つ足すと、4分の1になりますので、12分音符は4分音符を

3つに分けた音(=8分3連符)になります。


5,7連符等は、割り切れないので、%で細かく指定します。

[例3] c%4 d%5 e%5 f%5 g%5

[結果] 5連符で全体で4分音符長となる cdefg ( N88Basicでの {CDEFG}4 と同等 )

[補足] 4分音符は、C96(全音符長=96)の場合、内部ステップが 96÷4 = 24に

なりますので、24を5で割ると、4余り4になります。

よって、4つの音を %5 の音長にし、1つの音を %4 の音長にすれば、

大体5連符に聞こえる事になります。


W S コマンドを使用している時は、自動的にソフトウエアエコーまたは

装飾音符が掛かるように加工・展開されます。


[注意1] PMD.Xでは、オクターブ1の c,c+,d は d+ と演奏されます。


[注意2] PMDB2/VAの PCM パートでは、オクターブ6 以上は、オクターブ6として

演奏されます。


[注意3] 音階記号(c/d/e/f/g/a/b)から符点(.)までは、間を開けずに表記して

下さい。特に = + -の各記号は、間があくと、各 l= l+ l-コマンドと

認識されますので注意して下さい。


[注意4] 内部clock 255 を越える音長は、場合によっては指定出来ない事があります。

[失敗例] C192 W24,-2 c1.

[結果] 音長オーバーエラー。

[補足] W,Sコマンド実行中には 255 clockを越える音符は指定出来ません。


[注意5] R パートで 音程 x を指定した場合は、無条件に音符データと取り、

直前が休符であっても、休符とはみなされません。


[関連] o コマンド (->§4-4)

> < コマンド (->§4-5)

_{ } コマンド (->§4-15)

l コマンド (->§4-8)

W コマンド (->§12-2)

S コマンド (->§12-1)


§4-2 休符・音長指定

r


[書式] r [音長] [.]


[範囲] 1〜255のうち、全音符長の約数となる値(->§2-11)または % をつけたclock値


[音源] FM / SSG / PCM / R定義


1つの休符を表します。


音長を省略した場合は、l コマンドで指定した音長になります。


.記号(符点)を付けた場合は、音長が1.5倍されます。

2つ以上付けた場合は、さらに1.5倍ずつ、と音長が長くなります。


[例] r4.

[結果] 符点4分休符。


[関連] l コマンド (->§4-8)


§4-3 ポルタメント指定

{ }


[書式] {音程1 音程2} [音長] [.]


[範囲] 1〜255のうち、全音符長の約数となる値(->§2-11)または % をつけたclock値


[音源] FM / SSG / PCM(AD,PPZ)


音程1から音程2へ、音長分の長さで滑らかに繋げる音を指定します。


音長・符点については、c d e f g a b rコマンドと同等です。

255stepを越える音長は指定出来ません。


{ }の中には、c d e f g a b o > < コマンドのみ指定して下さい。


R パートでは指定出来ません。


[注意1] PMD86、PMD.Xの PCMパートではポルタメントは掛かりません。

指定されていた場合、音程1は無視されます。( {cd}2の場合 d2 と同等 )


[注意2] このコマンドには、W S コマンドの効果は反映されません。


[例] {cg}4

[結果] 4分音符長の、ドからソまで上がるポルタメント。


[関連] W コマンド (->§12-2)

S コマンド (->§12-1)


§4-4 オクターブ指定

o


[書式] o 数値


[範囲] 1〜8

1〜6 (PMDB2での PCMパート)

1〜5 (PMD.Xでの PCMパート)


[音源] FM / SSG / PCM


オクターブを指定します。


FM音源/PSGは 1〜8 、88/VA/98でのPCMでは 1〜6 が指定出来ます。


X68000版のPCMパートでは、1〜5が指定でき、オクターブ単位で大雑把に

音程が変わります。


デフォルトは 4 です。


[例] o6

[結果] オクターブを 6 にする。


§4-5 オクターブアップ・ダウン

> <


[書式1] >

[書式2] <


[音源] FM / SSG / PCM


> の場合、オクターブを1つ上げます。

< の場合、オクターブを1つ下げます。


X #Octave コマンドで、機能の反転が可能です。


[例1] o4 c8>c8

[結果] オクターブ4の8分音符のドの次に、オクターブ5の8分音符のドが鳴る。


[注意] ループ中に指定し、ループの頭に戻った時に、オクターブが違う様に

指定しても、元に戻ってしまいます。

そのような指定をしたい場合は、__コマンドを使用して下さい。

[例2] o4[cdefgab>]2cde

[結果] o4cdefgab o4cdefgab o5cde


[例3] o4[cdefgab__12]2__-24cde

[結果] o4cdefgab o5cdefgab o4cde


[関連] X コマンド (->§4-6)

#Octave コマンド (->§2-12)

__ コマンド (->§4-14)


§4-6 オクターブ上下記号の反転

X


[書式] X


[音源] FM / SSG / PCM


> と < コマンドの機能を反転します。#Octave コマンドと同等ですが、

このコマンドでは局所で一時的に変更が可能です。


[例] c>c< X d<d> X

[結果] c>c< d>d< と同等。


[注意1] 一時的に変更した場合は、必ず元に戻して下さい。

戻さないと、次のパートからすべてのパートが影響を受けます。


[注意2] このコマンドでMML全体を変更したい場合は、Aパートの頭に記述する

必要があります。その場合は #Octave コマンドと全く同じです。


[関連] #Octave コマンド (->§2-12)

> < コマンド (->§4-5)


§4-7 全体オクターブ変化

o+ o-


[書式1] o+ 数値

[書式2] o- 数値


[範囲] -7〜+7


[音源] FM / SSG / PCM


パートのそこからの o コマンドの指定値を、すべて指定数値分増減させます。


また、同時に現在のオクターブも指定数値分増減させます。

( o コマンドを発行します)


[例]

G o-1

H o-0

GH o4 cdefg

[結果] cdefg は、Gパートは o3、Hパートは o4 で演奏される。

(オクターブ重ね)


§4-8 デフォルト音長指定

l


[書式] l[%]音長[.]


[範囲] 1〜255のうち、全音符長の約数となる値(->§2-11)または % をつけたclock値


[音源] FM / SSG / PCM / R選択 / R定義


c d e f g a b r { } l= l+ l- l^ コマンドで、音長を省略した場合に

採用される音長を指定します。デフォルトは 4 です。


[例1] l8cdefg

[結果] cdefgを 8分音符長で演奏します。


[注意] リズム選択( K )パートで使用した場合は、最後に指定した値のみが、

Rパート先頭からのデフォルト値となります。


リズム定義( R )パートで使用した場合は、以降のRパートに影響が出ます。

例えば、R0で指定した場合は、R1でもその影響を受けるという事です。


[例2]

K l8R0l2

R0 @1c@2c

[結果] SSGリズムのBD、SDは2分音符長となります。(l8は無視されます。)


[関連] c〜b コマンド (->§4-1)

r コマンド (->§4-2)

{ } コマンド (->§4-3)

l= l+ l- l^ コマンド (->§4-9)


§4-9 直前に指定した音長の加工 l= l+ l- l^ [書式1] [l] [=] [音長] [.] [書式2] [l] + 音長 [.] [書式3] [l] - 音長 [.] [書式4] [l] ^ 数値 [範囲] [音長] 1〜255のうち、全音符長の約数となる値(->§2-11) または % をつけたclock値 [数値] 1〜255 [音源] FM / SSG / PCM / R定義 直前の音長を変化させます。 l= の場合は 指定した音長に 変更 l+ の場合は 指定した音長を 加算 l- の場合は 指定した音長を 減算 l^ の場合は 指定した数値を 乗算 します。 l記号、=記号は省略可能です。 .記号(符点)を付けた場合は、音長が1.5倍されます。 2つ以上付けた場合は、さらに1.5倍ずつ、と音長が長くなります。 ただし、255stepを越える符点は使用出来ません。 l= コマンドで、符点のみ指定した場合は、直前の音長指定に符点を付けます。 音長・符点ともに省略した場合は、l コマンドで指定した音長になります。 l+ コマンドは、& コマンドの直後に音長を表記した場合と同じ動作をします。 (->§4-10 & コマンド) l= コマンドは、通常、MML変数と組み合わせて使用します。 [例1] !b @0c ;Bass Drum !s @1c ;Snare Drum J [!b4!s4!b8!b8!s4]2 [結果] J [ @0c4 @1c4 @0c8 @0c8 @1c4 ]2 l- コマンドは、ディレイパートを元に戻す時に使用すると便利です。 [例2] G l4v10 cdefg ab>c< H l4v07r8cdefg l-8 v10fg a [結果] 最後の3つの音符では G と H パートの発音タイミング・音量が揃います。 [例3] a8l=4. a8=4. a8 4. a8l+4 a4+8 a4&8 a2l-8 a2-8 a8l^3 a16^6 a4. [結果] すべてラの符点4分音符になります。 [注意1] l=、l^ コマンドは、直前に指定した音符長が圧縮又は加工されている場合は エラーになります。 また、l- コマンドで直前に指定した音符長より長い音長が指定された場合も エラーとなります。 × c2&c2 =4 (直前の音符が c1 と圧縮されるため) × W24,-2 c2 =4 (直前の音符が c4(^2c4 と加工されるため) × c2&c2^4 (直前の音符が c1 と圧縮されるため) × W24,-2 c2^4 (直前の音符が c4(^2c4 と加工されるため) × C192 c1.^4 (直前の音符が c%255&c%33 と展開されるため) × c4-2 × W24,-2 c1-2 (c1が c4(^2c4(^4c4(^6c4 と加工されるため) [注意2] l+コマンドで追加した音符長分は W S コマンドの影響を受けません。 [注意3] 音程記号 c d e f g a b のすぐ後に = + - があった場合はナチュラル・ シャープ・フラット記号と判断されます。その場合はスペースを開けるか、 l記号を表記して下さい。 [例4] c=4 cのナチュラルの四分音符 c =4 cの四分音符 ( c4と同等 ) cl=4 cの四分音符 ( c4と同等 ) l2c-8 cのフラットの8分音符 l2c -8 cの符点4分音符 l2cl-8 cの符点4分音符 l4c+8 cのシャープの8分音符 l4c +8 cの符点4分音符 l4cl+8 cの符点4分音符 [関連] & コマンド (->§4-10)
§4-10 タイ・スラーの指定

& &&


[書式1] &

[書式2] &&

[書式3] & [音長][.]

[書式4] && [音長][.]


[音源] FM / SSG / PCM / R定義


前後の音をタイ(&)またはスラー(&&)として繋げます。


2つの違いは、タイの場合は、直前の音符をkeyoffしませんが、スラーの

場合はkeyoffされますので、Keyon時のアタックが解る(=&&)か解らない(=&)か

の違いです。


必ず、音程コマンドの直後に指定して下さい。


&の直後に音長を指定すると、l+ コマンドと同等の扱いとなり、

直前の音長に指定した音長を加算します。


[例1] a8&2

a8l+2

a8&a2

[結果] すべてラの 8分音符+2分音符。


&&の直後に音長を指定すると、コマンド直後に直前の音符と同じ音程の

音符が、指定された音長で発行されます。


[例2] a8&&2

[結果] a8&&a2


[注意1] W,Sコマンド実行中は、加工後の最後の音量/音程の音のみ変化します。また、

&コマンド直後の音符はW,Sコマンドの影響を受けません。


[注意2] リズム定義(R)パートでは、書式3 のみが有効です。

書式1,2,4は使用出来ません。


[例3]

R0 @1 c4&c4

[結果] エラーとなります。c2 とするか、c4 r4 として下さい。

SSGリズムパートは、休符が来ても音は切れません。


[関連] l+ コマンド (->§4-9)


§4-11 全音符長の設定

C


[書式] C 数値


[範囲] 1〜255


[音源] FM / SSG / PCM / R選択 / R定義


全音符の長さを決定します。#Zenlenコマンドと同等です。


いずれかのパートの頭に設定すれば、すべてのパートに有効となります。


指定するすべての音符長は、この数値の約数でなくてはなりません。


デフォルトは 96 ですので、使用出来る音符長は、

1,2,3,4,6,8,12,16,24,32,48,96

になります。


64分音符まで指定したい場合は、C192等の指定をしてください。


[注意1] 変更した場合、テンポの値が、1分間にどの音符がテンポ指定値になるかが

変化します。


[注意2] 指定した時点で、l コマンドの値が初期値の4に戻ります。


[例] C192

[結果] 全音符を内部クロック 192 とし、使用出来る音長を

1,2,3,4,6,8,12,16,24,32,48,64,96,192 の14種類に増やします。

#Tempo 及び t コマンドの指定値は 4分音符= の値になります。


[関連] #Zenlen コマンド (->§2-11)

#Tempo コマンド (->§2-10)

t コマンド (->§11-1)

l コマンド (->§4-8)


§4-12 音の切り方の指定1

Q


[書式] Q [%] 数値


[範囲] 0〜8 ( %が付いた場合 0〜255 )


[音源] FM / SSG / PCM


音の切り方を指定します。


N88BasicのMMLと同様、1/8単位で、0〜8までの指定が可能です。

%を指定すると、1/256単位で、0〜255までの細かい指定が可能です。


0を指定すると、最後まで音を切りません。

デフォルトは 0 です。


実際は、このコマンドで指定した、音を切る位置から、q コマンドで指定した

数値を引いたタイミングでKeyoffされます。


[例] Q4c4

[結果] 音を音長の半分の位置で切ります。


[関連] q コマンド (->§4-13)


§4-13 音の切り方の指定2

q


[書式1] q [数値1][-[数値2]] [,数値3]

[書式2] q [l音長[.]][-[l音長]] [,l音長[.]]


[範囲] [数値1] 0〜255

[数値2] 0〜255、但し数値1との差は +127〜-127以内となること

[数値3] 0〜255

[音長] 1〜255のうち、全音符長の約数となる値


[音源] FM / SSG / PCM


音の切り方を指定します。


ここからの音は、


1) 数値2が指定されていない場合

[数値1の時間分]、


2) 数値2が指定されている場合

[数値1〜数値2の範囲内で ランダム に]、

‾‾‾‾‾‾‾‾

後ろから切った音になります。


但し、切った音長が数値3の指定時間よりも短くなった場合は、

数値3で指定した時間が実際に発音される長さとなります。

(数値3 = 最低でもこの長さは発音して欲しい音長、と認識して下さい)


数値は、lを付加した場合は音長、付加しない場合は内部クロックの

値で設定します。


数値1で0を指定すると、最後まで音を切りません。

デフォルトは 0 です。


数値2で数値1と同じ値を指定、または省略すると、切る時間は数値1の値

固定となります。デフォルトは 固定 です。


数値3で0を指定すると、最低保証音長は1となります。

デフォルトは 0 です。


数値1〜3はそれぞれ省略出来ます。

但し、数値2を指定する場合は数値1は必ず必要です。


省略した場合は、数値1,3については値は指示されずに前の値を保留します。

数値3のみ指定する場合は q,4 というように指定して下さい。


実際は、Q コマンドで指定した、音を切る位置から、このコマンドで指定した

数値1〜2を引いたタイミング、それが数値3のタイミングを越えていた場合は

数値3で指定されたタイミングでKeyoffされます。


[例] Q4 q2 c4

[結果] 4分音符の内部clockは C96では 24 ですから、

24の半分、12から、2引いた値の 10 clock目で keyoff するようになります。


[例2] ql8,l16 c4 c8

[結果] c4の方は実際には c8 r8 相当となり、

c8の方は最低発音長が有効となり、実際には c16 r16 相当となります。


[例3] q2-4 c4 c4 c4 c4

[結果] 発音毎に q2,q3,q4 の状態のどれかをランダムに選択します。


[補足] 音量/音程のランダム化についてはLFOのランダム波で行えます。(→§9-1-4)

(例) M0,255,1,6MW3*2


[関連] Q コマンド (->§4-12)


§4-14 転調指定

_ __


[書式1] _ +数値

[書式2] _ -数値

[書式3] __ +数値

[書式4] __ -数値


[範囲] -128〜+127


[音源] FM / SSG / PCM


そこからの音程コマンドをすべて、指定数値分、半音単位で変化させます。


_は絶対的な指定、__は相対的な指定になります。


転調する際はもちろん、gliss等に便利なコマンドです。


_M コマンド(→§4-16)が指定されている場合は、マスター転調値と

ここで指定される転調値が加算されて設定されます。


[例] _-2[e__+1]8_0

[結果] dd+eff+gg+a


[関連] _M コマンド (->§4-16)


§4-15 移調設定

_{ }


[書式1] _{+ 音程1 音程2・・・}

[書式2] _{- 音程1 音程2・・・}

[書式3] _{= 音程1 音程2・・・}


[音源] FM / SSG / PCM


移調の設定をします。


指定したパートで、このコマンドを指定した後は、指定した音程に自動的に

シャープ、フラット及びナチュラルを付加します。


[例1] _{-eab}

[結果] ミとラとシにフラットを自動付加する。(変ホ長調、ハ短調)


[例2] _{=eab}

[結果] 例1の設定を元に戻す。


§4-16 マスター転調値設定

_M


[書式1] _M +数値

[書式2] _M -数値


[範囲] -128〜+127


[音源] FM / SSG / PCM


パート毎でマスター転調値を設定します。


このコマンドが認識されると、即時転調設定がされ、さらに

これより後の _ コマンドによる転調値に、指定した数値が

増減されるように設定されます。


[関連] _ __ コマンド (->§4-14)

#Transpose コマンド (->§2-27)


§5 [[ MMLコマンド・音量部 ]]



このセクションでは、音量に関するコマンドをまとめています。


§5-1 音量指定1

v


[書式] v 音量値


[範囲] 0〜15 (SSG,SSGリズム音源パート)

0〜16 (FM,PCM音源パート)


[音源] FM / SSG / PCM(AD,86,PPZ) / R選択 / R定義


大雑把に音量を指定します。


SSGリズム(K/R)パートでは、PPSDRVが常駐していない場合は無効となります。


[参考] FM音源の場合、v0〜v16までが、以下のようなVコマンド値に変換されます。

v | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16|

V | 85| 87| 90| 93| 95| 98|101|103|106|109|111|114|117|119|122|125|127|


PCM音源の場合、以下のように変換されます。

V(2) は #PCMVolume が Extend の場合です。

v | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16|

V(1) | 0| 16| 32| 48| 64| 80| 96|112|128|144|160|176|192|208|224|240|255|

V(2) | 0| 1| 4| 9| 16| 25| 36| 49| 64| 81|100|121|144|169|196|225|255|


[例] v13

[結果] 音量を 13 にします。


[関連] #PCMVolume コマンド (->§2-19)

V コマンド (->§5-2)


§5-2 音量指定2

V


[書式] V 音量値


[音源] FM / SSG / PCM(AD,86,PPZ) / R選択 / R定義


[範囲] 0〜127 (FM音源パート)

0〜255 (PCM音源パート)

0〜15 (SSG音源,SSGリズム,PPZパート)


細かく音量を指定します。


K/Rパートでは、PPSDRVが常駐していない場合は無効となります。


[例] V120

[結果] 音量を 120 にします。


§5-3 全体音量変化1

v+ v-


[書式1] v+ 数値

[書式2] v- 数値


[範囲] + 0〜127

- 0〜128


[音源] FM / SSG / PCM(AD,86,PPZ) / R選択 / R定義


パートのそこからの音量指定コマンドの音量を、すべて指定数値分

増減させます。


また、同時に現在の音量も指定数値分増減させます。

( V コマンドを発行します)


数値は、Vコマンドレベル(細かい値)で指定します。


全体の音量を変えたい時に便利です。


[例1] v-8

[結果] そのパートのそこからの音量コマンドの音量値から、毎回 8 を減算します。


[注意] 同じパートで2度使用した場合は、2度目を指定した時点で1度目の指定は

無効となります。(相対変化はしません。)


[例2] v-4 V100 c4 v-6 V100 d4

[結果] c4 は 音量 V96、d4 は 音量 V94 (V90ではない) となります。


[関連] V コマンド (->§5-2)


§5-3 全体音量変化2

v) v(


[書式1] v) 数値

[書式2] v( 数値


[範囲] 0〜16


[音源] FM / SSG / PCM(AD,86,PPZ)


パートのそこからの音量指定コマンドの音量を、すべて指定数値分

増減させます。


音量変化1と違う点は、


1) 指定値が v コマンドレベル(おおまかな値)である。

2) v コマンドにのみ効果を発揮します。( V コマンドは変わりません )

3) 指定時に現在の音量を指定数値分増減しません。

( 次の v コマンドからはじめて有効となります )


の3つです。


[例1] v(2

[結果] そのパートのそこからの v コマンドの指定値から、毎回 2 を減算します。


[注意] 同じパートで2度使用した場合は、2度目を指定した時点で1度目の指定は

無効となります。(相対変化はしません。)


[関連] v コマンド (->§5-1)


§5-5 音量相対変化

) (


[書式1] ) [^] [%] [数値]

[書式2] ( [^] [%] [数値]


[範囲] 0〜255


[音源] FM / SSG / PCM(AD,86,PPZ) / R選択 / R定義


音量を指定数値分、相対的に変化させます。

) の場合は加算、 ( の場合は減算されます。


数値が省略された場合、1 となります。


^記号が追加された場合、変化させる音符を次の1つだけに制限します。

(アクセント)


%記号が追加された場合は細かく(Vコマンド相当)、

そうでない場合は大雑把に(vコマンド相当)変化します。


[注意] 音量値は、% が指定されていなかった場合、単純に、

FM 音源では 指定数値の 4倍

PCM音源では 指定数値の16倍

変化されるようになっています。


ですから、FM音源部と、#PCMVolumeがExtend状態のPCM音源では、

変化後期待した音量値よりずれが生じます。

[例1] v12 c ) c (FM音源部)

[結果] V117 c V121 c (v13より大きくなる)

[例2] v13 c ( c (FM音源部)

[結果] V119 c V115 c (v12より小さくなる)


[関連] V コマンド (->§5-2)

v コマンド (->§5-1)


§6 [[ MMLコマンド・音色指定部 ]]




このセクションでは、音色番号指定及び、音色定義に関するコマンド解説を

まとめています。



§6-1 音色番号指定

@


[書式1] @[@] 音色番号

[書式2] @[@] 音色番号[,数値1[,数値2[,数値3]]]


[範囲] 音色番号 FM,PCM 0〜255

音色番号 SSG 0〜9

音色番号 SSGリズム 0〜16383

数値1 PCM -32768〜+32767

数値2 PCM -32768〜+32767

数値3 PCM -32768〜+32767


[音源] FM / SSG / PCM / R定義


以後、指定された音色番号の音色を使用するように設定します。

@@ と表記された場合は、音色番号に128が加算されます。

(2つ目のPPZFile音色選択用の便宜)


§6-1-1 音色番号指定/FM音源パートの場合


@ 音色番号 で使用する音色を指示します。


[例] @1 cde @2 fga

[結果] 音色番号1 の音色で ドレミ、音色番号2 の音色で ファソラ、を演奏します。


[注意] s コマンドで スロットをマスクしてある場合、そのパートでは

指定されたスロットにしか音色は定義されません。

s コマンドを使用した場合は、なるべく音色を再定義した方が安全です。


[関連] s コマンド (->§6-2)

FM音色定義(@) (->§3-1)


§6-1-2 音色番号指定/SSG音源パートの場合


@ 音色番号 で、MMLコンパイラ内部に用意してある、10種類のSSGソフトウエア

エンベロープからセレクトして、E コマンドとして展開されます。


展開される内容は以下の通りです。

@0 E0,0,0,0 標準

@1 E2,-1,0,1 Synth type 1

@2 E2,-2,0,1 Synth type 2

@3 E2,-2,0,8 Synth type 3

@4 E2,-1,24,1 Piano type 1

@5 E2,-2,24,1 Piano type 2

@6 E2,-2,4,1 Glocken/Malimba type

@7 E2,1,0,1 Strings Type

@8 E1,2,0,1 Brass type 1

@9 E1,2,24,1 Brass type 2

@10 以降は指定しないで下さい。


[例] @6v10l8 cegb>c<gec

[結果] 打楽器タイプのソフトウエアエンベロープでCM7のアルペジオを演奏する。


[関連] E コマンド (->§8-1)


§6-1-3 音色番号指定/SSGリズム定義パート(PPSDRV無し)の場合


R パートでは、PMD内部に定義してあるSSGドラム音色のどれを使用するかを

選択します。


音色番号とリズム音の対応は以下の通りです。

@1 Bass Drum

@2 Snare Drum 1

@4 Low Tom

@8 Middle Tom

@16 High Tom

@32 Rim Shot

@64 Snare Drum 2

@128 Hi-Hat Close

@256 Hi-Hat Open

@512 Crash Cymbal

@1024 Ride Cymbal


PMDB2/PMDVA/PMD86では、/N オプション(->PMD.DOC)が指定されていなければ、

同時にリズム音源で適当な音が発音されるようになっています。

その場合、各値を足し算すれば、いくつか同時に鳴っているように

聞こえる風になります。(SSGリズム音は小さい番号の音色が優先されます。)


[例1] @2c

[結果] スネアドラムを鳴らします。


[例2] @129c

[結果] PMD.COMの場合は、@1のバスドラムが鳴ります。

PMDB2/VA/86の場合は、上に加え、リズム音源のハイハットが同時に鳴ります。


§6-1-4 音色番号指定/SSGリズム定義パート(PPSDRVあり)の場合


PDR,PPSDRVが常駐している場合は、SSGPCM音色を選択します。


指定される音色番号は§6-1-3のSSGリズムの場合に加え、

@2048 / @4096 / @8192 の3つが追加されます。


音色番号とリズム音色の関係は、.PPS ファイルの内容によって変化します。


PDRを #Double モードで再生している場合は、同時に2つまでの音を

加算する事によって発音させる事が可能です。


[例] @4c

[結果] .PPSの3番目に定義されているSSGPCM音を発音します。


§6-1-5 音色番号指定/PCM音源パートの場合


@ 音色番号 に加え、PMDB2/PMDVA/PMD86/PMDPPZでは、その後ろに、音色の

リピートアドレスの設定を追加する事ができます。( ->§6-1 [書式2] )


各値は、

数値1 リピート開始位置

数値2 リピート終了位置 (デフォルト0)

数値3 リリース開始位置 (デフォルト$8000) ※PMDPPZ,PMDPPZEでは無効

となっていて、-32768〜+32767までの値が指定出来ます。


各値とも、正の値(+)を指定した場合、音色開始アドレスから加算、

負の値(-)を指定した場合、音色終了アドレスから減算

されます。


数値1が無指定の場合は、リピート設定されません。(ワンショットPCM)


数値2が0or無指定の場合は、リピート開始位置〜音色終了アドレス でのloopに

なります。


数値3が$8000or無指定の場合は、keyoffされても、

リピート開始位置〜リピート終了位置 のloopを保持します。


各値は、

PMD86/PMDPPZの場合 1byte単位、

PMDB2/PMDVAの場合 16byte単位で計算されます。


ただし、PMD86に/Sオプション(->PMD.DOC)を指定していた場合は、

32byte単位で計算されます。(ADPCM 16byte = PCM 32byteに対応するため)


この場合、内部で32倍しているだけなので、各数値は-1024〜+1023の範囲内で

指定して下さい。


[例] PMDB2の場合

@0の音色の大きさが4000bytesだったとすると、16byte単位で考えると

音色開始アドレス = 0 / 音色終了アドレス = 250 という値になります。

J @0,100,-50,-50 g1

の場合、以下の順に再生されます。

1) 先頭位置から、+200 (250 -|数値2|)の位置まで再生。

2) +100(数値1)から、+200(250 -|数値2|)の範囲がリピート再生。

3) keyoffされた瞬間に、+200(250 -|数値3|)〜+250までの範囲が再生されて

発声終了。


[補足] YM2608(PMDB2/PMDVA)のADPCMでリピート再生する場合、リピートする瞬間、

次のデータの電圧差予測値が 0 にクリアされてしまうようです。

これはハードの仕様のようで、どうすることもできません。


このため、リピートさせた場合、リピートした瞬間に極端に音量が小さく

なってしまう現象がしばしば起こります。


その場合は、リピートアドレスをいろいろ変化させてみて下さい。


コツとしては、まず、目的の音を鳴らしている最中にいきなり録音開始した

データを使って、リピート時に音色の頭に戻すようにすれば、リピートの際

音が小さくなる現象が出なくなります。

その場合は、音色の音量の時間的変化はソフトウエアエンベロープを使用して

表現して下さい。


さらに、PCM波形を見ながら編集できるツールをお持ちでしたら、

リピート開始位置と終了位置を、電圧±0に近い位置にし、さらに電圧変化が

おとなしい場所を選ぶようにすれば、リピートする瞬間のノイズが

軽減されるようですのでお試し下さい。


§6-2 FM音源使用スロット位置指定

s


[書式] s 数値


[範囲] 0〜15


[音源] FM


主にFM音源3chパートで使用し、演奏・定義に使用するスロット位置を

指定します。


数値は、そのパートで使用するスロットを、

slot1 が 1 ,slot2 が 2 ,slot3 が 4 ,slot4 が 8 とし、

合計した値を指定します。


FM音源3chパートは、各スロット(4つあります)が、独立した演奏をする事が

可能です。


そこで、パートを複数用意し、このコマンドで使用スロットを指定する

事によって、スロット毎に別のフレーズを演奏させる事が出来ます。


[例1] ALG4の音色を slot1,2 / slot3,4に分ける場合は、

  1. FM3Extend X

C s3・・・

X s12・・・

とする。


このコマンドを指定後は、音色指定コマンド @ (->§6-1)では、

使用しているスロットの音色パラメータのみが定義されるようになります。


例外として、FB は、slot1が使用されている場合のみ定義され、

ALGは、無条件に必ず定義されます。


よって、ALGの値さえ同じであれば、同じFM音源3chパートでもパート別で

別音色番号を指定する事もできます。


FM3音源ch以外のパートでこのコマンドを指定した場合は、単にそのスロット

だけが鳴る事になります。(スロットマスク動作)


[注意1] s3 @200cde s15 fga

としても、@200の音色はslot1,2しか定義されていませんので、

fgaの部分の音色がおかしくなります。


[注意2] FM音源3chパート(PMD.COMで#FM3Extend無指定時のC〜F、#FM3Extend指定時の

Cパートと指定したパート)の使用スロットは重ならないようにして下さい。

重なった場合の動作は保証しません。


[注意3] ALGは無条件に定義されますので、例えばALG6でslot 1,2と3と4 を分けて

演奏中に、slot1,2を使っているパートがALG4の音色に変更すると、

slot3および4の音色がおかしくなります。十分注意して下さい。

ただしFBに関しては、slot1,2でFB=7の音を使っていて、slot3と4でFB=0の音を

音色定義しても、FBは定義されませんので、slot1,2の演奏に影響は出ません。


[例2] PMD.COMの場合

nm alg fbl

@202 004 007

ar dr sr rr sl tl ks ml dt ams Trumpet *2
013 014 000 003 001 023 002 004 000 000	;slot1
019 003 000 010 000 000 001 008 000 000	;slot2
013 014 000 003 001 020 002 004 000 000	;slot3
019 003 000 010 000 000 001 004 000 000	;slot4


C s$3 ;slot1,2 only

D s$c ;slot3,4 only

CD @202v12M12,1,8,2*1

C o3l8W12,-2[[a4ga4>c4d4:c4<ba4g4]4:>c4<ab4g4]2>f4fg4 d4

D o3l8W12,-2[[e4ee4 a4b4:a4 ge4e4]4: a4 fg4d4]2>c4cd4<b4


[結果] アルゴリズム4で1チャンネルを2スロットずつ2つに分けて、

和音を演奏させています。


§6-3 FM音源TL値設定

O


[書式1] O 数値1,数値2

[書式2] O 数値1,±数値2


[範囲] [数値1] 1〜15

[数値2] [書式1] 0〜127

[書式2] -128〜+127


[音源] FM


FM音色のTL値を直接設定します。


音色のベロシティーによる変化を表現したい場合や、

LFOのように周期的でなく、人間的なワウペダル制御を表現したい場合に

有効です。


数値1は、

slot1 が 1 ,slot2 が 2 ,slot3 が 4 ,slot4 が 8 とし、

合計した値を指定します。


数値2は、設定するTL値です。

+または−を指定した場合(書式2)は、現在の値から相対的に変化します。


[例1] O3,10

[結果] slot 1 と 2 のTL値を 10 にします。


[例2] O5,-2

[結果] slot 1 と 4 のTL値を -2 します。


§6-4 FM音源FB値設定

FB


[書式1] FB 数値1

[書式2] FB ±数値2


[範囲] [数値1] 0〜7

[数値2] -7〜+7


[音源] FM


FM音色のFB値を直接設定します。


O コマンドは TL値を制御するのに対し、このコマンドは FB値を制御する

他は、使用用途なども O コマンドに準じます。


指定する数値は、設定するFB値です。

+または−を指定した場合(書式2)は、現在の値から相対的に変化します。


[例1] FB3

[結果] 現在のFM音色の FB値 を 3 にします。


[例2] FB-2

[結果] 現在のFM音色の FB値 を 現在の値から -2 します。


§6-5 SSG / OPM トーン・ノイズ出力選択

P


[書式] P 数値


[範囲] 1〜3


[音源] FM(OPM) / SSG


FM音源(OPM)のHパートのslot4、SSG音源のトーン・ノイズの出力を選択します。


・ SSG音源パートに指定した場合

1 tone (デフォルト)

2 noise

3 tone + noise


・ FM音源(OPM)の Hパートに指定した場合

1 tone (デフォルト)

2 noise


[例1] P3 (SSG音源)

[結果] そこからの音を、tone と noise を mix して出力します。


§6-6 ノイズ周波数設定

w


[書式1] w 数値

[書式2] w ±数値


[範囲] [書式1] 0〜31

[書式2] -31〜+31


[音源] FM(OPM) / SSG


FM音源(OPM)のHパートのslot4、SSG音源のノイズの周波数を設定します。


数値は、大きいほど周波数の低い音になります。


+または−を表記した場合、現在の値から相対的に変化します。


これで周波数を設定しても、PコマンドでノイズがONになっていないと、

ノイズは鳴りません。


[注意] SSG音源パートでこのコマンドを実行する際に、SSGドラム等のSSG効果音が発音

されていた場合は、その場では設定せず、発音終了後の最初のKeyonの時に

設定されるようになっています。


それまではSSG効果音のノイズ周波数の変化の影響を受けてしまうので、

なるべくなら SSGノイズは SSG効果音によって消される、I パートのみで

使用していた方が無難です。


[例1] w31

[結果] ノイズ周波数を最低音の31に設定します。


[関連] P コマンド (->§6-5)


§6-7 リズムパターン選択・演奏

R


[書式] R 数値


[範囲] 0〜255


[音源] R選択


リズム定義パート(R)によって、指定した数値の番号に定義されている

リズムパターンを鳴らします。


[例] R0R0R0R1

[結果] R0のパターンを3回演奏し、R1のパターンを1回演奏します。


[関連] リズムパート(K/R)の使用方法 (->§1-2)


§7 [[ MMLコマンド・デチューン部 ]]




このセクションでは、音程を微妙に変化させるデチューンコマンド関連の

解説をまとめています。


§7-1 デチューン設定

D DD


[書式1] D 数値

[書式2] DD 数値


[範囲] -32768〜+32767


[音源] FM / SSG / PCM(AD,86,PPZ)


デチューン(周波数をずらす値)を設定します。


D コマンドは、デチューン値を絶対指定し、

DD コマンドは、現在のデチューン値から相対的に変化させます。


デチューン値のデフォルトは 0 です。


SSG音源の場合は、#Detune または DX コマンドによって、同じ値でも

かかり具合が変わってきます。


#Detune Normal または DX0 の状態では、FM音源LSIに出力する値を

そのまま、例えば+1なら+1、ずらします。


#Detune Extend または DX1 の状態では、どのオクターブでも、同じ値ならば

同じ程度ずれるように補正されます。ただし、0でない場合(例えばD1)は、

最低必ず1はずれるようになっています。


PCM音源、FM音源の場合は、そのままFM音源LSIに与える音程値に加減算

されます。


DM コマンド(→§7-6)が指定されている場合は、マスターデチューン値と

ここで指定されるデチューン値が加算されて設定されます。


[例]

G D0 v13 o5g1

H D1 v13 o5g1

[結果] GパートとHパートで、微妙に周波数が違う音が重なって発音されます。


[注意] DD コマンドを実行する事によって、デチューン値が+32767を越える、もしくは

-32768を下回る場合のチェックはしていません。


[関連] DX コマンド (->§7-3)

#Detune コマンド (->§2-16)

DM コマンド (->§7-6)


§7-2 FM音源3chパートのスロット毎デチューン指定

sd sdd


[書式1] sd スロット番号 , 数値

[書式2] sdd スロット番号 , 数値


[範囲] スロット番号 1〜15

数値 -32768〜+32767


[音源] FM(3ch)


FM音源3chパートのみ指定が可能で、スロット毎のデチューン値を設定します。


sd コマンドは、デチューン値を絶対指定し、

sdd コマンドは、現在のデチューン値から相対的に変化させます。


スロット番号でスロットを指定し、数値でデチューン値を指定します。


スロット番号は、slot1 が 1 ,slot2 が 2 ,slot3 が 4 ,slot4 が 8 とし、

合計した値を指定します。


D コマンドと同時に使用する事も可能で、その場合は、指定パートの

使用している全スロットに D コマンドのデチューン値を加減算した後、

このコマンドで指定したスロットの音にデチューンが掛かります。


デフォルトでは全てのスロットが0になっています。


[注意] すべてのFM音源3chパートで、共通の値を使用します。

例えば PMD.COMで、CパートでSlot1,2、 DパートでSlot3,4を演奏中に、

Cパートで sd8,+10 とすると、Dパートで演奏している音色のSlot4に

+10のデチューンが掛かります。


このような現象を避ける為に、演奏スロット以外にはsdは指定しないように

して下さい。また、変更後に途中で演奏スロットを変更する場合は、

演奏しなくなるスロットのデチューン値を0に戻すようにする必要があります。

[例] sd6,-4

[結果] スロット2と3に、-4のデチューンを掛けます。


[関連] s コマンド (->§6-2)

D DD コマンド (->§7-1)


§7-3 SSG音源音程補正指定

DX


[書式] DX 数値


[範囲] 0〜1


[音源] SSG


SSG音源の音程の補正をするかしないかを選択します。


数値が0の場合、DETUNE/LFO使用時、1ずれると、音源に送る音程値も必ず

1ずれるようになります。(同じDETUNE値でも高音域になるとずれが大きくなる)


数値が1の場合は、高音域にいけばいくほどずれが小さくなるようにし、

同じDETUNE/LFO値ならどの音程でも同程度ずれるように補正します。


#Detuneと同じ機能ですが、これで指定するとパート毎に変更が可能です。

デフォルトは0です。


[例] DX1

[結果] その後のデチューン値を音程毎に補正する。


[関連] #Detune コマンド (->§2-16)

D DD コマンド (->§7-1)

M MA MB コマンド (->§9-1)

§7-4 ベンド幅設定

B


[書式] B 数値


[範囲] 0〜255


[音源] FM / SSG / PCM(AD,86,PPZ)


MIDIライクなベンド幅を設定します。#Bendrangeと同様です。

半音単位で、0〜255までの設定が可能です。


0以外の値を書くと、I コマンド が有効になります。


この値は、パートを跨って持ち越されます。

例えば、Cパートで B12 とだけ設定した場合は、ABパートではベンド幅は

設定されませんが、Cパート以降 (CDEFGHIJ+#FM3Extendのパート)では

全て設定されている事になります。

ただし、#Bendrangeで設定した場合は全てのパートで有効です。


[注意] ベンド幅の設定をした時点で、I コマンド(->§7-5)の項で示す注意点が有効に

なる上、MMLが非常に見づらくなるので、MIDIデータからのコンバートの際

以外では使わない方が無難でしょう。


[例] B12

[結果] I 8192 で 丁度 1オクターブずれるようにベンドレンジを設定します。


[関連] #Bendrange コマンド (->§2-15)

I コマンド (->§7-5)


§7-5 ピッチ設定

I


[書式] I 数値


[範囲] -32768〜+32767


[音源] FM / SSG / PCM(AD,86,PPZ)


MIDIライクなPITCH値を設定します。


±8192でベンド幅分周波数をずらします。


#Bendrange、または B コマンドでベンド幅を設定しない限りは

無効になります。


[注意1] 正確にピッチ設定されるのはFM音源だけです。

SSG/ADPCMパートではそれなりに上下されますが、使わない方が無難です。


[注意2] ベンド幅が設定されて、このコマンドが有効になると、PITCH/DETUNEの値は、

指定後、次に音程コマンドが来た時点で初めて設定されます。


[例1]

A B2I0[cdeI8192fga]2

[結果]

A B2[I0cdeI8192fga]2

と同じになります。


また、"D"コマンドも同様に影響を受けます。

[例2]

A B0D10[cdeD0]2 とした場合は、そのままの形で

[結果]

A D10 cdeD0 cdeD0 と演奏されますが、


[例3]

A B2D10[cdeD0]2 とした場合は、

[結果]

A D10cdeD0 D10cdeD0 と演奏されますので、充分注意して下さい。


[例4]

A B12o4l8 I0cI1000cI2000cI3000cI4000cI5000cI6000cI7000cI8192c

[結果] オクターブ4のcから、オクターブ5のcまで、徐々に音程を上げていきます。


[関連] #Bendrange コマンド (->§2-15)

B コマンド (->§7-4)

D DD コマンド (->§7-1)


§7-6 マスターデチューン設定

DM


[書式] DM 数値


[範囲] -32768〜+32767


[音源] FM / SSG / PCM(AD,86,PPZ)


パート毎でマスターデチューン値を設定します。


このコマンドが認識されると、即時デチューン設定がされ、さらに

これより後の D コマンドによるデチューン値に、指定した数値が

増減されるように設定されます。


[関連] D DD コマンド (->§7-1)


§8 [[ MMLコマンド・エンベロープ部 ]]




このセクションでは、SSG/PCMの音を変化させる、ソフトウエアエンベロープ

関連のコマンドについて解説します。


§8-1 SSG/PCM ソフトウエアエンベロープ指定

E


[書式1] E 数値1 , 数値2 , 数値3 , 数値4

[書式2] E 数値1 , 数値2 , 数値3 , 数値4 , 数値5 [, 数値6]


[音源] SSG / PCM(AD,86,PPZ)


[範囲] [書式1] 数値1 0〜255

数値2 -15〜+15

数値3 0〜255

数値4 0〜255


[書式2] 数値1 0〜31

数値2 0〜31

数値3 0〜31

数値4 0〜15

数値5 0〜15

数値6 0〜15


ソフトウエアエンベロープを設定します。(OPN/OPNAのSSG/ADPCMパート専用)

2種類のエンベロープを選択出来ます。ただし同時には使用できません。


指定数値が4つの場合は書式1、5または6個の場合は書式2と

扱われます。


#Envelopespeed Normal または EX0 の場合は、速度はテンポに依存します。

#Envelopespeed Extend または EX1 の場合は、速度は一定となります。


§8-1-1 ソフトウエアエンベロープ指定/書式1の場合


PMD独自の簡易エンベロープ指定方法です。


数値1 = Attack Length (AL)

数値2 = Decay Depth (DD)

数値3 = Sustain Rate (SR)

数値4 = Release Rate (RR)


#Envelopespeed Normal または EX0 の場合は、1クロック = 1内部クロック

#Envelopespeed Extend または EX1 の場合は、1クロック = 約 56 Hz

とし、以下のように変化していきます。


1. Keyon後、設定されている音量で、ALクロック分待ち、その後

DDを音量に加減算します。


2. SRクロック毎に、音量を -1 していきます。


3. Keyoffされたら、RRクロック毎に、音量を -1 していきます。


SR= 0 の時は、2.の際、音量減衰はしません。

RR= 0 の時は、3.の際、音量は一気に0になります。


[例] C96 EX0 E1,-2,2,1 v13 l16 gr

[結果] 音量は、以下のように変化していきます。

13 11 11 9 9 7 7 6 5 4 3 2

↑keyon ↑keyoff


§8-1-2 ソフトウエアエンベロープ指定/書式2の場合


FM音源とほぼ同様の指定方法です。


数値1 = Attack Rate (AR)

数値2 = Decay Rate (DR)

数値3 = Sustain Rate (SR)

数値4 = Release Rate (RR)

数値5 = Sustain Level (SL)

数値6 = Attack Level (省略時0)


Attack Levelは、アタックの開始されるレベルを指定します。


同様といっても、速度的に同一という訳ではないので注意してください。

特に#Envelopespeed Normal または EX0の場合は、速度はテンポに依存します。


パラメータの意味はFM音源のマニュアルなどを参照して下さい。


[例] E31,18,4,15,2

[結果] ピアノタイプのエンベロープを設定します。




[関連] #Envelopespeed コマンド (->§2-18)

EX コマンド (->§8-2)


§8-2 ソフトウエアエンベロープ速度設定

EX


[書式] EX 数値


[範囲] 0〜1


[音源] SSG / PCM(AD,86,PPZ)


数値が1の場合 E コマンドによるエンベロープをテンポに依存しない

一定速度にする拡張仕様に変更します。


0の場合はテンポに依存します。(テンポが遅くなればエンベロープも遅くなります)


#EnvelopeSpeedと同じ機能ですが、こちらで指定するとパート毎に変更が

可能です。


デフォルトは0です。


[例] EX1

[結果] 指定パートのエンベロープをそこからテンポに依存しないようにします。


[関連] #Envelopespeed コマンド (->§2-18)

E コマンド (->§8-1)


§9 [[ MMLコマンド・LFO部 ]]




このセクションでは、LFO(低周波発振器)関連のコマンドの解説を

まとめています。


LFOとは、FM/SSG/PCMの音程/音量及び、FM音源のTL値を時間的に変化

させることにより、主に音程の場合はビブラート、音量の場合はトレモロ、

TL値の場合はワウワウといった効果を出す為に使われます。


また、様々な波形が用意されているので、特にランダム波などは、効果音的な

音に加工するのに便利です。


§9-1 ソフトウエアLFO指定

M MA MB


[書式1] M 数値1

[書式2] M l音長[.]

[書式3] M 数値1 , 数値2 , 数値3 , 数値4

[書式4] M l音長[.] , 数値2 , 数値3 , 数値4

[書式5] MA 数値1

[書式6] MA l音長[.]

[書式7] MA 数値1 , 数値2 , 数値3 , 数値4

[書式8] MA l音長[.] , 数値2 , 数値3 , 数値4

[書式9] MB 数値1

[書式10]MB l音長[.]

[書式11]MB 数値1 , 数値2 , 数値3 , 数値4

[書式12]MB l音長[.] , 数値2 , 数値3 , 数値4


[範囲] [数値1] 0〜255

[数値2] 0〜255

[数値3] -128〜+127

[数値4] 0〜255

[音長] 1〜255のうち、全音符長の約数となる値


[音源] FM / SSG / PCM(AD,PPZ)


ソフトウエアLFOを指定します。


PMDは、ソフトウエアLFOは2つあり、それぞれ独立して使用することが

出来ます。

M または MA で、1つめのLFO(以下LFO1)を、

MB で、2つめのLFO(以下LFO2)を指定します。


指定される数値は以下の通りです。


数値1 = delay

数値2 = speed

数値3 = depthA

数値4 = depthB


delay のみ単独で指定すると、現在のdelay値のみ変更します。


delayは、lを付加した場合は音長、付加しない場合は内部クロックの

値で設定します。


LFO速度は、

#LFOSpeed Normal または MX0 の場合、テンポに依存されます。

#LFOSpeed Extend または MX1 の場合、一定速度となります。


LFO波形は、MWコマンドで指定したものによります。

波形によって、各数値の意味は微妙に異なってきます。


#LFOSpeed Normal または MX0 の場合は、1クロック = 1内部クロック

#LFOSpeed Extend または MX1 の場合は、1クロック = 約 56 Hz

とし、以下説明のように変化していきます。


以下の解説で表記される、MX MW * の各コマンドはそれぞれ指定したLFOを

変化させるコマンド(MBなら MXB MWB *B) と受け取って下さい。


§9-1-1 ソフトウエアLFO指定/MW0の場合 (三角波1)


1) Keyon後、delay クロック分待つ。

2) speed クロック毎に、音程/音量の変化量に depthA を加算する。

3) 2)をdepthB 回繰り返す。255が設定されている場合は無限回とする。

4) depthAを正負反転し、初めて反転した時はdepthBを2倍する。

5) 2)に戻る。


[イメージ]   D  /\

 /  \

/    \        /

±0→ ------------\------------/-- →

    A   B  C    \    /

\  /

 \/


A〜B (長さ) : delay (パラメータ1)

B〜C (長さ) : speed × depthB (パラメータ2 × パラメータ4)

B〜D (深さ) : depthA × depthB (パラメータ3 × パラメータ4)


§9-1-2 ソフトウエアLFO指定/MW1の場合 (ノコギリ波)


1) Keyon後、delay クロック分待つ。

2) speed クロック毎に、音程/音量の変化量に depthA を加算する。

3) 2)をdepthB 回繰り返す。255が設定されている場合は無限回とする。

4) 音程/音量の変化量を正負反転し、初めて反転した時はdepthBを2倍する。

5) 2)に戻る。


[イメージ]   D  /  /

 / /

/    /   /

±0→ ------------/------------/-- →

    A   B  C  / /

 /    /

/   /


A〜B (長さ) : delay (パラメータ1)

B〜C (長さ) : speed × depthB (パラメータ2 × パラメータ4)

B〜D (深さ) : depthA × depthB (パラメータ3 × パラメータ4)


§9-1-3 ソフトウエアLFO指定/MW2の場合 (矩形波)


1) Keyon後、delay クロック分待つ。

2) 音程/音量の変化量を depthA×depthB とする。

3) speed クロック分待つ。255ならそのまま変化しない。

4) 音程/音量の変化量を正負反転する。

5) 3)に戻る。


[イメージ]  D



±0→ ------------------------------ →

    A   B    C




A〜B (長さ) : delay (パラメータ1)

B〜C (長さ) : speed (パラメータ2)

B〜D (深さ) : depthA × depthB (パラメータ3 × パラメータ4)


§9-1-4 ソフトウエアLFO指定/MW3の場合 (ランダム波)


1) Keyon後、delay クロック分待つ。

2) 音程/音量の変化量を 0〜±(depthA×depthB) 中のランダムな値とする。

3) speed クロック分待つ。255ならそのまま変化しない。

4) 2)に戻る。


[イメージ]  D


    

±0→ -------------------------- →

    A   B C

  

       


A〜B (長さ) : delay (パラメータ1)

B〜C (長さ) : speed (パラメータ2)

B〜D (深さ) : 0〜±( depthA × depthB )

 ( 0〜±(パラメータ3 × パラメータ4) )


§9-1-5 ソフトウエアLFO指定/MW4の場合 (三角波2)


1) Keyon後、delay クロック分待つ。

2) speed クロック毎に、音程/音量の変化量に depthA を加算する。

3) 2)をdepthB 回繰り返す。255が設定されている場合は無限回とする。

4) depthAを正負反転する。MW0と違い、depthBはここで変化させない。

5) 2)に戻る。


[イメージ]   D  /\    /\    /

 /  \  /  \  /

/    \/    \/

±0→ ------------------------------ →

    A   B  C


A〜B (長さ) : delay (パラメータ1)

B〜C (長さ) : speed × depthB (パラメータ2 × パラメータ4)

B〜D (深さ) : depthA × depthB (パラメータ3 × パラメータ4)


[補足] MW0の三角波1では、−(depthA×depthB) 〜 +(depthA×depthB) の範囲の

三角波になりますが、MW4では、0 〜 +(depthA×depthB) の範囲となります。


この三角波2は、主に音量LFO(トレモロ/ワウワウ)に使用するのに

有効です。

音程LFOでは、ギターのアームの動作のシミュレート等に適します。


§9-1-6 ソフトウエアLFO指定/MW5の場合 (三角波3)


1) Keyon後、delay クロック分待つ。

2) speed クロック毎に、音程/音量の変化量に depthA×|depthA| を加算する。

3) 2)をdepthB 回繰り返す。255が設定されている場合は無限回とする。

4) depthAを正負反転し、初めて反転した時はdepthBを2倍する。

5) 2)に戻る。


[イメージ]   D  /\

 /  \

/    \        /

±0→ ------------\------------/-- →

    A   B  C    \    /

\  /

 \/


A〜B (長さ) : delay (パラメータ1)

B〜C (長さ) : speed × depthB (パラメータ2 × パラメータ4)

B〜D (深さ) : depthA × |depthA| × depthB

 (パラメータ3 × |パラメータ3| × パラメータ4)


[補足] より深い三角波です。


[注意] LFO変化量の取りうる幅は、-32768〜+32767までです。

処理を軽減するため、この範囲を越えた場合のcheckはしていませんので

注意して下さい。


[例] M0,1,32,64 MW5 *1

上の例の場合、1clock毎に 32×32 = 1024 ずつ変化しますが、

32768/1024 = 32clock で +32768に達するため、それ以上の長さの音符を

鳴らすと、音が裏返ってしまいます。


§9-1-7 ソフトウエアLFO指定/MW6の場合 (ワンショット)


1) Keyon後、delay クロック分待つ。

2) speed クロック毎に、音程/音量の変化量に depthA を加算する。

3) 2)をdepthB 回繰り返す。255が設定されている場合は無限回とする。

4) くり返しが終わった状態を維持し続ける。


[イメージ]   D  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

 /

±0→ ------------------------------ →

    A   B  C


A〜B (長さ) : delay (パラメータ1)

B〜C (長さ) : speed × depthB (パラメータ2 × パラメータ4)

B〜D (深さ) : depthA × depthB (パラメータ3 × パラメータ4)


[補足] 音量LFOに使用し、一時的に持続音色を減衰音にしたいといった場合に

使うと便利です。

また、使い方によっては、トランペットの発音後のフェードイン効果等にも

利用できます。




[注意1] このコマンドは、値を指定するだけで、実際にはLFOは掛かりません。

* コマンドにより、LFOをONにして初めて掛かり始めます。

ただし、既にLFOがONになっている場合は、この限りではありません。


[注意2] このコマンドを処理すると、タイで繋げている途中や、keyon非同期の

LFOスイッチが設定されていても、その場でそれまでのLFOは初期化され、

次の音符はdelay値の影響を受けます。


[例] MW0 M24,1,8,2 *1

[結果] delay 24、speed 1、depth 8×2 の三角波LFOを1つ目のLFOに

設定します。


[関連] #LFOSpeed コマンド (->§2-17)

MX MXA MXB コマンド (->§9-5)

MW MWA MWB コマンド (->§9-2)

* *A *B コマンド (->§9-3)


§9-2 ソフトウエアLFO波形指定

MW MWA MWB


[書式1] MW 数値

[書式2] MWA 数値

[書式3] MWB 数値


[範囲] 0〜5


[音源] FM / SSG / PCM(AD,PPZ)


LFOの波形を設定します。


MWA/MWB はそれぞれLFO1/LFO2の設定となります。

MW は MWA と同等です。


指定される数値は以下の通りです。実際の掛かり方については、

M MA MB コマンドの解説を参照して下さい。


0 三角波1 (default)

1 ノコギリ波

2 矩形波

3 ランダム波

4 三角波2

5 三角波3

6 ワンショット


[例] MW2

[結果] そこからのソフトウエアLFO1を矩形波とします。


[関連] M MA MB コマンド (->§9-1)


§9-3 ソフトウエアLFOスイッチ

* *A *B


[書式1] * 数値1[,数値2]

[書式2] *A 数値1[,[B] 数値2]

[書式3] *B 数値1[,A 数値2]


[範囲] 0〜7


[音源] FM / SSG / PCM(AD,PPZ)


ソフトウエアLFOのオン/オフ及びkeyon同期を制御します。


デフォルトでは、数値1がLFO1、数値2(省略可)がLFO2への制御値に

なりますが、* または , の後に A または B の記号を記せば、対象を変更

することが出来ます。


指定する数値の意味は以下の通りです。


数値=0 LFO を off (デフォルト)

数値=1 音程 LFO を on、keyon同期 する

数値=2 音量 LFO を on、keyon同期 する

数値=3 音程&音量LFO を on、keyon同期 する

数値=4 LFO を off

数値=5 音程 LFO を on、keyon同期 しない

数値=6 音量 LFO を on、keyon同期 しない

数値=7 音程&音量LFO を on、keyon同期 しない


[例1] *1

[結果] LFO1の対象を音程、keyon同期で ON とします。

LFO2には影響はありません。


[例2] *0,2

[結果] LFO1をOFFにし、LFO2の対象を音量、keyon同期で ON とします。


[例3] *B5

[結果] LFO2の対象を音程、keyon非同期で ON とします。

LFO1には影響はありません。


[注意1] FM音源に音量LFOを掛ける場合、実際にTLに掛かるLFO変動値は

正負反転されます。よって、LFOが+の場合は音量が上がる(TL値が下がる)

ようになります。対象SLOTを変更して、ワウワウ効果にしても同様なので

注意して下さい。


[注意2] PCM(86)パートは、音程LFOは掛かりません。


[注意3] リズム(K/R)パートでは、PDRの動作モード制御コマンドとなります。


[注意4] 音程LFOも音量LFOも、同じLFOパラメータ(M MA MBコマンドで設定したもの)

を使用します。同時に、違うパラメータで使用したい場合は、

LFO1/LFO2で分けて使用して下さい。


[注意5] *B1,B2 といった重複指定をした場合、前の B1 の部分は無視され、*B2 と

同じ意味になります。


[関連] M MA MB コマンド (->§9-1)

* コマンド (PDR動作モード制御、->§15-2)


§9-4 ソフトウエアLFOスロット指定

MM MMA MMB

[書式1] MM スロット番号

[書式2] MMA スロット番号

[書式3] MMB スロット番号


[範囲] 0〜15


[音源] FM


FM音源パートにのみ有効で、ソフトウエアLFOの効果を反映させる

スロット番号を設定します。


FM3chパートの場合は音程・音量とも、

それ以外のFMチャネルでは音量LFOのみが指定対象となります。


MMA はLFO1、MMB はLFO2の設定になります。

MM は MMA と同等です。


指定する数値は、slot1を 1、slot2を 2、slot3を 4、slot4を 8として、

合計値で設定します。


例えばslot2,4にLFOを効かせたい場合は MM10 と指定します。


0を指定すると、

音量LFOの効果は、音色のキャリア位置のスロットに反映

音程LFOの効果は、総てのスロットに反映

となります。 (デフォルト)


[例] MM3

[結果] LFO1の効果を slot1 と slot2 へ反映させます。


[注意] 0 以外を指定した場合、音色が変更されてもこの値は元のままです。


§9-5 ソフトウエアLFO速度設定

MX MXA MXB


[書式1] MX 数値

[書式2] MXA 数値

[書式3] MXB 数値


[範囲] 0〜1


[音源] FM / SSG / PCM(AD,PPZ)


nが1の場合、M MA MB コマンドによるLFOをテンポに依存しない一定速度に

する拡張仕様に変更します。


MXA はLFO1、MXB はLFO2の設定になります。

MX は MXA と同等です。


0の場合はテンポに依存し、テンポが遅くなるとLFOも遅くなります。


#LFOSpeedと同じ機能ですが、こちらで指定するとパート毎、LFO毎に変更が

可能です。


デフォルトは0です。


[例] MXB1

[結果] LFO2をテンポに依存しない速度にするように設定します。


[関連] #LFOSpeed コマンド (->§2-17)

M MA MB コマンド (->§9-1)


§9-6 上昇/下降専用LFO指定

MP MPA MPB


[書式1] MP ±数値1[,数値2[,数値3]]

[書式2] MP ±数値1[,l音長[.][,数値3]]

[書式3] MPA ±数値1[,数値2[,数値3]]

[書式4] MPA ±数値1[,l音長[.][,数値3]]

[書式5] MPB ±数値1[,数値2[,数値3]]

[書式6] MPB ±数値1[,l音長[.][,数値3]]


[範囲] [数値1] -128〜+127

[数値2] 0〜255

[数値3] 0〜255

[音長] 1〜255のうち、全音符長の約数となる値


[音源] FM / SSG / PCM(AD,PPZ)


上昇/下降タイプのソフトウエアLFOを選択し、LFOをONにします。


MPA はLFO1、MPB はLFO2の設定になります。

MP は MPA と同等です。


±数値1 = depth

数値2 = delay (省略時 0)

数値3 = speed (省略時 1)


delay値は、lを付加した場合は音長、付加しない場合は内部クロックの

値で設定します。


実際には、MA(またはMB) 数値2,数値3,数値1,255 *1 とするのと同じです。


[例] MP-80

[結果] ドラムパート用等に下降のLFOを設定


[注意] 単純に M と * コマンドを発行しているだけなので、

MW MWA MWB コマンドで矩形波またはランダム波を選択している場合は、

正常に動作しません。


[関連] M MA MB コマンド (->§9-1)

* *A *B コマンド (->§9-3)

MW MWA MWB コマンド (->§9-2)


§9-7 LFOの深さの時間的変化の設定

MD MDA MDB


[書式1] MD 数値1[,±数値2[,数値3]]

[書式2] MDA 数値1[,±数値2[,数値3]]

[書式3] MDB 数値1[,±数値2[,数値3]]


[範囲] [数値1] 0〜255

[数値2] -128〜+127

[数値3] 0〜127


[音源] FM / SSG / PCM(AD,PPZ)


LFOの深さ(depthA)の時間的変化を設定します。


これによって、段々深くなっていくLFO、また、逆に段々浅くなっていくLFOが

表現出来ます。


MDA はLFO1、MDB はLFO2の設定になります。

MD は MDA と同等です。


数値1 = speed

±数値2 = depth (+は省略可)

 数値3 = time ( 0で無限回)


LFOの、speed周期毎に、depthAを変化(±depth)させ、それをtime回繰り返して

変化を止めます。


depth値は、LFOのdepthAの符号に関らず、+で深い方向、-で浅い方向へと

変化します。


数値1 が 0の場合、時間的変化無しとします。


数値2は、数値1が0の場合のみ、省略出来ます。( 0 になります )


数値3は、省略した場合は 0 (無限回) となります。


LFOの周期というのは、以下のタイミングで+1周期とします。

ワンショットLFOの場合は周期がないので、変化しません。


1. 三角波の場合

LFO変化量が 0 となった時。


2. ノコギリ波、矩形波の場合

LFO変化量が正負反転した時。


3. ランダム波の場合

LFO変化量が変化した時。


[例1] MD2,1

[結果] LFO2周期で、depthAを 1 増加させ、それをKEYOFFするまで継続します。


[例2] MD3,2,4

[結果] LFO3周期で、depthAを 2 増加させるのを 4回繰り返します。


[関連] M MA MB コマンド (->§9-1)


§9-10 ハードウエアLFOの速さ、Delay設定

H


[書式1] H 数値1[,数値2][,数値]

[書式2] H 数値1[,数値2][,l音長[.]]


[範囲] [数値1] 0〜7

[数値2] 0〜3

[数値3] 0〜255

[音長] 1〜255のうち、全音符長の約数となる値


[音源] FM(OPNA,OPM)


ハードウエアLFOのPMS、AMSを設定します。(OPNA/OPMのFM音源専用)


数値1 = PMS ( 音程への速さ )

数値2 = AMS ( 音量への速さ )

数値3 = Delay ( Keyonから掛かるまでの時間 #Dコマンドと同等 )


AMSは、省略した場合は、0が設定されます。

Delayは、省略した場合は設定されません。(以前の値が保持されます)


実際にLFOを開始するには、#/##コマンドで深さを設定する事が必要です。


[注意] OPNAでは、#コマンドのハードLFOがOFFの状態でも、AMSを大きくすると、

そのパートの音量が小さくなるようです。

ですから、AMSを使っている際にLFOを完全にOFFにする時は、#0H0 と指定して

下さい。


[例] H6,2,l4

[結果] ハードウエアLFOのPMSを6、AMSを2、delayを4分音符長、と設定します。


[関連] # コマンド (->§9-11)

## コマンド (->§9-12)

#D コマンド (->§9-13)


§9-11 ハードウエアLFOスイッチ、深さ設定 (OPNA)

#


[書式] # 数値1[,数値2]


[範囲] [数値1] 0〜1

[数値2] 0〜7


[音源] FM(OPNA)


ハードウエアLFOのon/offを設定します。(OPNAのFM音源専用)


n1 = switch ( 0でoff / 1でon 、デフォルトは 0 )

n2 = depth ( switch= 0の時のみ省略可 )


各FM音源パート( A〜F )で共通の値になります。


[例] #1,6

[結果] ハードウエアLFOをONにし、深さを6に設定します。


[関連] H コマンド (->§9-10)


§9-12 ハードウエアLFOの周波数、波形、深さ設定 (OPM)

## #f #w #p #a


[書式] ## 数値1,数値2,±数値3,数値4

#f 数値1

#w 数値2

#p ±数値3

#a 数値4


[範囲] [数値1] 0〜255

[数値2] 0〜3

[数値3] -64〜+63

[数値4] 0〜127


[音源] FM(OPM)


ハードウエアLFOのFRQ、WaveForm、PMD、AMDを設定します。(OPMのFM音源専用)


数値1 LFO_FRQ ( 周波数 )

数値2 Waveform ( 波形 )

±数値3 PMD ( 音程への深さ )

数値4 AMD ( 音量への深さ )


#fではFRQ、#wではWaveform、#pではPMD、#aではAMDを、それぞれ単独で

指定出来ます。


各FM音源パート( A〜I )で共通の値になります。


[例] ##100,0,20,10

[結果] LFO_FRQを100、Waveformを0、PMDを+20、AMDを10とするハードウエアLFOを

設定します。


[関連] H コマンド (->§9-10)


§9-13 ハードウエアLFOのディレイ設定

#D


[書式1] #D 数値

[書式2] #D l音長[.]


[範囲] [数値] 0〜255

[音長] 1〜255のうち、全音符長の約数となる値


[音源] FM(OPNA,OPM)


ハードウエアLFOのdelayを設定します。

Hコマンドの第3パラメータを単独で指定できるようにしたものです。


keyonしてから、指定した時間が経つまで、PMS/AMSを一時的に

0にします。


指定値は、lを付加した場合は音長、付加しない場合は内部クロックの

値で設定します。


HコマンドでPMS、AMSを設定していないと意味を持ちません。


[例] #D24

[結果] 音が発音されてから4分音符分(C96時)の時間が経ってから、ハードウエア

LFOが掛かるように設定します。


[関連] H コマンド (->§9-10)


§10 [[ MMLコマンド・ループ制御部 ]]




このセクションでは、全体、局所のループを制御するコマンドを解説します。


局所ループは、MMLサイズやコンパイル後のデータサイズを小さくするのに有効

です。


全体ループは、曲を無限ループさせる際に使用します。


§10-1 局所ループ設定

[ : ]


[書式] [ mml1 [:] mml2 ] [数値]


[範囲] 0〜255


[音源] FM / SSG / PCM / R選択 / R定義


ループ(繰り返し)を設定します。


数値は繰り返す回数で、0を指定すると、無限に繰り返します。


省略した場合は、#LoopDefaultで指定した値が設定されます。

#LoopDefaultが指定されていない場合は 0 になります。


: を指定すると、最終ループ時に、その時点でループを脱出します。


[例1] [ cde : fga ]2 b

[結果] cde fga cde b と演奏します。


[注意1] ネスティングは32回までです。

ネスティングとは、ループ中にループを作る事を繰り返す事で、

[[[[[[[cde]2]2]2]2]2]2]2 では7回ですが、

[[cde]2[fga]2[b>cd<]2]2 では2回になります。


[注意2] 以下のコマンド群の持つ値は、ループした時点で、ループ開始時の値に

戻ります。

また、ループ脱出時には、ループ終了時点での値になります。


o > < X ・・・ オクターブ関連

l ・・・ デフォルト音長設定

S ・・・ 装飾音符設定

W ・・・ 擬似エコー設定

C ・・・ 全音符長設定

_{ } ・・・ 移調設定


ただし、音量設定等、その他のコマンドの持つ値は、そのまま持ち越されます。


[補足] 一個の音符がMMLで指定されると、コンパイラが自動的に、

"音程"/"音長"/"オクターブ"/"装飾音符"/"擬似エコー"

の5つを自動設定していると考えると理解しやすいと思います。


[例2] o4l8 cccc

とした場合、コンパイラは、

[結果] o4c8 o4c8 o4c8 o4c8

と展開してデータ化します。


[例3] o4l8 [ c o5l4c ]2

[結果] o4c8 o5c4 o4c8 o5c4

o と l コマンドが、ループ終了時は o5l4 ですが、

ループ先頭に戻った時点でループ開始時の値の o4l8 に戻ります。


[例4] o4 [ c : >c ]2 d

[結果] o4c o5c o4c o5d

ループ脱出時は o4 ですが、脱出後は ] コマンド直前の o5 になります。


以上の説明で良く理解出来ないと思われる方は、 [ と ] コマンドの直後に、

必ず o 及び l 、使用している場合は S と W コマンドも設定するように

しておけば、混乱が避けられます。


[例5] [ o4l8 cdl4ef : gab>c ] o5l8 def

[結果] o4l8 cdl4ef gab>c o4l8 cdl4ef o5l8 def


[関連] #LoopDefault コマンド (->§2-13)


§10-2 全体ループ設定

L


[書式] L


[音源] FM / SSG / PCM / R選択 / R定義


そのパートのMMLが終わった時に、指定した位置に戻るように設定します。


指定されなかった場合は、演奏を終了します。


[注意] 局所ループ同様、オクターブ、デフォルト音長等は、L指定をした位置の

値に戻ります。


が、逆に、音量等のその他のコマンドの値は、MML終了時の値が

持ち越されますので注意して下さい。


なるべく、L指定直後に、各パートとも初期化コマンドを入れておくと

ループ直後の演奏が期待したものではなかったといった現象が避けられます。


[失敗例]

A @0 v12 cccc

A L cccc

:

A @1v10 cccc


[結果] 2行目は、1回目は @0v12 で演奏されますが、

2回目以降は @1v10 で演奏されてしまいます。


[修正例]

A @0 v12 cccc

A L @0 v12 cccc

:

A @1v10 cccc


[結果] 2行目は、1回目も2回目も @0 v12 で演奏される。


実際は、LFOやエンベロープ、転調、移調といったコマンドも、

L指定後に変更がある場合は、L指定直後に入れておきます。


§11 [[ MMLコマンド・テンポ設定部 ]]




このセクションでは、テンポを設定するコマンドを解説します。


§11-1 テンポ設定1

t


[書式] t 数値

[書式2] t ±数値


[範囲] 18〜255


[音源] FM / SSG / PCM / R選択 / R定義


テンポを指定します。

#Tempoコマンドと同様ですが、こちらでは曲の途中で変化させる事が出来ます。


総てのパートで共通する値を使用します。


+または−を表記すると、現在の値から相対的に変化させます。


内部クロック48クロックが、一分間に何回の速さになるかを設定するように

なっています。


C96(デフォルト)の状態では、2分音符=、になります。

C192にすると、4分音符=、になります。


18未満の値は指定出来ません。


[例1] C96 t100

[結果] テンポを 2分音符が1分間に 100回演奏される速度にします。


[例2] t+10

[結果] テンポ値を +10 します。


[関連] #Tempo コマンド (->§2-10)


§11-2 テンポ設定2

T


[書式] T 数値

[書式2] T± 数値


[範囲] 0〜255


[音源] FM / SSG / PCM / R選択 / R定義


テンポを指定しますが、tコマンドと違い、TIMER-Bへ直接与える値を

設定します。

#Timerコマンドと同様ですが、こちらでは曲の途中で変化させる事が出来ます。


総てのパートで共通する値を使用します。


+または−を表記すると、現在の値から相対的に変化させます。


特に遅いテンポでは、tコマンドよりも細かい設定が可能となります。


X68000では、OPN版と互換を取る為に、この値をOPN設定値として、OPM設定値

を算出して出力します。


デフォルトは 200 です。


[例1] T180

[結果] テンポを Timer-B値で 180 とします。


[例2] T+10

[結果] Timer-B値を +10 します。


[関連] #Timer コマンド (->§2-10)


§12 [[ MMLコマンド・音符加工コマンド ]]




このセクションでは、装飾音符、擬似エコーといった、音符を加工する

コマンドを解説しています。


他の音楽ドライバでは見慣れない、PMD独自のもので、実際は使用しなくて

も別のMML表現でも可能なものですが、使いこなす事が出来れば、

よりリアルな、少ない音源数をより上手に使った演奏処理を

手軽に得る事が出来ます。


§12-1 装飾音符設定

S


[書式1] S 数値1[,±数値2[,数値3]]

[書式2] S l音長[.][,±数値2[,数値3]]


[範囲] [数値1] 0〜255

[数値2] -128〜+127

[数値3] 0〜1

[音長] 1〜255のうち、全音符長の約数となる値


[音源] FM / SSG / PCM(AD,86,PPZ)


ソロパートに有効なコマンドで、そこから指定する音符に、

コンパイラ上で装飾音符を自動的に付けます。


数値1 = speed (0 で off)

±数値2 = depth (デフォルトは -1 )

数値3 = タイフラグ (デフォフトは 1 )


出力する音程に対して、depth分(半音単位)ずらした音程から、speedの

スピードで本来の音程に戻ってくる装飾音符になります。


speed値は、lを付加した場合は音長、付加しない場合は内部クロックの

値で設定します。


タイフラグを 0 にすると、音が繋がらず、glissの様になります。


|speed×depth|以下の音符長が指定された場合は、処理は行なわれません。


S0 と指定すると、通常に戻します。


[例1] S2,-2e8

[結果] d%2 & d+%2 & e%10


[例2] S1,-3,0e8

[結果] c+%1 d%1 d+%1 e%9


[注意1] コンパイラ上で展開しているので、使いすぎるとデータサイズが大きくなって

しまいます。


[注意2] このコマンドを使用中に、l^ l= コマンドは使用出来ません。


[関連] l^ l= コマンド (->§4-9)


§12-2 擬似エコー設定

W


[書式1] W 数値1[,[%]±数値2[,数値3]]

[書式2] W l音長[.][,[%]±数値2[,数値3]]


[範囲] [数値1] 0〜255

[数値2] -128〜+127

[数値3] 0〜3

[音長] 1〜255のうち、全音符長の約数となる値


[音源] FM / SSG / PCM(AD,86,PPZ)


そこから指定する音符に、コンパイラ上で自動的に擬似エコーを掛けます。

エコーを掛けたいがパートが足りないといった場合に有効です。


数値1 = delay (0 で off)

±数値2 = depth (デフォルトは -1 )

数値3 = 継続/タイフラグ (デフォルトは 0 )


実際には、Keyon後、内部クロックがdelay分進んだらKeyoff(タイフラグが

立っている場合はkeyoffしません)し、音量をdepth分増減させ、

もう一度Keyonします。継続フラグが立っている場合はそれを音長の許す限り

繰り返します。


delay値は、lを付加した場合は音長、付加しない場合は内部クロックの

値で設定します。


Keyoff後は、元の音量に戻ります。


継続/タイflagは、

0の場合 継続/タイ無し

1の場合 継続/タイ有り

2の場合 1回限り/タイ無し

3の場合 1回限り/タイ有り


depthは、% が指定されていない場合、vコマンドレベル、

 % が指定されている場合、Vコマンドレベルで扱われます。


delay以下の音符長が指定された場合は、処理は行なわれません。


W0 と指定すると、通常に戻します。


[例1] W8,-2a4

[結果] a%8 (^2 a%8 (^4 a%8


[例2] W12,-2,3a2

[結果] a%12& (^2 a%36


[例3] W12,%-3,1a2

[結果] a%12 (^%3 a%12 (^%6 a%12 (^%9 a%12


[注意1] Sコマンドと同様、コンパイラ上で展開しているので、使いすぎるとデータ

サイズが大きくなってしまいます。


[注意2] %を付けて細かく指定する場合、音量の変化範囲は-128〜+127となります。

PCMの場合は音量は0〜255ですので、現在の音量値+127または-128以上の

変化はしないことになります。


[注意3] このコマンドを使用中に、l^ l= コマンドは使用出来ません。


[関連] l^ l= コマンド (->§4-9)


§12-3 スロット毎のキーオンディレイ設定

sk


[書式1] sk 数値1[,数値2]

[書式2] sk 数値1[,l音長[.]]


[範囲] [数値1] 0〜15

[数値2] 0〜255

[音長] 1〜255のうち、全音符長の約数となる値


[音源] FM


FM音源部でのみ指定可能で、指定したスロットのkeyonを遅らせます。


数値1 = slot番号

数値2 = delay


slot番号は、KEYONを遅らせるスロットを、

slot1 が 1 ,slot2 が 2 ,slot3 が 4 ,slot4 が 8 とし、

合計した値を指定します。


delay値は、lを付加した場合は音長、付加しない場合は内部クロックの

値で設定します。


数値1が 0 の場合のみ、数値2(音長)は省略出来ます。


[例] sk12,l8

[結果] そこから、スロット3,4を、8分音符分keyonを遅らせるようにします。


[注意] 指定したdelay値以下の長さの音符が来た場合、keyonを遅らせたスロットの

keyonはされません。


§13 [[ MMLコマンド・パン設定コマンド ]]


このセクションでは、音の出力位置(パン)を設定するコマンドを解説します。


ただし、OPNやSSGのように、音源自体がモノラルである場合には無効です。


§13-1 パン設定1

p


[書式] p 数値


[範囲] 0〜3


[音源] FM(OPNA,OPM) / PCM


音の出力位置(パン)を設定します。


設定する数値は以下の通りです。


FM(OPNA),PCM(AD,PPZ) 1 右

2 左

3 中央 ( デフォルト )


FM(OPM),PCM(68) 1 左

2 右

3 中央 ( デフォルト )


PCM(86) 1 右

       		2	左

3 中央 ( デフォルト )

0 逆相


[補足] 逆相とは、左右の位相を逆にする事です。効果としては、通常の演奏よりも

後ろで鳴っているように感じます。特にヘッドホンをしていると如実に効果を

得る事が出来ます。


§13-2 パン設定2

px


[書式] px ±数値1[,数値2]


[範囲] [数値1] -128〜+127

[数値2] 0〜1


[音源] FM(OPNA,OPM) / PCM


音の出力位置(パン)及び、正相/逆相を指定します。


PCM(86,PPZ)パートで使用した場合に限り、細かい指定が可能です。


FM(OPNA),PCM(AD) 数値1 -128〜-1 右 ( 値に関わらず一定 )

+1〜+127 左 ( 値に関わらず一定 )

0 中央 ( デフォルト )

FM(OPM),PCM(68) 数値1 -128〜-1 左 ( 値に関わらず一定 )

+1〜+127 右 ( 値に関わらず一定 )

0 中央 ( デフォルト )

PCM(86) 数値1 -128〜-1 右寄り

       			+1〜+127	左寄り

0 中央 ( デフォルト )

数値2 0 正相

1 逆相

PCM(PPZ) 数値1 -128〜-4 左 ( 値に関わらず一定 )

-3〜-1 左寄り

+1〜+3 右寄り

+4〜+127 右 ( 値に関わらず一定 )

0 中央 ( デフォルト )


§14 [[ MMLコマンド・リズム音源コマンド ]]



このセクションでは、YM2608で使用出来るリズム音源を制御するコマンドを

解説します。


総てのパートに指定する事が可能ですが、指定したパートの演奏には直接

影響はありません。


通常、リズムを演奏するパートに同時に表記しておくと解りやすくなると

思います。

リズム音源でしかリズムを演奏しない場合は、SSGリズムパートを利用

するのが良いでしょう。(->§1-2-2)


§14-1 リズム音源ショット・ダンプ制御

¥b ¥s ¥c ¥h ¥t ¥i ¥bp ¥sp ¥cp ¥hp ¥tp ¥ip


[書式1] ¥b[p]

[書式2] ¥s[p]

[書式3] ¥c[p]

[書式4] ¥h[p]

[書式5] ¥t[p]

[書式6] ¥i[p]


[音源] FM(OPNA) / SSG / PCM(AD,86,PPZ) / R選択 / R定義


リズム音源の各音を出力/停止します。

各コマンドとリズム音の対応は、以下の通りです。


b Bass Drum

s Snare Drum

c Cymbal

h Hi-Hat

t Tom

i Rim Shot ( r ではないのに注意 )


pを付けると、音の停止(ダンプ)になります。


同時に出力したい場合は、¥s¥t¥iというように指定して下さい。


[例1] ¥b¥s

[結果] リズム音源のBass DrumとSnare Drumを同時に鳴らします。


[例2] ¥cp

[結果] リズム音源のCymbalの音を止めます。


[注意1] p 及び px (パン)コマンドの前に使用する場合は、例えば

¥bp3

とすると、¥bp 3と判断されて、エラーになってしまうので、

¥b p3

と、間を離して指定して下さい。


[注意2] OPNAの仕様上、リズム音源SHOT/DUMPを連続して出力する場合は、

出力間にかなり大きなウエイトを必要とします。


PMDでは、この¥コマンドが連続している場合のみ、間に適切なウエイトを

挿入して対処していますが、間に音長を持たないコマンド(qやv等)が入って、

事実上連続で出力される場合は必要なウエイトが入らず、正常に演奏されない

場合があります。


特に、SHOTの後に他のリズム音のDUMPコマンドが入った場合に顕著に症状が

出るようですので注意してください。


[例3]

I [¥h ¥cp r32 ]0

[結果] PMDが自動的にウエイトを挿入し、32分刻みでハイハットが正常に出力される。


[例4]

I [¥h q0 ¥cp r32 ]0

[結果] ウエイトが挿入されないので、ハイハットの出力が異常になる場合がある。


§14-2 リズム音源マスタボリューム設定

¥V


[書式] ¥V [±]数値


[範囲] 0〜63


[音源] FM(OPNA) / SSG / PCM(AD,86,PPZ) / R選択 / R定義


リズム音源のマスターボリュームを設定します。


+か−を付けると、それまでの音量から相対的に変化させます。


音量の範囲は、0〜63で、デフォルトは 48 です。


[例] ¥V63

[結果] リズム音源のマスタボリュームを最大にします。


§14-3 リズム音源個別音量設定

¥vb ¥vs ¥vc ¥vh ¥vt ¥vi


[書式] ¥vb [±]数値

¥vs [±]数値

¥vc [±]数値

¥vh [±]数値

¥vt [±]数値

¥vi [±]数値


[範囲] 0〜31


[音源] FM(OPNA) / SSG / PCM(AD,86,PPZ) / R選択 / R定義


リズム音源の各ボリュームを設定します。

+ か - を表記すると、相対的変化をします。


¥vの次の文字は、ショット・ダンプ制御と同様の、対応するリズム音を

表します。


[例1] ¥vb25

[結果] リズム音源のBass Drumの音量を 25 に設定


[例2] ¥vs+2

[結果] リズム音源のSnare Drumの音量を 2 増加


§14-4 リズム音源出力位置設定

¥lb ¥ls ¥lc ¥lh ¥lt ¥li ¥mb ¥ms ¥mc ¥mh ¥mt ¥mi ¥rb ¥rs ¥rc ¥rh ¥rt ¥ri


[書式] ¥lb ¥mb ¥rb

¥ls ¥ms ¥rs

¥lc ¥mc ¥rc

¥lh ¥mh ¥rh

¥lt ¥mt ¥rt

¥li ¥mi ¥ri


[音源] FM(OPNA) / SSG / PCM(AD,86,PPZ) / R選択 / R定義


リズム音源の各出力位置を設定します。


¥の次の文字は出力する位置を表し、以下のようになります。


l Left (左)

r Right (右)

m Center (中央)


その次の文字は、ショット・ダンプ制御と同様の、対応するリズム音を

表します。


[例] ¥lh

[結果] リズム音源のHi-Hatの出力位置を左に設定


§15 [[ MMLコマンド・FM音源LSI/ドライバ制御 ]]



このセクションでは、FM音源LSIや、PMD、PDRといったドライバを

直接制御するコマンドを解説しています。


使う事はまれですが、もし使用する際には、制御対象についての

十分な知識が必要な場合が多いので注意してください。


§15-1 FM音源LSIへの直接出力

y


[書式] y 数値1,数値2


[範囲] [数値1] 0〜255

[数値2] 0〜255


[音源] FM / SSG / PCM / R選択 / R定義


FM音源LSIに出力する値をそのまま指定します。


数値1で指定したレジスタに数値2をデータとして出力します。


OPNAでは、D,E,Fパートでは、裏ポートに出力しますが、

その他のパートでは表ポートに出力されます。


[例] y$58,7

[結果] FM 1ch目、slot 2の AR を 7 にします。


[注意1] FM音源LSIの知識を十分持っていないと危険ですので、使用は避けて下さい。


[注意2] FM音色パラメータの微調整をする事も出来ますが、PAUSE、効果音、

パートマスク状態から復帰する際、音色は再定義され、元に戻ってしまう事を

念頭に置いて下さい。


FB、TL値を変化させる場合は、専用に FB , O コマンドが用意されています。

そちらを使用すればそのような現象を避けられます。


[関連] FB コマンド (->§6-4)

O コマンド (->§6-3)


§15-2 PDR動作モード制御

*


[書式] * 数値


[範囲] 0〜5


[音源] R選択 / R定義


K/Rパートで使用し、PDRの動作モードを制御します。


n=0 Double Modeに設定

n=1 Single Modeに設定

n=2 16KHz Modeに設定

n=3 8KHz Modeに設定

n=4 EI Modeに設定

n=5 DI Modeに設定


[例] *0

[結果] PDRを Double Modeに設定します。


[注意1] PDR制御では、通常は、0と1以外は使用しないで下さい。特に遅い機種で

PDRを常駐させた状態で *2 を実行すると、その場でハングアップする

危険性があります。


[注意2] ソフトウエアLFOのスイッチと同じコマンド名になっていて、

指定されているパートで判別しています。混同しないように注意して下さい。


[関連] * コマンド (ソフトウエアLFOスイッチ) (->§9-3)


§15-3 フェードアウト指定

F


[書式] F 数値


[範囲] 0〜127


[音源] FM / SSG / PCM / R選択 / R定義


指定した位置からフェードアウトさせます。


数値で速度を指定します。1 で最低速、127 で最高速です。


[例] F16

[結果] 速度 16 でフェードアウトさせます。


§15-4 音源別音量ダウン設定

DF DS DP DR


[書式1] DF [±]数値

[書式2] DS [±]数値

[書式3] DP [±]数値

[書式4] DR [±]数値


[範囲] [±がない場合] 0〜255

[±がある場合] -128〜+127


[音源] FM / SSG / PCM / R選択 / R定義


音源別音量ダウン設定を変更します。


DF がFM音源、

DS がSSG音源、

DP がPCM音源、

DR がリズム音源をそれぞれ表します。


数値に + または - を付けた場合、現在の値から相対的に変化させます。

+で音量が下がる点に注意して下さい。


但し、+0または-0が指定された場合は、PMDのオプションで指定された値に

再初期化されます。


[例]

G [cdefgab>c< DS+16]8

[結果] SSG音源全体が1ループする毎に段々音量が下がっていきます。


[注意] ここで設定される音量ダウン値は、その曲のみに有効の局所的な値であり、

再度演奏開始する際に、PMDの/DF,/DS,/DP,/DRオプションで指定した値が

再設定され、元に戻ります。


[関連] #VolumeDown コマンド (->§2-22)

PMD /DF /DS /DP /DR オプション (->PMD.DOC)


§15-5 FM効果音発音

N


[書式] N 数値


[範囲] 0〜255


[音源] FM / SSG / PCM / R選択 / R定義


FM効果音を発音します。

0を指定すると停止します。


[注意] FM効果音は0番から定義可能ですが、0番はMML中では鳴らす事が

出来ません。


[例] N4

[結果] 4番目のFM効果音を発音します。


§15-6 SSG効果音発音

n


[書式] n 数値


[範囲] 0〜255


[音源] FM / SSG / PCM / R選択 / R定義


SSG効果音を発音します。

0を指定すると停止します。


PDR,PPSDRVが常駐されていた場合、

1〜127 SSG 効果音

128〜255 SSGPCM効果音(値は128を足した数値)

が発音されます。


[例] n15

[結果] 15番目のSSG効果音を発音します。


§15-7 パートマスク制御

m


[書式] m 数値


[範囲] 0〜1


[音源] FM / SSG / PCM / R選択 / R定義


指定したパートのマスク on /offを制御します。


0 でマスクoff (演奏する)

1 でマスクon (演奏しない)


とします。通常使う事はまずありません。


[例] m1

[結果] 指定パートの演奏をマスクします。


§15-8 小節の長さ設定

Z


[書式] Z 数値


[範囲] 0〜255


[音源] FM / SSG / PCM / R選択 / R定義


小節の長さを指定します。演奏には全く影響はありません。


ゲーム等にPMDを組み込む際、ビジュアル等で曲の小節に合わせて処理する

事が出来るように、プログラマ側から、現在演奏中の小節no.を得る事が

出来るようになっていますが、MMLには小節の概念がないため、3拍子や

変拍子を使っていた場合、小節の長さが解らないと、ドライバは正確な値を

得る事が出来ません。


このコマンドで常に小節の長さをドライバーに教えて、正確な値を返せるよう

にしておけば、プログラマが正確な値を得る事がで出来るようになります。


デフォルトは96です。


[例] Z72

[結果] そこからは3/4拍子であることをドライバに知らせます。


[注意] 曲途中で拍子が変わる場合は、必ずその小節の頭で小節長を指定するように

して下さい。


[補足] この機能を逆手に取り、例えば4分音符を1小節だとドライバに判断させれば

4分音符単位での同期も可能になります。


§15-9 Status1への数値書込み


[書式1] ‾ 数値

[書式2] ‾ ±数値


[範囲] [書式1] 0〜255

[書式2] -128〜+127


[音源] FM / SSG / PCM / R選択 / R定義


Status1(ドライバーを通してプログラマが得る事が出来ます)に

数値を書き込みます。


+または−を表記(書式2)すると、現在のStatus1に加算/減算します。


[注意] Status1の取りうる範囲は 0〜255 です。これをオーバーした場合のCHECKは

していませんので、例えば ‾0 ‾-1 とした場合は、Status1は 255 となります。


[例] ‾2

[結果] Status1に 2 を書き込みます。


§15-10 PCM仕様選択

A


[書式] A 数値


[範囲] 0〜1


[音源] FM / SSG / PCM / R選択 / R定義


その曲をPMD86で演奏させた場合に有効で、


PCMパートの仕様を、

0 PMD86ノーマル仕様

1 PMDB2に合わせる仕様 (音量・ループ指定が変わります)


に変更します。


PMD86の /s オプションとほぼ同様ですが、ここでは局所的な変更で、

違う曲を演奏した場合は元に戻ります。


[例] A1

[結果] PCMの仕様をADPCMに合わせます。


[関連] #ADPCM コマンド (->§2-23)


§16 [[ MMLコマンド・コンパイル制御 ]]



このセクションでは、コンパイル時の各種制御コマンドを解説しています。

§16-1 定義変数使用 ! [書式1] ! 文字列 [書式2] ! 数値 [文字列] 文字種・文字数は任意。先頭から半角30文字まで判別。 [範囲] 0〜255 [音源] FM / SSG / PCM / R選択 / R定義 指定された文字列または数値で定義されている変数のMML文字列を、 指定箇所に張り付けます。 [注意1] 「!b」と「!bc」といった、1変数名が他の変数名+αという形に なる変数指定はなるべく避けた方が無難です。 例えば「!b」と「!bc」の2つのMML変数が定義されていた時、「!bcc」と いうMMLが来ると、!b cc なのか !bc c なのかが非常に解りづらくなります。 もしそういったMMLになった場合は、変数名が長い方(この場合は「!bc」)が 採用されるようになっています。 (「!bcc」「!bc」「!b」の順に検索します。) この状態で !b の方を使用したいという場合は、!b cc と、間にspaceかtabを 開ければ大丈夫です。 (例1参照) [注意2] !数値の後に、数字(l=コマンドのl=を省略した形)を表記する場合も、 間にspaceかtabが必要となります。 [注意3] 半角30文字以上の変数を参照する際にも、必ず後ろにspaceまたはtabが 必要となります。 (それ以上定義されないので、どこで変数が終わるのかが判断不能となるため) [例1] !b @0 !bc @1 !s @2 A !bcc !sg !bc [結果] @1 c @2g @1 [例1'] !b @0 !bc @1 !s @2 A !b cc !s g !b c [結果] @0 cc @2 g @0 c 詳しくは MML変数定義 (->§3-2) を参照して下さい。 [関連] ! コマンド (MML変数定義) (->§3-2)
§16-2 MMLスキップ制御1 " [書式] " [音源] FM / SSG / PCM / R選択 / R定義 または 行の頭 次の " コマンド、又は ' コマンドが見つかるまで、音長を持つコマンドが スキップされます。 既に " コマンドが指定されている時には、スキップを終了します。 同時に m コマンドを発行し、スキップ時にパートマスクする事によって 高速にスキップされるようにしています。 MML中にも、行頭にも表記出来ます。 [例1] A "@0v13o3 cdefgab >@1 cdefgab " >c [結果] A m1 @0v13 o3 > @1 m0 >c "〜" 内の、c,d,e,f,g,a,b のみが読み飛ばされます。 [例2] " ;skip開始 A @0 v13 o5 cde B @1 v13 o4 ccc " ;skip解除 A gfd B <ggg> [結果] A @0 v13 o5 gfd B @1 v13 o4 <ggg>
§16-2 MMLスキップ制御2 ' [書式] ' [音源] FM / SSG / PCM / R選択 / R定義 または 行の頭 MMLのスキップ状態を、強制的に終了します。 同時に m0 コマンドを発行します。 MML中にも、行頭にも表記出来ます。 [例1] A " t80 v12 @10 cder ' def [結果] A t80 v12 @10 def [例2] " A cde B efg ' A fga B ab>c [結果] A fga B ab>c
§16-3 パート限定指定 | |! [書式1] | [記号[記号・・]] mml [書式1] |! [記号[記号・・]] mml [音源] FM / SSG / PCM / R選択 / R定義 行頭で複数のパートを指定した場合に有効で、そこからコンパイルされる パートを限定します。 !を付加した場合は、指定したパート以外のパートに限定します。 パート記号とmmlの間には、区切り記号として、必ず1個以上のspaceまたは tabが必要です。 コンパイラの動作としては、現在コンパイルしているパートの アルファベットが指定されていない(!がある場合されている)場合は、 次の|コマンドか行の最後までMMLをskipします。 |の後にキャラクタが無い場合は、限定状態を総て解除します。 [例] ABC @12v11o4l2 |A D0ccd |B D3efg |C D-3gab |!C >c& |C g4e4 | c [結果] A @12v11o4l2 D0 ccd >c& c B @12v11o4l2 D3 efg >c& c C @12v11o4l2 D-3gab g4e4 c
§16-4 コンパイル打ち切り

/


[書式] /


[音源] FM / SSG / PCM / R選択 / R定義


そのパートのCompileを、そこで打ち切ります。


[例]

A cde /

A fga

[結果]

A cde


§16-5 コメント指定

;


[書式] ;


[音源] FM / SSG / PCM / R選択 / R定義


その行のCompileを、そこで打ち切り、残りはコメントとして無視します。


[例]

A cde ; comment

A fga

[結果]

A cde

A fga


§16-6 コメント指定2 ` [書式] ` [音源] FM / SSG / PCM / R選択 / R定義 または 行の頭 1度指定されたら、もう1度指定するまで、その間のMMLを 総てコメントとし、無視します。 行の頭に表記した場合は、総てのパートでコメントかどうかのフラグが 反転されます。 また、間にある # @ ! 各種定義命令も無視されます。 必ず、MML中か、行頭にある必要があります。 MML中にドキュメント等を書きたい場合や、 MML行の中にコメントを表記したい場合に使用すると便利です。 [例1] A l4cde ` ここはコメント A ここもコメント ` cde [結果] 全角文字の部分はコメントになります。 [例2] !A cdefg ` #Detune Extend ` [結果] 変数!Aは定義されますが、#Detune Extend の行は無視されます。 [注意1] 特定のパート中のMMLで指定しても、他のパートには影響を及ぼしません。 [例3] ` G cde fga ` b H cde ` fga b [結果] Gパートは a まで、Hパートは e までがコメントとなり、無視されます。 [注意2] 行頭以外に表記可能なのは、パートMMLの途中のみです。 全体をコメントとしたい場合は、必ず行頭に表記して下さい。 [例4] ` Comment ` 上の例では、2つめの ` 記号 は無視され、以降のMMLは 総てSKIPされてしまいます。 ここでは、 ` Comment ` と表記しなければいけません。
§17 製作者の連絡/問い合わせ先


[!!注意!!] 1996/03/01付けで住所/TELが変更されました。


〒167 東京都杉並区上井草 2−34−22 プランタン井口 102号室

梶原 正裕

TEL&FAX (03)3395-9766

(24hいつでもOKです)

サポートBBS[PMD-BBS] (03)3395-9600 (3回線)

※詳しくは PMDBBS.CM ファイルをご覧下さい。


(郵便でのご質問にはお答え出来ないことがあります)


End of PMDMML.MAN