MGSDRV MML 11 JP

From MSX MUSIC WIKI
Revision as of 05:55, 20 June 2018 by Kumokosi (talk | contribs) (使用方法)
Jump to: navigation, search

MGSC MML compiler version 1.11 Copyright(c) 1992-93 by Ain

テキストファイルに書かれたMMLをMGSフォーマットの演奏データへ変換します。

使用方法

書式:MGSC <Source file[.MUS]> [<Object file>] [Option]

<Source file>
MMLソースのファイル名を指定します。拡張子を省略すると.MUSと見なします。
[<Object file>]
コンパイル後のデータのファイル名を指定します。省略された場合は<Source file>と同じファイル名になります。
※ DOS2では、ファイル名にパスを含めることができます。
[Option]

 オプションです。使用可能なものは以下の通りです。

確保(#allocなどで)されたバイト数
実際に使用しているバイト数
残りバイト数
となっています。一番下にはそれぞれの合計値が表示されます。


制御命令

#opll_mode <0|1>

OPLLのモード。0はFM9音モード、1はFM6音+リズム音モード。この命令を実行しないと他の制御命令(MMLも)は一切使用できませんので、必ず最初に実行するようにして下さい。

#machine_id <0~7>

データを作成(コンパイル)した機種コードを指定します。この機種コードに対応しているプログラムでは、どのメーカーのマシンでも音量バランスが一定になるように補正を行います。機種コードは今のところ以下の番号が予約されています。

 1:SONY製マシン
 2:Panasonic製マシン
 3:SANYO製マシン

上記以外の機種コードは無効になります(使用しないで下さい)。それらのマシンは0(省略値)を設定して下さい。

#lfo_mode <0|1>

LFOのモード。1を指定するとLFOの速度が若干速めになります。初期値は0です。

#title <"string">

データのタイトル名を定義します。数行に渡って書きたい場合は"{~}"で囲んで下さい。長さは1kバイトまでです。コメントなどを含んでも構いません。

例:#title {   "Falcom  Ys morning grow"
		"要SCC"				}

引用符(")を文字列中に含ませたい場合は2つ並べて書いて下さい。タイトル名が80文字を超えるとObject too bigエラーが発生する場合がありますが、大抵、#allocを使用してトラックバッファを確保(自動的に確保されるバイト数より減らす)すれば抑えられます。

#alloc <track no. = bytes>

トラックバッファを割り当てます。通常、トラックバッファはそのトラックを初めて使用する時に自動的に(16K÷総トラック数(16又は18)バイトが)確保されますが、多くのMMLを書き込むトラックがある場合はこの命令であらかじめ確保しておいて下さい。

例:#alloc 0=100 ← トラック0に100バイトを割り当てる。

    #alloc {	3=100,

5=256 } ← 1度複数のトラックバッファを確保する場合。

トラックバッファの合計は16kバイトまでです。トラック0はMMLを書き込むのではなく、音色設定等で使用されます。通常は設定しなくても初期値で十分足ります。

#psg_tune { cの音程データ,c#の音程データ .... bの音程データ }

PSG音源およびSCC音源の音程の元となるデータを変更します。それぞれのデータはオクターブ1の音程データです(範囲は0~4095。12音程分必要)。通常、使用する必要はありません。

#opll_tune { cの音程データ,c#の音程データ .... bの音程データ }

FM音源の音程の元となるデータを変更します。それぞれのデータはオクターブ1(block情報を除く)音程データです(範囲は0~511。12音程分必要)。通常、使用する必要はありません。なお、この命令を使用するとMMLの@\(デチューン微調整)が狂います(仕様)。

#tempo <57~2047>

テンポを設定します。ソース中、1回のみ有効です。最初にテンポを設定するときはMMLのtコマンドではなく、できるだけこちらを使用して下さい。初期値は120です。

#macro_offset <定義文字 = no>

1文字の英文字(A-Z)にマクロのオフセット番号を定義します。通常、マクロの指定は0-255の数値で行いますがこの命令を使用すると、各文字にオフセット番号を割り当てる事ができ、使用目的が分かりやすくなります。

 例:#macro_offset  a = 32
    *48 = { cdefgab }

    *a16でマクロ番号48を呼び出したのと同じ結果になります。
    #macro_offset { a = 32,
                    c = 16 }
    *20 = { t150 }
    *40 = { v15 }
    *42 = { l16 }
    1 *c4*a8*a10

    トラック1には、"t150v15l16"が書き込まれます。

この指定(*a16など)は、マクロ番号を扱う全ての命令、MMLで使用出来ます。内部でマクロ番号に変換しているだけですので、重複したりオフセット+値の結果が255を超えないように注意して下さい。

#play_start

コンパイル終了後、演奏を開始します。コマンドラインの-pと同じ。

#no_mgs

.MGSファイルを作りません。コマンドラインの-nと同じ。

#track_status

コンパイル終了後トラック毎の使用状態を表示します。コマンドラインの-tと同じ。

#play_track

演奏開始時に指定されたトラックのみを演奏させます。MGSCで演奏する場合のみ有効です。この命令を省略した場合は、全てのトラックが演奏されます。

例:#play_track 367ABR

    トラック3,6,7,A,B,Rのみを演奏する。

なお、この命令は演奏させるトラックを指定するだけで実際に演奏はしません。

#end

ソースの終わりを定義します。MGSCはこの命令が現われた行でコンパイルを終了します。普通は<EOF>をソースの終わりと見なしますので、この命令は省略できます。

#disenable_mgsrc

mgsrc.comで逆コンパイルできないように禁止属性を掛けます。乱用はあまりお薦め出来ませんが・・・。

マクロ定義

MGSCではマクロを定義することができます。マクロの呼び出しは、MMLの"*"コマンドで行ないます。マクロ定義の段階では、内容についての解釈を一切行ないませんのでエラーはマクロを呼び出している行で発生します。

定義の方法は行の先頭で、

*<マクロ番号> = { 文字列 }

とします。マクロ番号の範囲は0~255です(オフセット指定も可能)。文字列は数行に渡って書いても構いませんが、終わりには必ず"}"を書いて下さい。再定義(同じマクロ番号に対して2回以上定義すること)はできません。マクロ全部の長さは4kバイト以内にして下さい。

プログラム制御用文字列定義

音色定義

コメント

MMLを含む、すべての行の中に";"(セミコロン)が見つかると、それ以降から行の終 わり(CRLF)までをコメントと見なして無視します。

MMLについて

エラーについて

MGSCはソース中に1つでもエラーが発見されると、適当なエラーメッセージを表示してコンパイルを中断します。

<エラーの原因> in <行番号>
>> <その行の内容(全部)>

エラーの原因は、漢字ドライバが起動している場合は漢字で、テキストの場合は英字で表示されます。行番号は0から数えています(KID.COM,AKID.COMでは表示と一致します)。なお、表示された行にエラーがあるとは限りませんので注意して下さい(特にマクロ使用時や"{"-"}"での"}"を忘れた場合など)。

補足

変更点