PMD version4.8 コマンドマニュアル
(1/3) (2/3) (3/3)
§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に分ける場合は、
#FM3Extend
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)に戻る。
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)に戻る。
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)に戻る。
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)に戻る。
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)に戻る。
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)に戻る。
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) くり返しが終わった状態を維持し続ける。
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 以外を指定した場合、音色が変更されてもこの値は元のままです。
===============================================================================