主にMSX関係のコンテンツが置いてあります。

シーケンス - 特殊

@m1on @m1off

使用場所
シーケンス:SCC
書式
@m1on
書式
@m1off
@m1on cde
解説

SCCチャンネルで特殊モードを設定します。@m1onは周波数を書き込んだときに、波形の頭から再生するモードになります。@m1offで通常モードになります。

周波数を書き込んだ時に位相がリセットされるので、ピッチエンベロープを使用すると、まともな音になりません。

@m2on @m2off

使用場所
シーケンス:SCC
書式
@m2on
書式
@m2off
@m2on cde
解説

SCCチャンネルで特殊モードを設定します。@m2onは@seで波形を切り換えたときに、波形を頭から再生します。@m2offで通常モードになります。

@m3on @m3off

使用場所
シーケンス:SCC
書式
@m3on
書式
@m3off
@m3on cde
解説

音を発音する時に波形を頭から再生します。@m3offで通常モードになります。

@m1onと違い1音単位なので、ピッチエンベロープを掛けることができます。

@pcm2on @pcm2off

使用場所
シーケンス:s4
書式
@pcm2on
書式
@pcm2off
s4= @w100 @pcm2on o8 v15 bagfe
s5= @w100 o8 v15 bagfe
解説

s4でのみ使用可能な特殊コマンドです。@pcm2onで同じPCMをs4とs5で同時に発音し、音量を大きくします。メガROMSCCの1ch分音色データレジスタが少ない制限を逆手に取り、同時発音するので全くずれること無く発音します。@pcm2offで解除します。

このモードに入ると、s5は基本的にコントロールできず、s4に従います。s5で音量だけはコントロール可能でs4でv15,s5でv15とすると出力されるPCMのダイナミックレンジがv15の2倍になります。ただし、聴感上は少し大きくなった程度にしか感じません。

基本的にs4とs5は同じ演奏をするMMLを書きます。ボリュームだけは組み合わせて細やかに調整することが可能です。

@vadjon @vadjoff

使用場所
シーケンス:ADPCM
書式
@vadjon
書式
@vadjoff
@vadjon cde
解説

ADPCMの音量は256段階もありますが、音量カーブがリニアなので聴感上は音量が大きいほど細かく、小さいほど荒く感じます。

例えば、@va100=[ @255,1 : -1,1]のボリュームエンベロープをv255で実行したときはなかなか減衰せず、v32で実行したときはあっという間に消音する事になります。

そのままでは、ボリュームエンベロープを適用しにくいので、PSGの音量カーブの様に、値が大きいほど増減幅が大きく、小さいほど細かくなる様に補正をドライバ側で掛けます。

ドライバ側で掛けるので複雑な計算ではなく、大雑把で簡単な計算ですが、これにより、ある程度ボリュームエンベロープが実用的になります。

補正が掛かるのは、@vaの相対指定のみであり、絶対指定やvコマンドには無効です。

@amon @amoff

使用場所
シーケンス:Y8950
書式
@amon
書式
@amoff
@amon cde
解説

@amonで振幅変調の深度フラグを1にし、@amoffで0にします。

0=1db,1=4.8dbとなりますが、blueMSXでは再現されません。

@vibon @viboff

使用場所
シーケンス:Y8950
書式
@vibon
書式
@viboff
@vibon cde
解説

@vibonでビブラートの深度フラグを1にし、@viboffで0にします。

0=7セント,1=14セントとなりますが、blueMSXでは再現されません。

; // /* */

使用場所
どこでも
書式
;
書式
//
書式
/* */
;コメント
//コメント
/*コメント
コメント
*/
解説

コメントコマンドです。;と//はその行の終わりまでコメントとし、/*は*/までコメントとします。

@offsets @offsete

使用場所
シーケンス:全チャンネル
書式
@offsetsクロック値 ~ @offsete オフセット終了音
@offsets2 cdef @offsete g
解説

@offsetsでオフセットを開始します。このコマンドの次の音長計算にクロック値を加算します。加算時クロックが0以下や65536以上になるとエラーになります。@offseteでオフセットを終了します。次の音長計算でオフセット分を相殺します。

クロック値の範囲は-32768〜32767。@offseteコマンドとセットにして使用します。

t120@offsets100 cde @offsete f16
とした場合、最初のcにクロック100が加算されます。そして@offseteでf16から100クロック引かれます。しかしt120でf16の場合100クロック引くとマイナスになってしまうのでエラーになります。

%

使用場所
シーケンス:全チャンネル
書式
%
書式
%クロック値
cde% %4gfedc
解説

強制テンポ合わせ、もしくはオフセットコマンドです。クロック値を用いて使用するとオフセットコマンド、単独で使用すると強制テンポ合わせコマンドとして働きます。

強制テンポ合わせコマンドの場合、演奏参加チャンネルの全てがこのコマンドを実行するまで、音を鳴らしながら停止します。必ず全チャンネル、同時に演奏する箇所に挿入して下さい。

オフセットコマンドとして使用する場合、クロック値の範囲は-32768〜32767で、@offsetsとの違いはずれたままでコンパイルがエラーにならない点にあります。

@no @on

使用場所
シーケンス:全チャンネル
書式
@no
書式
@on
s1=@no
解説

@noがコンパイル拒否コマンドで、シーケンスデータのどこかにこのコマンドを書き込むと、コンパイル時そのチャンネルはデータに出力されません。テストで、そのチャンネルを一時的に消したい場合に使います。

内部的にはコンパイルの解釈はされていますので、このコマンドを使用してもコンパイル時間は変わりません。

@onはコンパイル許可コマンドで、@noの反対の動作を行います。

1チャンネルでもこのコマンドを使用すると、このコマンドを使用したチャンネル以外、@no使用状態になります。

例えばs1,s3で@onを使用すると、s1,s3だけがコンパイル対象となります。

@info

使用場所
シーケンス:全チャンネル
書式
@info
s1=cdef@infogab
解説

コンパイル時にそのコマンドの位置の情報を出力します。出力されるのはクロック地と、パラメータで、パラメータの詳細は音源ごとに異なります。

その地点でのクロック値がでますので、各チャンネルにこのコマンドを書いておけば、クロックの比較、確認ができ入力したMMLがずれていないか等をチェックできます。デバッグ用のコマンドです。

/

使用場所
シーケンス:全チャンネル
書式
/マクロ名
/"macro1"
解説

マクロコマンドです。マクロ定義名はダブルクォーテーションで囲んだ文字列と、囲んでいない文字列が使用可能です。囲まない場合は、定義名の後ろに空白か行末がくる必要があります。

例:
/m1 /m2 /m3
/"m1"/"m2"/"m3"

また、囲まない場合マクロ定義名に大文字は指定できません。それはコンパイル時に小文字として処理されるからで、大文字として解釈したい場合はダブルクォーテーションで囲む必要があります。

例えばマクロ"ABC"が定義されているとして、/ABCは/abcと解釈され、マクロ"abc"は定義されていないのでエラーとなります。/"ABC"とすると回避できます。

マクロ定義名には$chという変数が使えます。これは解析時にそのチャンネル名が入るという物で、p1=/"$chmacro"はp1=/"p1macro"として、s1=/"$chmacro"はs1=/"s1macro"として扱われます。

共通の記述をしていても、チャンネルによって呼び出すマクロを変えたい場合に使えます。

@epton @eptoff

使用場所
シーケンス:全チャンネル
書式
@epton
書式
@eptoff
解説

他音源専用命令を実行した場合、通常はエラーになりますが、@eptonとすると他音源専用命令は無視されることになります。デフォルトはoff。

例:f1=@va100 @v100 cde
[@eptoff] OPLLチャンネルで@vaは使えないのでエラー発生。
[@epton] @va100を無視し@v100以降は通常通りコンパイルされる。

コンパイラは無視する命令でも解釈しながらコンパイルしていて、定義名が必要なコマンドやq2定義名を指定できないコマンドで定義名を書かなかったりq2定義名を書いたりした場合にはエラーを出します。無視する場合でも次のMMLコマンドを探す為には、定義名込みで無視する必要があり、その定義名が無かったり、不必要な定義名が有ったりした場合は次のMMLコマンドを探せ無いのでエラーになります。

ただし詳細には解釈せず、その定義名を定義していない場合等にはエラーを出しません。

@p{} @sm{} @ss{} @f{} @y{} @ad{}

使用場所
シーケンス:全チャンネル
書式
@p{}
書式
@sm{}
書式
@ss{}
書式
@f{}
書式
@y{}
書式
@ad{}
解説

限定コンパイルを行います。{}で括った内容は該当チャンネルでのみ適用され、他のチャンネルでは無視されます。{}で括れるのは1行以内に限定されます。該当チャンネルは

  • @p{}……p1~p3
  • @sm{}……s1~s5
  • @ss{}……s6~s10
  • @f{}……f1~f9
  • @y{}……y1~f9
  • @ad{}……ad

となっています。

例:
@p{cde}@f{fga}c

PSGチャンネルではcdecとコンパイルされ、OPLLチャンネルではfgacとコンパイルされ、その他のチャンネルではcとだけコンパイルされる。