Changes

MGSDRV MML 11 JP

16,636 bytes added, 20:33, 9 February 2022
註:参考 Tone Data YM2413データシートより引用
{|
|+|-p||コンパイル終了後、演奏を開始させます。MGSDRVが無いとエラーになります。演奏中の操作は、SELECTで早送り(Turbo RのみSHIFT+SELECTで高速早送りができます)、ESCで終了です。MGSDRVを常駐させている場合のみSHIFT+ESCで演奏を止めずに終了させることができます。MGSDRV v3.13以降ならテンキー操作で再演奏、音量調整なども行なえます。
|-
|-q||-pオプションで演奏が開始されるとESCが押されるか、演奏が終了するまでDOSに戻りませんが、このオプションを指定するとすぐにDOSへ戻ります(MGSDRV常駐時でないと一瞬だけ演奏してDOSへ戻ってしまいます)。-pオプションと一緒に使用しないと意味はありません。
|-
|-t||コンパイル終了後にトラック毎の使用状態を表示します。括弧の中の数字は左から、
|-
| ||確保(#allocなどで)されたバイト数
| ||となっています。一番下にはそれぞれの合計値が表示されます。
|-
|-s||#no_mgs命令を無視して強制的にデータをセーブします。
|-
|-n||データをセーブしません。デバック中は-pと併用するといいでしょう。
|-
|-e||CP/Mファンクションのみを使用します(後述の補足参照)。
|-
|}
 
 
== 制御命令 ==
トラックバッファを割り当てます。通常、トラックバッファはそのトラックを初めて使用する時に自動的に(16K÷総トラック数(16又は18)バイトが)確保されますが、多くのMMLを書き込むトラックがある場合はこの命令であらかじめ確保しておいて下さい。
例:#alloc 0=100 ← トラック0に100バイトを割り当てる。
#alloc { 3=100,
5=256 } ← 1度複数のトラックバッファを確保する場合。
トラックバッファの合計は16kバイトまでです。トラック0はMMLを書き込むのではなく、音色設定等で使用されます。通常は設定しなくても初期値で十分足ります。
とします。文字列は引用符で囲まれていなければなりません。定義番号は0~127の範囲です。番号を省略すると直前に指定された番号(初期値0)+1が用いられます。コントロールコードなどはエスケープ記号(\)を使用して、指定したいキャラクタのコードに40Hを足したキャラクタを書きます(^Cなら\C、^Zなら\Z)。それ以外に次のような指定も可能です。
    \\ \を意味する。
\" "を意味する。
\x?? 16進数(2桁)で指定されたキャラクタ。
繰り返し終了位置の定義。
=====[訳注:参考 ver.2のCALL ESET(MGS-STR.DOCより)=====
★CALL ESET(n,n$[)]
 エンベロープ・パターンを定義します。このエンベロープ機能がドライバの一番の
 「売り」だったりします(^_^) うまく使えば、スナッ○ャーのPSGドラムも完
 璧に再現出来ます。音色番号(n)は0~63で、そのままPSG音源の@コマンド
 に対応します。SCC音源、FM音源でエンベロープを使用したい場合には、@E
 コマンドでエンベロープを音色にコピーしなければなりません。音色データ(n$)は、
 パターンを表す文字列を並べたものです。形式は次の通りです。
 "モード値,ノイズ周波数,エンベロープ・データ"
 《1》モード PSGのトーン・ノイズのオン・オフを設定します。0は
変化なし、1はトーン、2はノイズ、3はノイズとトーン
です。省略すると1です。PSG音源以外では無視されま
す。Ver2.20 まで 0 は「音を出さない」だったのですが
こちらの方が利用価値があると思い、変更しました。
 《2》ノイズ周波数 PSGのノイズ周波数を設定します。モードが2か3の時
のみ有効です。値は0~31、省略時は0です。PSG音
源以外では無視されます。
※これらのパラメータは@コマンドを実行した時点で設定
されるだけです。
 《3》エンベロープ 音量は、16進数で表します。0~Fで、0が最小、Fが
最大になります。単に、"音量"とすると1カウント(60
分の1秒)待ってから次のデータを読みます。エンベロー
プ・パターンを最後まで処理してしまった場合は、最後の
音量が出っぱなしになります。例えば_ESET(0,"fcccba9")
は、fcccba9999・・・・と、なります。エンベロープ中では以
下のコマンドが使用出来ます。
 (1)Nノイズ周波数 PSG音源のノイズ周波数を設定します。《2》と同じで
す。PSG音源以外では無視されます。上の方にも書きま
したが、途中でこのコマンドを使用する場合は初めにノイ
ズ周波数を戻すようにしておかないと、そのままになって
しまいます。
 (2)*モード値 PSGのモードを設定します。《1》と同じです。PSG
音源以外では無視されます。
 (3)音量:時間 音量を出力し、指定された時間だけ待ちます。
 (4)音量=時間 現在の音量から指定された音量までを、時間で指定された
間で滑らかに変化させます。例えば、"f7=10" とすると、
"f" から "7" まで自動的に音量が変化します。
 (5)[ 繰り返しの開始位置を設定します。2ヶ所以上設定すると
後に設定された方が有効になります。繰り返し数の設定は
出来ません(無限ループになります)
 (6)] 繰り返しの開始位置まで戻ります。繰り返しの開始位置が
設定されていない場合はエンベロープの最初まで戻ります。
2ヶ所以上設定されていると先に設定された方が有効にな
ります。ループの中には、必ず音量設定コマンド(0~F
)を挟んで下さい。何も書かずに"[]" としたり、"[n6]"
とかすると暴走します。
※時間は 1/60 秒単位で、2~239です。
 (7)区切り記号 区切り記号として”,/;.”があります。これらはコマンド
の区切りに使用します。(どれを使用しても構いません)
例えば "n4" "4=3" というコマンドを並べて書くと"n44=3"
となりますが、これは "n44" "=3" に解釈されてしまいま
すのでエラーになります。そのような場合は、区切り記号
を使用して "n4,4=3" とすれば、エラーにはなりません。
∝例∵ CALL WSET(0,"2,7,fn4c:4/0=3[fc]")
↑特に意味はありません(^_^;
 
=====註:参考 ver.2の音色について mgs-mml.docより引用=====
 
■ 音色について
 音色データには、FM音源用音色(VSET 命令で定義)、SCC音源用音色(WSET
命令で定義)、エンベロープ(ESET 命令)があり、それぞれ64種、計192種ま
で定義する事が出来ます。FM音源用音色と、SCC音源用音色はそれぞれの音源
専用で、他の音源(トラック)には使用出来ません。エンベロープはPSG固有のデ
ータ(ノイズやモードなど)は無視されますが、FM音源とSCC音源にも使用可能
です。1度@コマンドで音色を変更して、@E コマンドで使用するエンベロープを
コピーして下さい。なお、ここで書いているエンベロープとFM音源の AR,DR,SL,RR
(FM音源音色のパラメータ)は全く別物です。
_TRK(9,"@1@e6 cdef @6cdef @1cdef"
 この例では、トラック9(FM音源トラック)に、MMLを書き込んでいます。ま
ず、"@1" で音色を変更します(0~14まではオリジナル音色ではないので、OPLL
で定義されている内蔵音色(音色表を参照)になります)"@e6" でエンベロープデー
タ(この場合、_ESET(6,・・・・ で定義されたデータ)を現在選択中の音色("@1")に
コピーします。結果として、"cdef" は 「"@1" の音色(ギター)で、6番のエンベ
ロープが掛かった音」で演奏されます。次に "@6" で音色を変更して、普通に "cdef"
を演奏します。次は、"@1" で "cdef" が演奏されますが、この音色にはエンベロー
プがコピーされているので1番最初の "cdef" と同じ音で演奏されます。1度コピー
されたエンベロープを解除するには、未定議のエンベロープをコピーして下さい。エ
ンベロープ10番に何も定義していないのなら、"@1@e10" でエンベロープは解除さ
れます。SCC音源にエンベロープを使用する場合も同じです。
=====@<音色番号>=====
音色データの変更を行ないます。SCC音源およびFM音源のみ有効です。エンベロープは変更されず、音色データのみが変更されます。当然、@v(@s)でその音色が定義されていなければなりません。
エンベロープデータを定義します。
====Mode ... ====@eと同じ ====Noise .. . ====@eと同じ
AL,AR,DR,SL,SR,RRについて簡単に説明します。それぞれの値の範囲は0~255です。
例:@s02 = { 7f7f7f7f 7f7f7f7f 7f7f7f7f 7f7f7f7f ;PSG
80808080 80808080 80808080 80808080 }
===@v<number> = { data ... }===
FM音源のオリジナル音色を定義します。
例:@v15 = { ;BRASS ; TL FB 25, 7, ; AR DR SL RR KL MT AM VB EG KR DT
8, 8, 1, 2, 0, 0, 0, 1, 0, 0, 0,
8, 2, 1, 1, 1, 1, 0, 1, 0, 0, 0 }
パラメータの並びは旧MGSDRVの_VSETCと同じです。
 
=====[訳注:参考 ver.2のCALL VSETCをmgs-str.docより引用]=====
 
★CALL VSETC(No,TL,FB,AR,DR,SL,RR,KL,MT,AM,VB,EG,KR,DT
,AR,DR,SL,RR,KL,MT,AM,VB,EG,KR,DT[)]
 FM音源の音色を定義します。音色番号(No)は0~63で、そのままFM音源トラ
 ックの@コマンドに対応します。音色データは一度に全てのパラメータを数値で与
 えます。それぞれのパラメータの意味と、値の範囲は次の通りです。
 No:音色番号(15~63)   |TL:トータルレベル(0~64)
 FB:フィードバック(0~7)   |AR:アタックレート(0~15)
 DR:ディケイレート(0~15)   |SL:サスティンレベル(0~15)
 RR:リリースレート(0~15)   |KL:キースケールレベル(0~3)
 MT:マルチプル(0~15)   |AM:トレモロ(0=OFF、1=ON)
 VB:ビブラート(0=OFF、1=ON)   |EG:エンベロープタイプ(0=減衰音、1=持続音)
 KR:キースケールレート(0~1)   |DT:半整流(0=OFF、1=ON)
 1行目の AR から DT まではモジューレータ、2行目はキャリアになります。
 ∝例∵ (20番に音色定義)
 10 ' No TL FB AR DR SL RR KL MT AM VB EG KR DT
 20 _VSETC(20,25, 7, 8, 8, 1, 2, 0, 0, 0, 1, 0, 0, 0 ← モジュレータ
  , 8, 2, 1, 1, 1, 1, 0, 1, 0, 0, 0) ← キャリア
 この音色をMML中で鳴らすには、
 _TRK(9,"v15@20cdef
   ↑(音色番号)
 とでもすればいいでしょう。有名ですが、OPLLのオリジナル音色は複数を同時
 には鳴らせません(エコー中の音色切り替えに注意!)
===@#<number> = <n>===
音色に割り付けられているROM音色番号を変更します。MGSCでは@0~@14にそれぞれ、1~15のROM音色を割り当てています。@15以上はすべて0(オリジナル音色)となっていますので、@vでの音色設定は<number>が15以上である場合のみ意味を持ちます。@#はそれぞれの音色に割り当てられているROM音色番号を変更するものです。<n>は0~15で、0がオリジナル音色を意味します(その他の番号については後述)。
 
=====註:参考 ver.2の音色について mgs-etc.docより引用=====
===============================================================================
== MGSDRV Version 2.35 ==
== ==
== Copyright(C) 1991,1992 by Ain. ==
===============================================================================
●FM音源の音色データ構成(CALL VSET の形式)
BASICで使用する音色データとは並び方もバイト数も違いますが、バイトごとの
内容はほんとんど同じです。DCとDMはBASICにはないパメータですが、特に使
う必要はないと思いますので説明は省略します。(実はよく知らなかったりする(笑)
MuSICAで「ディストーション」となっているパラメータです)
(C)はキャリア、(M)はモジュレータを示します。
※ **** は空きです。(書き込んでも何も起こりません)
  Byte はOPLLのレジスタ番号とも対応しています。
Byte Bit
+-----+---7----+---6----+---5----+---4----+---3--------2--------1--------0----+
| 00 | (C)AM | (C)VIB | (C)EG | (C)KSR | (C)MULTIPLE |
+-----+--------+--------+--------+--------+-----------------------------------+
| 01 | (M)AM | (C)VIB | (C)EG | (C)KSR | (M)MULTIPLE |
+-----+--------+--------+--------+--------+-----------------------------------+
| 02 | (M)KSL | TOTAL LEVEL |
+-----+-----------------+--------+--------+--------+--------------------------+
| 03 | (C)KSL | ****** | DC | DM | FEED BACK |
+-----+-----------------+--------+--------+--------+--------------------------+
| 04 | (M)ATTACK RATE | (M)DECAY RATE |
+-----+-----------------------------------+-----------------------------------+
| 05 | (C)ATTACK RATE | (C)DECAY RATE |
+-----+-----------------------------------+-----------------------------------+
| 06 | (M)SUSTAIN LEVEL | (M)REREASE RATE |
+-----+-----------------------------------+-----------------------------------+
| 07 | (C)SUSTAIN LEVEL | (C)REREASE RATE |
+-----+-----------------------------------+-----------------------------------+
●音色対応表
FM-PAC(MSX-MUSIC)と、MGSDRVとの音色対応表です。音色
名にカッコが付いているのはFM-PAC(MSX-MUSIC)での音色名です。
カッコがないものは、YM-2413カタログ(YAMAHA)に記載されている音
色名です。
+------+------+---------------------------------------------+
|MGSDRV|FM-PAC| 音色名 |
+------+------+---------------------------------------------+
| 0 | 2 | バイオリン |
| 1 | 10 | ギター |
| 2 | 0 | ピアノ(ピアノ1) |
| 3 | 3 | クラリネット |
| 4 | 4 | フルート(フルート1) |
| 5 | 5 | オーボエ |
| 6 | 6 | トランペット |
| 7 | 9 | オルガン |
| 8 | 48 | ホルン |
| 9 | 24 | シンセサイザー |
| 10 | 14 | ハープシコード(ハープシコード1) |
| 11 | 16 | ビブラフォン |
| 12 | 23 | シンセ・ベース |
| 13 | 33 | ウッド・ベース(エレクトリック・ピアノ2) |
| 14 | 12 | エレキ・ベース(エレクトリック・ピアノ1) |
| 15 | | |
| : | 63 | オリジナル音色 |
| 63 | | |
+------+------+---------------------------------------------+
● FMBIOS の音色一覧表
 CALL VSET 、CALL VCHG で "@" を指定した時に、使用出来る音色の一覧です。
+--+---------------+--+---------------+--+---------------+--+---------------+
|No| Voice name |No| Voice name |No| Voice name |No| Voice name |
+--+---------------+--+---------------+--+---------------+--+---------------+
| 0|Piano 1 |16|Vibraphone |32|Piano 3 |48|Tube |
| 1|Piano 2 |17|Koto 1 |33|E.Piano 2 |49|Shamisen |
| 2|Violin |18|Taiko |34|Santool 2 |50|Magical |
| 3|Flute 1 |19|Engine 1 |35|Brass |51|Huwawa |
| 4|Clarinet |20|UFO |36|Flute 2 |52|Wander Flat |
| 5|Oboe |21|Synth. Bell |37|Clavicode 2 |53|Hardrock |
| 6|Trumpet |22|Chime |38|Clavicode 3 |54|Machine |
| 7|Pipe Organ |23|Synt. Bass |39|Koto 2 |55|Machine V |
| 8|Xylophone |24|Synthesizer |40|Pipe Organ 2 |56|Comic |
| 9|Organ |25|Synt.Percussion|41|PohdsPLA |57|SE-Comic |
|10|Guiter |26|Synt. Rhythm |42|RohdsPRA |58|SE-Laser |
|11|Santool 1 |27|Harm Drum |43|Orch L |59|SE-Noise |
|12|E.Piano 1 |28|Cowbell |44|Orch R |60|SE-Star 1 |
|13|Clavicode 1 |29|Close Hi-hat |45|Sy. Violin |61|SE-Star 2 |
|14|Harpsicode 1 |30|Snare Drum |46|Sy. Organ |62|Engine 2 |
|15|Harpsicode 2 |31|Bass Drum |47|Sy. Brass |63|Silence |
+--+---------------+--+---------------+--+---------------+--+---------------+
 
=====註:参考 Tone Data YM2413データシートより引用=====
 
+--+---------------+--+---------------+
| | Instrument | | Instrument |
+--+---------------+--+---------------+
| 0| Original | 8| Organ |
+--+---------------+--+---------------+
| 1| Violin | 9| Horn |
+--+---------------+--+---------------+
| 2| Guitar |10| Synthesizer |
+--+---------------+--+---------------+
| 3| Piano |11| Harpsichord |
+--+---------------+--+---------------+
| 4| Flute |12| Vibraphone |
+--+---------------+--+---------------+
| 5| Clarinet |13|SynthesizerBass|
+--+---------------+--+---------------+
| 6| Oboe |14| Accoustic Bass|
+--+---------------+--+---------------+
| 7| Trumpet |15|Electric Guitar|
+--+---------------+--+---------------+
※注:SMSPower.orgでもこの音色名が使われている
== コメント ==
指定されたリズム音を発生。":"を指定すると音長をデフォルトと見なす(例:bh4 bh:)。リズム音トラック以外では無効。
 
=====註:参考 MSX-MUSIC拡張BASIC MSX Datapack Wiki 3.2より部分引用=====
 
{|class="wikitable"
|文字 ||意味
|-
|B ||バスドラム音を発生
|-
|S ||スネアドラム音を発生
|-
|M ||タムタム音を発生
|-
|C ||シンバル音を発生
|-
|H ||ハイハット音を発生
|}
 
=====註:参考 ver.2でのリズム音源コマンドについて mgs-mml.docから引用=====
 
■ 補足説明
★リズム音源のコマンドについて
 リズム音源の書き方はBASICと大体同じです。アクセント音量は指定出来ませ
 んが、これはVコマンドで個々のリズム楽器の音量を指定することで同じような事
 行なえます。
 リズム音源ではLコマンドが使えます。使い方は普通のLコマンドと同じですが、
 1度に複数の音が出せるため区切り記号として;(セミコロン)を間にいれます。
∝例∵ bh16h16h16h16sh16h16h16h16
l16bh;h;h;h;sh;h;h;h;
===\<n>===
===(1) テンポについて===
 MGSCではどのようなテンポを設定しても、トラック間の演奏ずれMGSCではどのようなテンポを設定しても、トラック間の演奏ずれ(いわゆるテンポずれいわゆるテンポずれ)は絶対に起こりませんが、演奏中にテンポを変更する場合は注意が必要です。テンポの変更は絶対に起こりませんが、演奏中にテンポを変更する場合は注意が必要です。テンポの変更(最初に設定する場合は、#tempoを使用して下さい)は必ず1番最初のトラックで行ない、途中で変更する場合は他のトラックとタイミングを合わせて行なわなければなりません。は必ず1番最初のトラックで行ない、途中で変更する場合は他のトラックとタイミングを合わせて行なわなければなりません。
例:1 t86l4ct190def 2 l8ccddeeff 3 l16cdecdecd
 上の例のような位置で変更する場合、ずれは起こりませんが次の例のような場合はテンポの変更位置が2、3トラックで音程を発生している途中ですので、ずれが起こります。上の例のような位置で変更する場合、ずれは起こりませんが次の例のような場合はテンポの変更位置が2、3トラックで音程を発生している途中ですので、ずれが起こります。
例:1 t86l8ct190def 2 l4cdef 3 l4gggg
 テンポはトラック毎に独立しません。上の2つの例はトラック2、3ではテンポが設定されていませんが、トラック1で変更された時点テンポはトラック毎に独立しません。上の2つの例はトラック2、3ではテンポが設定されていませんが、トラック1で変更された時点(正確には、次の音符発生)で他のトラックも影響を受けます。例を挙げますと、次のようなテンポの設定はトラックバッファを消費するだけです。で他のトラックも影響を受けます。例を挙げますと、次のようなテンポの設定はトラックバッファを消費するだけです。
例:1 t86cdet90cdet100cdef
===(2) 音長指定について===
 MGSCのMGSCの"%"指定による音長指定の意味は、旧MGSDRVと異なります。旧MGSDRVではテンポによって値が異なりましたが、MGSCではテンポの影響を受けません。例えば4分音符は常に指定による音長指定の意味は、旧MGSDRVと異なります。旧MGSDRVではテンポによって値が異なりましたが、MGSCではテンポの影響を受けません。例えば4分音符は常に%48です。MGSCでは192で割り切る音長を使用する限り、%で音長を指定する必要はありません。5連符などは192では割り切れませんので、そのような場合は適当に等分した音長をで音長を指定する必要はありません。5連符などは192では割り切れませんので、そのような場合は適当に等分した音長を%で指定する必要があります。 使用可能な最短音長はテンポによって影響を受けます使用可能な最短音長はテンポによって影響を受けます(MGSDRVでは1/60秒以下の音長を発生することはできません60秒以下の音長を発生することはできません)。あるテンポでの最短音長は次の式で計算できます。
14400÷テンポ = 最短音長(小数点は切り捨て)
 ただしこの式での答えが、192を超えても最短音符は192分音符となります。ただしこの式での答えが、192を超えても最短音符は192分音符となります。
===(3) MGSDRVの検索について===
 <nowiki>-pオプションで演奏させるには、MGSDRVが必要になります。常駐していれば、それp</nowiki>オプションで演奏させるには、MGSDRVが必要になります。常駐していれば、それ
を使用しますが、常駐していない場合は環境変数mgsdrvで指定されたファイルを読み
込みます。DOS1ではカレントドライブからMGSDRV.COMを検索します。
 音色名はMSX-MUSICと異なります。
音色番号 ROM音色番号 音色名  0 1 バイオリン
1 2 ギター
2 3 ピアノ
4 5 クラリネット
5 6 オーボエ
  6 7 トランペット
7 8 オルガン
8 9 ホルン
  9 10 シンセ
10 11 ハープシコード
11 12 ビブラフォン
14 15 エレキベース
15 0
  : : オリジナル音色
31 0