--------------------
mucomDotNET
 簡易マニュアル
--------------------

※mucom88と比較して、既存コマンドに追加された機能、または新コマンド、内部コマンドのみ記します

！！注意！！
独自機能を使用し作成したmubファイルは、mucomDotNET以外では演奏できません。
！！注意！！


--主な追加機能--

    ・使用可能音源が5つ
      既存のOPNA1枚に対し、mucomDotNETでは以下の5枚が同時使用可能です。
      OPNA 1
      OPNA 2
      OPNB 1
      OPNB 2
      OPM
    
      もちろん、ADPCM/-A/-Bも使用可能です。
    
    
    ・広大な使用可能メモリ
      パートごとに64Kbyte使用可能です。
      メモリ制限に苦しむ必要はほぼありません。
    
    
    ・ポルタメント処理の見直し
    
    
    ・ADPCMの定義
      mml中でwavファイルを指定するだけで使用可能です。
    
    
    ・効果音モードに対応。
      mml2vgmと同じように使用できます。
      レジスタマップと睨めっこする必要はありません。
    


--タグ--

タグ
    #Driver
書式
    #Driver str
値の範囲
    str : mucomDotNET
内容
    mucomDotNETの独自機能を使用することを指定します。デフォルト値です。


タグ
    #CarrierCorrection
書式
    #CarrierCorrection str
値の範囲
    str : Yes , No
内容
　　FMの音色定義のキャリアの値を反映するモードを使用するかどうか指定します。
    デフォルト値は「No」で「使用しない」です。

    モード         デフォルト値        備考
  ----------------------------------------------------------------------
    mucomDotNET　　機能無効            タグにYesを設定することで機能有効
    それ以外       機能無効(使用不可)  yコマンドで頑張るべし


タグ
    #PCMInvert
書式
    #PCMInvert str
値の範囲
    str : On , Off
内容
　　PCMパートの相対オクターブ変更コマンド( > , < )の意味を逆転します。
    デフォルト値は「Off」で「使用しない」です。


タグ
    #OPMClockMode
書式
    #OPMClockMode str
値の範囲
    str : normal , X68000
内容
　　OPMのマスタークロックに何を使用するか指定します。
    mucomDotNETはこのクロックに対応した音程周波数を使用します。
    デフォルト値は「normal」で3579545Hzです。
    「X68000」は4000000Hzです。


タグ
    #OPMPanReverse
書式
    #OPMPanReverse str
値の範囲
    str : On , Off
内容
　　OPMのパン値を左右反転するか指定します。
    デフォルト値は「Off」で反転しません。


タグ
    #SSGExtend
書式
    #SSGExtend str
値の範囲
    str : On , Off
内容
　　OPNA/BのSSGパートを拡張します。パンなどを指定できるようになります。(後述)
    デフォルト値は「Off」で「使用しない」です。


タグ
    #OPNA1RhythmMute
    #OPNA2RhythmMute
書式
    #OPNA1RhythmMute str
    #OPNA2RhythmMute str
値の範囲
    str : B|S|C|H|T|R
内容
　　OPNA1枚目,2枚目の指定したリズム音をミュートします。
    デフォルト値は未指定で全てのリズム音はミュートしません。
    記号は以下のように各リズム音を示します。
      B : BD , S : SD , C : Cymbal , H : Hihat , T : Tom , R : Rimshot
    ミュートしたいリズムの記号を列挙してください。
使用例
    #OPNA1RhythmMute SB
    スネアとバスドラムがミュートされます。


タグ
    #OPNB1AdpcmAMute
    #OPNB2AdpcmAMute
書式
    #OPNB1AdpcmAMute str
    #OPNB2AdpcmAMute str
値の範囲
    str : 1|2|3|4|5|6
内容
　　OPNB1枚目,2枚目の指定したadpcmAをミュートします。
    デフォルト値は未指定で全てのadpcmAはミュートしません。
    記号は以下のように各リズム音を示します。
      1 : 1ch , 2 : 2ch , 3 : 3ch , 4 : 4ch , 5 : 5ch , 6 : 6ch
    ミュートしたいadpcmAのch番号を列挙してください。
使用例
    #OPNB1AdpcmAMute 25
    2chと5chがミュートされます。


タグ
    #pcm_2nd
    #pcm_3rd_b
    #pcm_4th_b
    #pcm_3rd_a
    #pcm_4th_a
書式
    #pcm_2nd filename
    (他のタグも同様)
値の範囲
    filename : mucom88/mucomDotNET向けpcmファイル
内容
    OPNAの2枚目以降で使用するPCMファイルを指定します。
    それぞれ順番に、
    OPNA 2枚目のPCMファイル
    OPNB 1枚目のPCMファイル(ADPCM-B)
    OPNB 2枚目のPCMファイル(ADPCM-B)
    OPNB 1枚目のPCMファイル(ADPCM-A)
    OPNB 2枚目のPCMファイル(ADPCM-A)
    向けです。


タグ
    #@pcm
    #@pcm_2nd
    #@pcm_3rd_b
    #@pcm_4th_b
    #@pcm_3rd_a
    #@pcm_4th_a
書式
    #@pcm  number , name , filename , volume
    (他のタグも同様)
値の範囲
    number   音色番号   (1〜)(音色番号を指定する(OPNB ADPCM-Aの場合は音程を数値化(後述)したもの))
                        ($00〜で16進数表記可能）
                        (o0cなどで指定も可)
    name     音色名     (音色名を指定する)
    filename ファイル名 (.wavファイルを指定する)
    volume   音量       (TBD:100)(とりあえず100を指定する)
内容
    OPNA/Bで使用するPCMをwavファイルで指定します。
    それぞれ順番に、
    OPNA 1枚目のwavファイル(ADPCM向け)
    OPNA 2枚目のwavファイル(ADPCM向け)
    OPNB 1枚目のwavファイル(ADPCM-B向け)
    OPNB 2枚目のwavファイル(ADPCM-B向け)
    OPNB 1枚目のwavファイル(ADPCM-A向け)
    OPNB 2枚目のwavファイル(ADPCM-A向け)
    を指定したことになります。
    このタグを使用すると対応する#pcm...タグは無視されます。
    コンパイル時に指定したwavファイルを読み込み、ADPCMデータに変換後、mubファイルに埋め込みます。
    各ADPCM/-A/-Bパートで使用可能です。
    wavファイルは8/16bit,monoで、ADPCM-Aの場合は18.5kHzである必要があります。

    ADPCM-Aの音程について
      仕様上、ADPCM-Aは音程は固定ですが、mucomDotNETではこれを利用して、
      音程指定で音色が切り替わるようにしています。
      その時に必要になるのが各PCMを割り当てる音程を数値で指定する作業です。
      o1c は 1 になります。o2c は 17 になります。
      以下、c〜bまでの増分を示します。

       c  c+ d  d+ e  f  f+ g  g+ a  a+  b
       +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11

      数値を求める式は

        num = ( octave - 1 ) * 16 + note + 1

      となり、例えばo2eは

        ( 2 - 1 ) * 16 + 4 + 1 = 21

      で21を指定すればよいことになります。よって

      #@pcm_3rd_a 21 , シム , cymbal.wav , 100
      g @1l8v31 o2e

      でシムを発音します



--機能--

機能
    マルチチップ表記
内容
    mucomDotNETは以下の様にパート名が拡張されOPNAx2.OPNBx2,OPMの計5枚を同時使用することができます。

    既存)
     ABCDEFGHIJK   OPNAx1 (ABC:FM1/2/3 DEF:SSG1/2/3 G:Rhythm  HIJ:FM4/5/6 K:ADPCM)

    DotNET)
     ABCDEFGHIJK   OPNAx1 (ABC:FM1/2/3 DEF:SSG1/2/3 G:Rhythm  HIJ:FM4/5/6 K:ADPCM)
     LMNOPQRSTUV   OPNAx2 (LMN:FM1/2/3 OPQ:SSG1/2/3 R:Rhythm  STU:FM4/5/6 V:ADPCM)
     abcdefghijk   OPNBx1 (abc:FM1/2/3 def:SSG1/2/3 g:ADPCM-A hij:FM4/5/6 k:ADPCM-B)
     lmnopqrstuv   OPNBx2 (lmn:FM1/2/3 opq:SSG1/2/3 r:ADPCM-A stu:FM4/5/6 v:ADPCM-B)
     WXYZwxyz      OPM    (WXYZwxyz:FM1/2/3/4/5/6/7/8)     

    各々のパート割は以下の通りです。

;          | OPNA 1  OPNA 2  OPNB 1  OPNB 2  OPM     
; ---------+-----------------------------------------
; FM       | ABCHIJ  LMNSTU  abchij  lmnstu  WXYZwxyz
; SSG      | DEF     OPQ     def     opq     -       
; Rhythm   | G       R       -       -       -       
; ADPCM-A  | -       -       g       r       -       
; ADPCM/-B | K       V       k       v       -       


機能
    マルチパート表記
内容
    行頭に記述するパート名を列挙できるようにしています。
    例)
    AB abc
    AパートとBパートでabcが鳴ります


機能
    ページ表記
内容
    パート名の後に数字一文字(0〜9)を記述することでページを指定できます。
    ページを全く指定しなかった場合は0ページを指定したことになります。

    例1)
    A0 abc
    または
    A abc
    パートAのページ0でabcが鳴ります

    例2)
    A014 abc
    パートAのページ0,1,4でabcが鳴ります(優先順位処理有り：後述)

    例3)
    A014BC2 abc
    パートAのページ0,1,4,パートBのページ0,パートCのページ2でabcが鳴ります(優先順位処理有り：後述)


機能
    ページ機能
内容
    同じパートを仮想的に複数のmmlで同時に鳴らす機能です。
    実際の演奏ではページを切り替えながら優先順位の高いページの音がなります。
    ページがキーオンするときにそのページへ切り替えが行われます。
    同じタイミングでキーオンすると優先順位の高いページに切り替わります。
    優先順位はページ番号が小さい程、高いです。
    ページが切り替わる度に次のパラメータが音源に送信されます。
    　@ 音色
      v ボリューム
      p パン
      S (SSGのみ)ハードウェアエンベロープ
      m (SSGのみ)ハードウェアエンベロープスピード
      n (SSGのみ)ノイズトーン切り替え
      参照)ページ機能　復帰コマンド一覧
    リズム/ADPCM-Aパートは他のパートとは処理が異なります。
    リズム/ADPCM-Aパートは全てのページのコマンドがページのカレントに関係なく有効です
    また、ページ毎に@コマンドで指定(選択)されたリズム音色/PCM音が重なって発音されます。  
！！注意！！
    ページ表記を使用した時、出力されるmubファイルはmucomDotNET独自のフォーマットになります。
    これが演奏できるのは現状、mucomDotNETのみです。


機能
    マクロ機能
内容
    既存では0-255までだが、DotNETでは定義数を0-99999まで使用できるように拡張。


機能
    SSG拡張機能
内容
    SSGExtendタグを On に指定することにより、OPNA/BのSSG機能が拡張されます。尚、実チップでは拡張されません。
    拡張機能一覧
      -パン
      コマンド
          p
      書式
    　    pn1,n2
    　値の範囲
    　　　n1 :  1:Right 2:Left 3:Center  4:右オートパン 5:左オートパン 6:ランダムパン
          n2 :
      内容
          FMのpコマンドと同様に使用可能です

      -拡張パン
      コマンド
          pe
      書式
    　    pen1,n2
    　値の範囲
    　　　n1 :  左音量(0 〜 8)まで。0で無音、8で全開
          n2 :  右音量(0 〜 8)まで。0で無音、8で全開
      内容
          左右の音量を9段階で絞ることができます。

    　-波形変更
      コマンド
          @I
      書式
          @In
      値の範囲
          n  :  7:1/8 6:2/8 5:3/8 4:4/8 3:5/8 2:6/8 1:7/8 duty 0:8/8 Pure square wave
                8:Triangle Wave  9:Saw Wave
      内容
          SSGの波形をプリセットから選択することができます。0-7が矩形波でデューティ比の違いがあります。
          8は三角波。9はのこぎり波です。@Wと排他的に使用します。
    　-ユーザー波形選択
      コマンド
          @W
      書式
          @Wn
      値の範囲
          n  :  0-255 ユーザー定義番号
      内容
          SSGの波形を予めユーザー波形定義した波形データに変更することができます。
          @Iと排他的に使用します。
    　ユーザー波形定義
        コマンド
            @W
        書式
            @Wn
            v01,v02,v03,v04,v05,v06,v07,v08,v09,v10,v11,v12,v13,v14,v15,v16
            v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30,v31,v32
            v33,v34,v35,v36,v37,v38,v39,v40,v41,v42,v43,v44,v45,v46,v47,v48
            v49,v50,v51,v52,v53,v54,v55,v56,v57,v58,v59,v60,v61,v62,v63,v64
              n           定義番号  (n:0-255)
              vn          波形データ(vn:$80~$00~$7F(-128~0~127)) 16 個の値 x 4 行 で 計 64 個のデータが必要。書式に沿って定義してください

    -- 以下未実装 --
      フェイズリセット(TBD)       :  キーオン時に波形の開始位置をリセットする機能
      逆位相指定(TBD)             :  波形を逆位相にすることが可能



--コマンド--


-マクロシフト
コマンド
    **
書式
  **n
値の範囲
    n : シフト値
使用可能なパート
    全て
内容
    mml中でマクロを指定した際に、そのマクロ番号へこのコマンドで指定した値を加算します。
    結果、実際に演奏されるマクロは、この指定値分だけずれた番号になります。
参考
    macroShift.muc
mubファイルでのフォーマット
      -


-音色定義
コマンド
    @M
書式
  @M(音色番号)
  FB,AL
  AR,DR,SR,RR,SL,TL,KS,ML,DT,DT2 ; op1
  AR,DR,SR,RR,SL,TL,KS,ML,DT,DT2 ; op2
  AR,DR,SR,RR,SL,TL,KS,ML,DT,DT2 ; op3
  AR,DR,SR,RR,SL,TL,KS,ML,DT,DT2 ; op4
値の範囲
    音色パラメータによる
使用可能なパート
    全て(実質OPM)
内容
    OPM向けのDT2を含んだ音色定義ができます
mubファイルでのフォーマット
      -


-音色モーフィング
コマンド
    @
書式
  @n1,n2,n3[,n4]
値の範囲
    n1 : (0〜255)発音時の音色番号
    n2 : (0〜255)到達目標の音色番号
    n3 : (1〜255)変化スピード(Tick)
    n4 : (0:しない 1:する)発音ごとにリセットするか否か(省略時:1)
使用可能なパート
    FM
内容
    FB,ALG,AR〜DTｘ4オペのパラメーターを+-1ずつ変化させ、n2で指定した音色に変化させます。
    変化スピードはn3で指定し1が最速になります。
mubファイルでのフォーマット
    0xff,0xfc,n1,n2,n3


-レジスタ書き込み
コマンド
    y
書式
    yn1,n2,n3,n4
値の範囲
    n1 : (0〜4) 0:OPNA.1  1:OPNA.2  2:OPNB.1  3:OPNB.2  4:OPM
    n2 : (0〜1) ポート
    n3 : (0〜255) アドレス
    n4 : (0〜255) データ
使用可能なパート
    全て
内容
    他のChipのパートに対してデータを送れるようにします。
    既存のコマンドと比較してアドレスの制限がありません。
mubファイルでのフォーマット
      0xFF 0xF7 n1 n2 n3 n4


-個別ボリューム設定
コマンド
    v
書式
    vn1
値の範囲
    n1 : (0〜31)
使用可能なパート
    G/R/g/r (RHYTHM/ADPCM-A)
内容
    リズム音源のvコマンドは既存では一括で全ての音色の音量を設定する必要がありますが、
    DotNETではパラメータを一つだけ指定すると@コマンドで選択した音色にだけ音量を適用できます。
    もちろん既存の表記も可能です。
mubファイルでのフォーマット
      0xF1 ( n1 | 0x80 )


-ボリュームモード設定スイッチ
コマンド
    vm
書式
    vmn
値の範囲
    n : ( 0〜3 )
使用可能なパート
    FM
内容
    このvmコマンドを使用すると、vコマンドがその値に沿った動作になります。

    0 : 既存(default)
      既存の音量設定モードです。
    1 : ボリューム再定義
    　音量指定時に使用されるボリュームを再定義したものを使用します。
      1の後に、指定するTL値(0〜127)を20個列挙してください。
      (mucomではv0よりもさらに小さい音量を4つ分定義することが出来ます。)
      例)
       vm 1, 0,1,2,3,4,5,6,7,9,11,13,16,20,25,33,127,127,127,127,127 ;v15からv0 +4 までの定義分、順に列挙します
       この場合、
         v15cde
       はTLが0でcdeを演奏、
         v0cde
       はTLが127でcdeを演奏します。
    2 : 詳細
      vコマンドで指定する音量が0〜127になります。(0が最小、127が最大音量です)
    3 : 詳細(TLパラ)
      vコマンドで指定する音量が0〜127になります。(0が最小、127が最大音量です)但し4オペレータ(キャリア)分、値を指定します。
      例)
       vm3 v127,120,110,100
       この場合、オペレータ4から1へ順に127,120,110,100がセットされます。但しキャリアのみが対象です。
       オペレータ4以外の値は省略可能です。

    尚、どのモードであっても #CarrierCorrectionタグが指定されている場合は音色定義時の値が付加されます。
    又、音量バランス設定コマンド(V)の値も付加されます。

mubファイルでのフォーマット
      0xFF 0xFB n (n=1のときはvolumeのデータ20byte追加)
    また、vコマンドで1つ以上4つ以下の値をセットしたときは通常と異なり以下のフォーマットで設定されます。
      0xFF 0xFB 0xFF TL4 TL3 TL2 TL1 (TLはvコマンドで指定したTL値(0〜127)。オペレータ4からセットされる。)


-相対個別ボリューム設定スイッチ
コマンド
    vm
書式
    vmn
値の範囲
    n : ( 0 , 1 )
使用可能なパート
    G/R/g/r (RHYTHM/ADPCM-A)
内容
    後述のリズム音源の個別の音色に対して相対で音量を設定する機能をオンオフするスイッチです。
    0でOFF、1でONです。
mubファイルでのフォーマット
      なし


-個別ボリューム設定
コマンド
    ) (
書式
    )[n] ([n]
値の範囲
    n : (0〜31)
使用可能なパート
    G/R/g/r (RHYTHM/ADPCM-A)
内容
    リズム音源の)(コマンドは既存ではトータルボリュームに対して相対で音量を設定しますが、
    DotNETでは@コマンドで選択した音色にだけ音量を適用できます。
    vmコマンドが1のとき有効になります。
    0を指定すれば既存の動作になります。
mubファイルでのフォーマット
      0xFB ( n1 | 0x80 )


-パン(オートパン機能追加)
コマンド
    p
書式
    pn1[,n2]
値の範囲
    n1 : (4〜6)
    n2 : (0〜255) 省略時はlコマンドの値を使用
使用可能なパート
    A/B/C/G/H/I/J/K (FM / RHYTHM / ADPCM)
    L/M/N/R/S/T/U/V (FM / RHYTHM / ADPCM)
    a/b/c/g/h/i/j/k (FM / ADPCM-A / ADPCM-B)
    l/m/n/r/s/t/u/v (FM / ADPCM-A / ADPCM-B)
    W/X/Y/Z/w/x/y/z (FM)
内容
    n1に4未満を指定した場合は、既存のパンコマンドになります。
    4:右オートパン 5:左オートパン 6:ランダムパン
    n2は次のパンに切り替わるまでのウエイト値になります。
    4または5指定時のパンは以下の様に左右に順番に往復を繰り返します。
      4のとき  1(右)→3(中央)→2(左)→3(中央)→繰り返し
      5のとき  2(左)→3(中央)→1(右)→3(中央)→繰り返し
    RHYTHM/ADPCM-Aのn1の内訳は以下の通りです。
     bit0〜3 RhythmType Rim:5 Tom:4 Hat:3 Cym:2 Sd:1 Bd:0
     bit4〜7 パン 1:右, 2:左, 3:中央 4:右オート 5:左オート 6:ランダム
    また、後述のpmコマンドを使用することにより、RHYTHM/ADPCM-AでもFMやADPCMと同じ値で指定することができます。
mubファイルでのフォーマット
    n1が４未満の時
      0xF8 n1
    n1が４以上の時
      0xF8 n1 n2


-パン指定設定スイッチ
コマンド
    pm
書式
    pmn
値の範囲
    n : ( 0 , 1 )
使用可能なパート
    G/R/g/r (RHYTHM/ADPCM-A)
内容
    リズム音源の個別の音色に対してパンを他のチャンネルと同じ形式で指定できる機能をオンオフするスイッチです。
    0でOFF、1でONです。
mubファイルでのフォーマット
      なし
      (パンを使用したときにコンパイラが既存のコマンド値に変換するようになる)


-スロットディチューン
コマンド
    S
書式
    Sn1,n2,n3,n4
値の範囲
    n : (0〜255 / -32768〜32767)
使用可能なパート
    C/N/c/n (FM)
内容
    指定すると効果音モードを利用したスロットディチューン効果を得ることができます。
    0〜255の範囲外の値を使用するとDotNETモードに自動で移行しますが一度でも既存モードを使用しているとそこでエラーになります。
    その場合は#Driverタグを使用しmucomDotNETを予め指定してください。
    また、既存とDotNETではfnumの計算方法が異なります。
mubファイルでのフォーマット
    既存モード時
      0xF7 n1 n2 n3 n4
    DotNETモード時
      0xF7 n1(lsb) n1(msb) n2(lsb) n2(msb) n3(lsb) n3(msb) n4(lsb) n4(msb)


-SSGハードウェアエンベロープ
コマンド
    S
書式
    Sn
値の範囲
    n : (0〜15)
使用可能なパート
    D/E/F/O/P/Q/d/e/f/o/p/q (SSG)
内容
    指定するとSSGのハードウェアエンベロープ
    モードに切り替わります。
    0〜15はエンベロープの波形の種類になります。
    ハードウェアエンベロープを使用中に
    'v'(ボリュームコマンド)を使用すると通常の
    モードに戻ります。
    ')'や'('は無視されます。
mubファイルでのフォーマット
    0xFF 0xF1 n1


-SSGハードウェアエンベロープ スピード
コマンド
    m
書式
    mn
値の範囲
    n : (0〜65535)
使用可能なパート
    D/E/F/O/P/Q/d/e/f/o/p/q (SSG)
内容
    SSGハードウェアエンベロープの波形の変化
    スピードを設定します。
    値が小さいほど早く変化します。
mubファイルでのフォーマット
    0xFF 0xF2 n(lsb) n(msb)


-SSGソフトウェアエンベロープ プリセット書き換え
コマンド
    @=
書式
    @n=al,ar,dr,sl,sr,rr
値の範囲
    n  : (0〜15)
    al : (0〜255)
    ar : (0〜255)
    dr : (0〜255)
    sl : (0〜255)
    sr : (0〜255)
    rr : (0〜255)
使用可能なパート
    D/E/F/O/P/Q/d/e/f/o/p/q (SSG)
内容
    SSGソフトウェアエンベロープのプリセットを書き換えます。
    但し、書き換えられるのはEコマンドにあたる部分のみです。P,Mコマンドに該当する値は書き換えません。
    定義後は通常通り@コマンドで使用できます。
    尚、mucomDotNET(Player)は、1曲毎に起動しなおすのでプリセットは毎回初期化されます。
    (つまり他の曲データを再生したときに、書き換えた内容が引き継がれることはありません。)
mubファイルでのフォーマット
    0xFC n al ar dr sl sr rr


-FM TLパラメータLFO
コマンド
    MT
書式
    MTn1,n2
値の範囲
    n1 : (0〜15)
    n2 : (0〜127)
使用可能なパート
    A/B/C/H/I/J/L/M/N/S/T/U (FM)
    a/b/c/h/i/j/l/m/n/s/t/u (FM)
    W/X/Y/Z/w/x/y/z (FM)
内容
    lfoをFMのTL(トータルレベル)に適用します。
    tlは音量や、波形の変調量を調節するパラメーターですので
    そこにLFOをかければ、トレモロやワウの効果を期待できます。

    n1: 0を指定すると通常のLFOに戻ります。
    LFOをかけたいオペレータをbitで指定します。
    bit0:op1 bit1:op2 bit2:op3 bit3:op4 (bitの重みは順に 1,2,4,8)
    です。例えばop1とop3にLFOを指定したい場合は
     1(bit0) + 4(bit2) = 5
    で5を指定します。

    n2: 基準となるTLの値を指定します。
mubファイルでのフォーマット
    0xF4 0x07 n1 n2


-デフォルト音長設定
コマンド
    l
書式
    l%n
値の範囲
    n : (0〜Cで設定した値)
使用可能なパート
    all
内容
    クロックを直接指定する場合に使用します。
    %コマンドと同じ機能になります。
mubファイルでのフォーマット
    既存と同じ


-SSG トレモロLFO
コマンド
    MT
書式
    MTn
値の範囲
    n : (0:OFF 1:ON)
使用可能なパート
    D/E/F/O/P/Q/d/e/f/o/p/q (SSG)
内容
    MT1とすることで音程の代わりに音量に対してlfoを適用します。
    MT0と宣言するとデフォルトである音程のlfoに戻ります。
    エンベロープの併用が可能です。
mubファイルでのフォーマット
    0xF4 0x07 n


-FM キーオンディレイ
コマンド
    KD
書式
    KDn1,n2,n3,n4
値の範囲
    n1 : (0〜Cで設定した値)
    n2 : (0〜Cで設定した値)
    n3 : (0〜Cで設定した値)
    n4 : (0〜Cで設定した値)
使用可能なパート
    A/B/C/H/I/J/L/M/N/S/T/U (FM)
    a/b/c/h/i/j/l/m/n/s/t/u (FM)
    W/X/Y/Z/w/x/y/z (FM)
内容
    FM音源のキーオンをスロット毎にずらす場合に使用します。
    n1〜n4はそれぞれスロット1〜4に対応しています。
    値の単位はクロック数で、指定したクロック分だけずれてキーオンします。
    (発音するかどうかはアルゴリズムに左右します。)
    全ての値を0に指定することでディレイ無しの(通常の)状態に戻ります。
    注意
    音色によってはキーオン時にノイズが乗ることがあります。
    (リリースレート高めや早めのキーオフによって回避できます。)
mubファイルでのフォーマット
    0xFF 0xF6 n1 n2 n3 n4


-MIDI風ポルタメント
コマンド
    PO
    POS
    POR
    POL
    _
    __
書式
    POn1,n2,n3
    POSn1
    PORn2
    POLn3
    _
    __
値の範囲
    n1 : スイッチ(0:OFF,1:ON)
    n2 : 初期音程差(-128〜127)
    n3 : 遷移時間(0〜Cで設定した値)
使用可能なパート
    A/B/C/H/I/J/L/M/N/S/T/U (FM)
    a/b/c/h/i/j/l/m/n/s/t/u (FM)
    W/X/Y/Z/w/x/y/z (FM)
    D/E/F/O/P/Q/d/e/f/o/p/q (SSG)
内容
    使用すると、ノート発音時にMIDI風のポルタメント動作が行われます。
    これは、前回の音程を開始音程、ノートに指定した音程を到達音程としてベンドを行う動作になります。
    指定した時間に到達音程に達した後はそのままその音程を持続します。

    n1に1を設定するとこのモードが有効になり、無効になるまでポルタメント動作が実施されます。
    n1に0を設定するとこのモードが無効になり、通常の動作に戻ります。
    モードが有効になって初めての発音は、n2に指定した値をノートに加算した値が発音開始音程として使用されます。
    次の発音からは前回の到達音程が開始音程となります。
    n3はベンドにかかる時間をクロック数で指定します。
    
    POSコマンドはスイッチだけ変更したい場合に使用します。
    PORコマンドを使用すると開始音程を指定した値(相対値)にリセットします。
    POLコマンドはベンドにかかる時間をクロック数だけ変更したい場合に使用します。
    _コマンドは、ポルタメント動作が有効な場合は、次のノートだけ動作を無効にします。
    ポルタメント動作が無効な場合は、次のノートだけ動作を有効にします。
    __コマンドは、ポルタメント動作が有効な場合は、次のノートだけ動作を無効にします。
    ポルタメント動作が無効な場合は、次のノートだけ動作を有効にします。但し開始音程は初期音程差が使用されます。

mubファイルでのフォーマット
    通常のポルタメントとタイ、ノートを列挙したものになります。
    よってドライバ側のコマンドはありません。


-ポルタメント
コマンド
    { }
書式
    {n1n2n3}
値の範囲
    n1 : 音程1 c〜bまで(音長指定可能)
    n2 : 相対オクターブチェンジ < 又は >
    n3 : 音程2 c〜bまで(音長指定不可)
デフォルト値
    -
使用可能なパート
    リズム又はADPCM-A 以外のパート
    (ADPCMパートも可能)
内容
    指定した音程1から音程2まで音程を滑らかに変化させます。
mubファイルでのフォーマット
    -


-効果音モードスイッチ
コマンド
    EXON
    EXOF
書式
    EXON
    EXOF
値の範囲
    -
デフォルト値
    効果音モード無効
使用可能なパート
    C/N/c/n (FM)
内容
    効果音モードに移行するか、否かを指定します。
    EXONで効果音モードになります。
    EXOFで通常に戻ります。
    効果音モードに移行すると、C/N/c/nパートのページの動作が専用に切り替わります。
    排他的な動作になりますので、ページ本来の動作は効果音モード中は使用できません。
mubファイルでのフォーマット
    EXON : 0xFF 0xF8 0x00 0x01
    EXOF : 0xFF 0xF8 0x00 0x00


-効果音モードのスロット割り当て(使用するスロットを列挙する)
コマンド
    EX
書式
    EXn
値の範囲
    使用するスロットの番号(1〜4)を列挙する。
    又は0でスロットを使用しないことを指定する。
デフォルト値
    EX1234
使用可能なパート
    C/N/c/n (FM)
内容
    指定したパートで使用するスロット番号を指定します。
    例えばスロット1と2を指定したい場合は
     EX12
    と指定します。
    音色指定コマンドはこの設定を参照し、有効なスロットの音色項目値のみ変更するようになります。
    尚、これだけ指定しても、効果音モードに自動で移行することはありません。
    EXONコマンドを使用してください。
    また、効果音モード時に音色を変更した場合、有効なスロットのみ変更処理が行われます。
    同様に音量変更時も、有効なスロットのみ変更処理が行われます。
    音色変更時、FB/ALGは毎回更新されますが、ページ毎にその値を保持していますのでその値に違いがあると想定外の音量変更が行われます。
    よって同じFB/ALGの音色を使用することをお勧めします。
    スロット番号に0を指定するとそのパートの割り当てはクリア(キーオン対象のスロットが無しの状態に)されます。
mubファイルでのフォーマット
    0xFF 0xF8 0x01 n
    (n : bit3,2,1,0 がそれぞれスロット4,3,2,1の有効:1、無効:0を示す)


-ソフトエンベロープ
コマンド
    E
書式
    En1,n2,n3,n4,n5,n6
値の範囲
    各パラメータとも0〜255まで
デフォルト値
    なし
使用可能なパート
    K/V/k/v (ADPCM/-B)
内容
    SSGの機能をADPCMパートでも使用できるようにしたものです。
mubファイルでのフォーマット
    0xFF 0xFA n1 n2 n3 n4 n5 n6


-パート別リプレイス
コマンド
    [|
    |
    |]
書式
    [|
    |
    |]
値の範囲
    -
デフォルト値
    なし
使用可能なパート
    All
内容
    [|と|]で括った範囲をパート別指定した範囲で演奏します。  
    括った範囲内の|で次のパートが演奏する内容になります。  
    ネスト不可能です。  
    [|を見つけると、パートの記述欄を参照し、自分(コンパイルしようとしている現在のパート)が何番目の位置にあたるか調べます。  
    そのあと自分の位置にあたる区域だけを有効としてあとは|]まで読み捨てます。  
    |を指定するたびに次のパートの区域に切り替わります。  
mubファイルでのフォーマット
    -




--内部コマンド--


-パート、ページデータのアドレス指定
コマンド
    - (内部コマンドの為、無し)
書式
    -
mubファイルでのフォーマット
    0xFF 0xF7 nn pd pc pb pa [ gd gc gb ga ] ..(nnの値分、gdgcgbgaを繰り返す)
値の範囲
    nn : (0〜9)
    papbpcpd : パートのデータへのオフセット(4バイト LE)
    gagbgcgd : ページのデータへのオフセット(4バイト LE)
使用可能なパート
    all
内容
    パートのデータへのアドレスを指定します。
    ページを使用する場合はそのアドレスも列挙します。
    このコマンドはパートデータの先頭に1度だけ使用します。
    アドレスを置き換える必要がない場合や、ページを使用しない場合はこのコマンドはありません。




--資料--

--ページ機能　復帰コマンド一覧--
FM & SSG & ADPCM/-B
コマンド  復帰  他のページと共有  備考
 C        〇    しない            初期化が要ります
 t        -     全てで共有する    
 T        -     全てで共有する    
 @        〇    しない            初期化が要ります
 o        〇    しない            初期化が要ります
 v        〇    しない            初期化が要ります
 q        〇    しない            初期化が要ります
 p        〇    しない            初期化が要ります
 l        〇    しない            初期化が要ります
 cdefgabr 〇    しない            
 %        〇    しない            初期化が要ります
 D        〇    しない            初期化が要ります
 >        〇    しない            oの初期化が要ります
 <        〇    しない            oの初期化が要ります
 )        〇    しない            vの初期化が要ります
 (        〇    しない            vの初期化が要ります
 &        ×    しない
 ^        ×    しない
 {...}    ×    しない
 [...]n   〇    しない
 /        〇    しない
 L        〇    しない
 K        〇    しない
 V        〇    しない
 \=       〇    しない
 \        〇    しない
 k        〇    しない
 s        〇    しない
 H        -     全てで共有する    
 R        〇    しない
 RF       〇    しない
 Rm       〇    しない
 M        〇    しない
 MF       〇    しない
 MW       〇    しない
 MC       〇    しない
 ML       〇    しない
 MD       〇    しない
 S        △    しない            カレント時に送信した内容が適用される
 E        〇    しない
 P        〇    しない
 w        〇    しない
 s        〇    しない
 m        〇    しない
 y        △    しない            カレント時に送信した内容が適用される
 yDM      △    しない            カレント時に送信した内容が適用される
 yTL      △    しない            カレント時に送信した内容が適用される
 yKA      △    しない            カレント時に送信した内容が適用される
 yDR      △    しない            カレント時に送信した内容が適用される
 ySR      △    しない            カレント時に送信した内容が適用される
 ySL      △    しない            カレント時に送信した内容が適用される
 ySE      △    しない            カレント時に送信した内容が適用される
 vm       -     全てで共有する     
 *        〇    しない
 ;        〇    しない
 :        〇    しない
 !        〇    しない
 J        〇    しない
 |        〇    しない
