MGSDRV MML 11 JP
MGSC MML compiler version 1.11 Copyright(c) 1992-93 by Ain
テキストファイルに書かれたMMLをMGSフォーマットの演奏データへ変換します。
Contents
- 1 使用方法
- 1.1 #lfo_mode <0|1>
- 1.2 #title <"string">
- 1.3 #alloc <track no. = bytes>
- 1.4 #psg_tune { cの音程データ,c#の音程データ .... bの音程データ }
- 1.5 #opll_tune { cの音程データ,c#の音程データ .... bの音程データ }
- 1.6 #tempo <57~2047>
- 1.7 #macro_offset <定義文字 = no>
- 1.8 #play_start
- 1.9 #no_mgs
- 1.10 #track_status
- 1.11 #play_track
- 1.12 #end
- 1.13 #disenable_mgsrc
- 2 マクロ定義
- 3 プログラム制御用文字列定義
- 4 音色定義
- 5 コメント
- 6 MMLについて
- 7 エラーについて
- 8 補足
- 9 変更点
使用方法
書式:MGSC <Source file[.MUS]> [<Object file>] [Option]
- <Source file>
- MMLソースのファイル名を指定します。拡張子を省略すると.MUSと見なします。
- [<Object file>]
- コンパイル後のデータのファイル名を指定します。省略された場合は<Source file>と同じファイル名になります。
- ※ DOS2では、ファイル名にパスを含めることができます。
- [Option]
オプションです。使用可能なものは以下の通りです。
確保(#allocなどで)されたバイト数 | |
実際に使用しているバイト数 | |
残りバイト数 | |
となっています。一番下にはそれぞれの合計値が表示されます。 |
上記以外の機種コードは無効になります(使用しないで下さい)。それらのマシンは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では表示と一致します)。なお、表示された行にエラーがあるとは限りませんので注意して下さい(特にマクロ使用時や"{"-"}"での"}"を忘れた場合など)。