@@"fms":FM音源@@"fms"
使用する音源モジュールを、FM音源にします。
「FM音源の音色作成に関わる用語説明」を、別の章に詳しく書いているので、参照してください。
用語説明の章はこちら
FM音源では、次のメタデータ定義のいずれかによって、音色番号に音色データを割り当てたものを使用します。
| メタデータ定義 | モード |
|---|---|
#MB:FMS_6OP |
6オペレータモード |
#MB:FMS_4OP |
4オペレータモード |
#MB:FMS_2OP |
2オペレータモード |
#MB:FMS_OPM |
OPM互換の4オペレータモード |
#MB:FMS_OPNA |
OPNA互換の4オペレータモード |
#MB:FMS_OPN |
OPN互換の4オペレータモード |
音色データの選択は、音源サブフォーム番号(@番号)によって、音色番号を指定して行います。
当FM音源モジュールは、OPMの上位互換になっていて、内部にオペレータを6個持っています。
音色定義の書式は複数ありますが、複数の独立した音色定義領域を持っている訳ではなく、実体は6オペレータモード用の記憶領域があるだけです。
どの音色記述方法でも、6オペレータモード用の記憶領域に設定されます。
6オペ以外の記述方法では、使わないオペレータを未使用状態に設定しています。そのため、音色番号3番は6オペモード、音色番号8番は4オペモードというように、オペレータモードが混在した定義になります。
同じ番号に複数の音色定義をした場合、最後の定義が有効になるので、音色番号の重複定義には注意してください。
有効な音程の範囲は、実際のOPMでは 3.58MHz 駆動の場合、「o0C+ から o8C まで」ですが、当FM音源モジュールでは、MMLオクターブ指定における範囲と同等の範囲で受付可能です。
ただし、音色データ内の KS(キースケーリング)は、実際のOPM相当における最低音程以下には最低音程、最高音程以上には最高音程とみなして動作します。
y"subform",[1]
全てのオペレータの音源サブフォーム番号を、[1] に設定します。
設定範囲は、0 〜 1023 です。
ただし、メタデータ定義にて音色データを定義した番号に限られます。
y"reso_mode",[1]
フェーズジェネレータ部の波形生成モードを、[1] に設定します。
設定範囲は、0 〜 8 です。
上記 1 〜 8 の場合、(384000Hz÷設定値)の生成レートとなります
※ネイティブモードとは、次の設定によるモードです。
#MB:CONFIG {
fms_master: clock=[1]: prescale=[2],
}
ネイティブモードでは、上記の設定によるレート(clock÷prescale)で波形生成を行います。
y"eg_reset",[1]
ノートオン時の初期エンベロープレベル(IEL)の動作モードを、[1] に設定します。
設定範囲は、-1 または 0 〜 128 です。
初期設定は -1 です。
【備考】
音色を OPM / OPNA / OPN モードで定義している場合は、いずれも音色定義で IEL を変更できません。これらのモードでは、IEL は内部で全てのオペレータに対し「ノートオン直前までのレベルを引き継ぐモード」に設定されています。
y"fb_bias",[1]
フィードバックレベルへのバイアス調整値を [1] に設定します。
設定範囲は 0.75 〜 1.35 です。
初期設定は 1.0(バイアス無し)です。
指定値が大きくなるほど音色が明るくなり、小さくなるほど曇った感じになります。
y"set_hlfo",[1]
ハードLFOの設定を行います。
この設定は、@mh または @mha により内部で呼び出すために使用されますので、通常は使用しないでください。
y"set_dampfunc",[1]
エンベロープダンパー(消音機能)の設定、または、実行を行います。
エンベロープダンパーでは、休符途中でのリリースレートを一時的に操作することで消音を行います。
ダンパー実行後は、次のノートオンで元のリリースレートに自動復帰します。
設定範囲は、-1 または 0 〜 15 です。
指定値による動作は次の通りです。
y"reset_addv",[1]
[1] による宛先の、全オペレータへの加算値設定を0にリセットします。 設定範囲は、0 〜 3 です。
"***_add_dt3"、"***_add_tl"、"add_el_each"を 0 にリセットします。"***_add_dt3"を 0 にリセットします。"***_add_tl"を 0 にリセットします。"add_el_each"を 0 にリセットします。※「***」に当てはまる文字は “op1” 〜 “op6” です。全てのオペレータが対象になります。
AME=1オペレータのTL加算指定y"add_tl_ame1",[1]
音色設定内の AME が 1 になっているオペレータのみ、TL値が、音色設定の TL に [1] を加算した値になります。
このコマンドは、"***_add_tl"の設定内容を、AME が 1 になっているオペレータのみを対象に上書きするものです。
※「***」に当てはまる文字は “op1” 〜 “op6” です。
y"add_el",[1]
全オペレータの、現在のエンベロープ出力レベルに対し、[1] を直ちに加算します。(@mzコマンドと同様)
y"add_el_each",[1]
全オペレータの、現在のエンベロープ出力レベルに対し、ノートオンの都度、ノートオンの直前に [1] を加算します。(@mzeコマンドと同様)
y"hlfo_mode",[1]
FM音源のハードLFOモードを、[1] に設定します。
設定範囲は、-1, 0, 1 のいずれかです。初期設定は -1 です。
ハードLFO処理を行わない場合、その分処理が軽くなります。
y"@mh_wf",[1]
OPM HARD LFO: wave form(0〜3)
y"@mh_lfrq",[1]
OPM HARD LFO: frequency(0〜255)
y"@mh_pmd",[1]
OPM HARD LFO: pmd(0〜127)
y"@mh_amd",[1]
OPM HARD LFO: amd(0〜127)
y"@mh_pmsams",[1]
OPM HARD LFO: pms/ams
pmsは0〜7で上位4bit、amsは0〜3で下位4bit の書式で指定します。
例えば、pms=7、ams=3のときは、0x73なので、10進数では115で指定します。
y"@mh_sync",[1]
OPM HARD LFO: sync-mode(0〜1)
y"@mh_spd_adj",[1]
OPM HARD LFO: SpeedAdj.
OPM互換HLFOの速度倍率を、[1] に設定します。
設定範囲は 0.5 〜 2.0 です。初期設定は 1.0(等倍)です。
y"@mha_lfrq",[1]
OPNA HARD LFO: frequency(0〜7)
y"@mha_amspms",[1]
OPNA HARD LFO: ams/pms
amsは0〜3で上位4bit、pmsは0〜7で下位4bit の書式で指定します。
例えば、ams=3、pms=7のときは、0x37なので、10進数では55で指定します。
y"@mha_sync",[1]
OPNA HARD LFO: sync-mode(0〜1)
y"@mha_spd_adj",[1]:
OPNA HARD LFO: SpeedAdj.
OPNA互換HLFOの速度倍率を、[1] に設定します。
設定範囲は 0.5 〜 2.0 です。初期設定は 1.0(等倍)です。
***の部分が宛先OP)DT3への加算値指定y"***_add_dt3",[1]
オペレータの DT3 への加算値を、[1] に設定します。(この加算値は記憶されます)
※この加算値に現在設定されている音色データから対応す
る DT3 値を呼び出して加算した結果を音源モジュー
ルにセットします。ただし、加算結果は -9600〜9600 に
制限されます。
TLへの加算値指定y"***_add_tl",[1]
オペレータの TL への加算値を、[1] に設定します。(この加算値は記憶されます)
※この加算値に現在設定されている音色データから対応す
る TL 値を呼び出して加算した結果を音源モジュールにセ
ットします。ただし、加算結果は 0〜127 に制限されま
す。
IPHの指定y"***_iph",[1]
オペレータの IPH を、[1] に設定します。
IELの指定y"***_iel",[1]
オペレータの IEL を、[1] に設定します。
ARの指定y"***_ar",[1]
オペレータの AR を、[1] に設定します。
D1Rの指定y"***_d1r",[1]
オペレータの D1R を、[1] に設定します。
D2Rの指定y"***_d2r",[1]
オペレータの D2R を、[1] に設定します。
RRの指定y"***_rr",[1]
オペレータの RR を、[1] に設定します。
D1Lの指定y"***_d1l",[1]
オペレータの D1L を、[1] に設定します。
TLの指定y"***_tl",[1]
オペレータの TL を、[1] に設定します。
KSの指定y"***_ks",[1]
オペレータの KS を、[1] に設定します。
MULの指定y"***_mul",[1]
オペレータの MUL を、[1] に設定します。
DT1の指定y"***_dt1",[1]
オペレータの DT1 を、[1] に設定します。
DT2の指定y"***_dt2",[1]
オペレータの DT2 を、[1] に設定します。
DT3の指定y"***_dt3",[1]
オペレータの DT3 を、[1] に設定します。
DT4の指定y"***_dt4",[1]
オペレータの DT4 を、[1] に設定します。
FBの指定y"***_fb",[1]
オペレータの FB を、[1] に設定します。
AMEの指定y"***_ame",[1]
オペレータの AME を、[1] に設定します。
MSKの指定y"***_msk",[1]
オペレータの MSK を、[1] に設定します。
y"sys1_msvchv",[1]
master volume と ch.volume の設定です。
引数からTL値を計算して、キャリアのTLに音量の書き込みを行います。
引数[1]は、16進数2桁の2個パックとして解釈されます。 16進数で「0xaabb」と記述した場合、次のようになります。
master volume 及び ch.volume は、書き込んだ値が記憶され、"sys1_msv"もしくは"sys1_chv"の yコマンドで利用されます。
master volume 及び ch.volume の初期値は双方255です。
[1]に負数を指定した場合、
現状の master volume 及び ch.volume にてTL値を再計算して設定します。
負数指定は、音色の変更があった直後の使用を想定しています。
y"sys1_msv",[1]
master volume の設定です。
引数からTL値を計算してキャリアのTLに音量の書き込みを行います。
引数[1]は、master volume です。
設定範囲は 0 〜 255 です。
ch.volume は、以前書き込んだ値が読み出されて設定されます。ch.volume の初期値は255です。
引数[1]に負数を指定した場合、現状の master volume 及び ch.volume にてTL値を再計算して設定します。
負数指定は、音色の変更があった直後の使用を想定しています。
y"sys1_chv",[1]
ch.volume の設定です。
引数からTL値を計算してキャリアのTLに音量の書き込みを行います。
引数[1]は、ch.volume です。
設定範囲は 0 〜 255 です。
master volume は、以前書き込んだ値が読み出されて設定されます。master volume の初期値は255です。
引数[1]に負数を指定した場合、現状の master volume 及び ch.volume にてTL値を再計算して設定します。
負数指定は、音色の変更があった直後の使用を想定しています。
y"sys1_pmdamd",[1]
HLFOパラメータのPMDとAMDの2つを1度に設定します。
引数[1]は、16進数2桁の2個パックとして解釈されます。
16進数で「0xaabb」と記述した場合、次のようになります。