PMD version4.8 コマンドマニュアル
(1/3) (2/3) (3/3)
§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
`
[結果] 変数!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 製作者の連絡/問い合わせ先
- [かぢゃぽんのお部屋] - http://www5.airnet.ne.jp/kajapon/