ZMSフォーマット解説(共通トラック部)

ZMSフォーマット解説(共通トラック部)

パラメータifcommentは、 [V3]で新たに追加されたものであるため、 V2/zmc2ではサポートされていませんが、 以下のマニュアルにはこれらのパラメータを記載しております。 [V2]環境で使用する際には、 これらのパラメータを記述しないようにしてください。

基本命令

その他

エクスクルーシブメッセージ関連

GM音源専用命令

GM音源初期化

GM2音源初期化

GS音源専用命令

SC88専用命令

XG音源専用命令

DX音源専用命令

MU100/MU128専用命令

DX7バルクダンプ送信

MU100 ボイスマップ選択

MU100 native map選択

MU100 basic map(互換map)選択

基本命令

    • / 文字列 [V2] (コメント)
          • 文字列: 任意のコメント文字列
      • '/'より後ろをコメントとして無視する。
      • 例:
      • / ORGAN SOLO
    • .COMMENT 文字列 [V2] (コメント(曲タイトル))
          • 文字列: 任意の曲タイトル文字列
      • 単なるコメント行だが、 '/'と違うのはコンパイルされたデータにも残るという点。 (zmc2/ztomではメタイベントFF03, sequence nameに変換される)。
      • 曲のタイトル、制作日時、 自分の名前等をZMSファイル先頭に記述するのが一般的。 .COMMENTは1つのZMS内に複数書くことが出来るが、 曲のタイトルとして有効になるのは最初の一つだけである。
      • 例:
      • .comment STAGE 1 BGM VERSION 1.10 (c)1992/11 XVI
  • (I) [V2]
    • .INITIALIZE [V3/zmc2] (初期化)
      • Z-MUSICシステムとMIDI楽器に対して初期化メッセージを送出する。 通常、おまじないのように、ZMSの先頭に書くが、 zmc3/zmc3使用時にはシステムの初期化は自動的に行われるため、 下記の音源初期化が不要である場合は特に記述する必要はない。 また、 V3システムでも最低限の初期化は演奏時に行われるためこれまた記述は不要。
      • MIDI音源に対しての具体的な送信メッセージ内容に関しては以下の通り:
        • システムリセット($FF)
        • リセットオールコントローラーズ($Bn,$79,$00)
        • オムニモードオン($Bn,7D,$00)
        • モノモードオフ($Bn,$7F,$00)
        • ローカルオン($Bn,$7A,$7F)
        • マスターチューン・微調整=中央 ($Bn,$65,$00,$Bn,$64,$01,$Bn,$06,$40,$Bn,$26,$00)
        • マスターチューン・コース=中央 ($Bn,$65,$00,$Bn,$64,$02,$Bn,$06,$40)
      • (注意)[V3]やzmc2では、 隠しとして(i2)や(i3)、 .initialize 2や.initialize 3のようにすることで、 自分が想定しているZ-MUSICのバージョンが [V2]か[V3]かを指定できる。 zmc2では、(i3)のように、 [V3]を指定した場合Warningを出す。
  • (Ach,tr) [V2]
    • .ASSIGN tr {ch} [V3/zmc2]
    • (Ach,tr, trkv,trkf,trks,trkm, cmnt) [V3]
    • .ASSIGN tr {ch, trkv,trkf,trks,trkm, cmnt} [V3]
    • (トラック宣言&チャンネルアサイン)
          • ch: 1~25 チャンネル番号 または MIDI1~MIDI16
          • [V3]の場合、MIDI1-1 ~ MIDI4-16 も可
          • tr: 1~80 トラック番号
          • trkv: 0~256 トラックボリューム 省略時128
          • trkf: 1~256 トラック処理頻度 省略時1
          • trks: PLAY, RECORD トラック状態 PLAYのみ設定可能
          • trk,: NORMAL, RHYTHM ノートON/OFF処理モード 省略時NORMAL
          • cmnt: コメント文字列 (zmc3/z2m3ではトラック名としてSMFに埋め込まれる)
      • トラックtrの使用を宣言しつつ、 チャンネルchをトラックtrへアサインする。
      • チャンネル番号はベースチャンネル変更コマンドによって、 その対象デバイスが変動する ((Bn)コマンド参照)。
      • chの部分に規定の文字列を指定することによって (Bn)コマンドの 影響を受けずに絶対的に指定することも可能である。具体的には以下の通り:
    • # ここから、V2環境ではMIDI 32chは利用出来ないことが分かる。
              • (a1,2)
              • .assign 2 {1}
              • (aMIDI1,3)
              • .assign 3 {MIDI1}
              • (aMIDI2-3,4)
              • .assign 4 {MIDI2-3}
              • トラック2の使用を宣言し、チャンネル1へ 割り当てる。 ここでいうチャンネル1とは、(B0)なら FMチャンネル1だし、 (B1)ならMIDIチャンネル1。
              • トラック3の使用を宣言し、 (PORT Aの)MIDIチャンネル1へ割り当てる。
              • トラック4の使用を宣言し、 PORT BのMIDIチャンネル3へ割り当てる。
      • .assign 1 {MIDI2-3,128,1,PLAY,NORMAL,RHYTHM GUITAR 1}
      • トラック1の使用を宣言し、 PORT BのMIDIチャンネル3へ割り当てる。
      • トラックボリュームは通常通り、トラック処理頻度は1tickに1回ずつ、 演奏トラック、ノートオフは省略しない、コメント(リズムギター)
      • ただし、zmc3においてのみ、 この(A...)や.assign ...によるトラック宣言なしで、 いきなり演奏トラックのmmlを書き始めることが可能。 この場合、(AMIDI1,1)(t1) が省略されているものと見なす。
      • / (aMIDI1,3) この行はコメントにつき無視される
      • cdefg / MIDIチャンネル1でドレミファソが演奏される
      • 同様に、zmc3についてのみ、 (AMIDIn,n) (トラック番号とチャンネル番号が等しい)を省略可能。
      • / (aMIDI1,3) この行はコメントにつき無視される
      • / (aMIDI2,4) この行はコメントにつき無視される
      • (t1) cdefg / MIDIチャンネル1でドレミファソが演奏される
      • (t2) gfedc / MIDIチャンネル2でソファミレドが演奏される
      • ただし制限があり、このように(AMIDI..)が省略された場合は、 どうも[back..]がうまく機能しないようである。
  • (On) [V2]
    • .TEMPO n [V3/zmc2]
    • (テンポ設定)
          • n: 20~300 テンポ値
      • テンポnを設定する。
      • 設定後、1分間にn個の4分音符を演奏するようになる。 20≦n≦300。 ただし、タイマーAモードの時は77以下は強制的に77となる。
      • (o120)
      • (注意) zmc2ではタイマーの区別はない。 (元のX680x0にはA,Bという二つの演奏タイマーが存在し、 デフォルトのTIMER Bを使う代わりに TIMER Aを使うことで、 より正確にテンポを刻むことができた。 しかし、TIMER A/Bの指定はmml中では行えなかった)
    • (Tn1,n2,…,n8) [V2]
    • .track n1,n2,…,n8 {...} [V3/zmc2]
    • (MML書き込みトラック指定)
          • ni: 1~80 トラック番号
          • ([V3]では1~65535.. のはずですが、現zmc3では[V2]同様1~80)
      • MMLをトラックn1~n8へ書き込む。n2以降は省略可能。
      • (t1) cdefg
      • (t2,3) abab
      • (注意)zmc2/zmc3では一度に書き込めるトラック数の制限が解除されている。 (Z-MUSIC V2では最大8つだった)。
    • (Pn1,n2,…,ni) または(P) [V2]
    • .PLAY {n1,n2,…,ni} または.PLAY [V3]
    • (演奏制御)
          • ni: 1~80 トラック番号
          • (V3では1~65535)
      • 演奏を開始する。 全パラメータを省略して(P)のみでは全トラックの演奏を開始する。 トラック番号を指定する場合は、そのトラックのみ演奏する。
      • 例: (p1,2,3)
      • (注意)zmc2では (Pn1,n2,...)はすべて(p)相当と見なす。 zmc3では同制限なし。
  • .RELATIVE_VELOCITY md [V3] (相対ベロシティMMLの指定)
        • md: _~, ~_, @U, U のいずれか
    • 初期状態では_ ~は相対音量のMMLであるが、 これを相対ベロシティとして用いることもできる。 本命令はこの変換についての設定を行うもの。
    • md=_~ あるいはmd=~_ とすると、 相対ベロシティは _ ~で行うことができるようになる。 一方、md=@U またはmd=U とすると、 相対ベロシティは従来どおりU±n, @U±nで指定することになり、 _~は相対音量の操作MMLとして機能する。
      • 例:
      • .RELATIVE_VELOCITY _~
      • .RELATIVE_VELOCITY @U
  • .PATTERN name, trkf { MML } [V3] [未実装] (パターントラック)
        • name: パターン名
        • trkf: 1~256 トラック処理頻度
    • パターントラックを定義する。 パターントラックとは曲中頻繁に使うリズムパターンなどを固有の名前を与えて定義し、 曲中任意に呼び出すことができる演奏トラックのこと。 具体的には、本命令でパターントラックを定義し、MML
    • [PATTERN]
    • [EMBED]
      • で曲中で呼び出す。
      • nameはパターン名を表し、 これは251文字以内の英数字文字列で指定する。
      • trkf.ASSIGN命令trkfに相当するもので、 トラック処理頻度を表す。 設定範囲は1-256で、省略可能。省略時は1が設定される。
      • .PATTERN FUNK,1 {
      • o2 @u99 c4 @u120 d4 @u99c8 c8 @u127 d4
      • }
  • .INCLUDE filename [V3] (ZMSファイル読み込み)
        • filename: 挿入するファイルのファイル名
    • filenameで指定したファイルを読み込み、 .INCLUDE文と置換する(挿入する)。 filenameで指定出来るファイルはZMS(ZMC),CNFで、 拡張子省略時は'ZMC'が自動添付される。
    • .INCLUDE MY8PSET.ZMS

その他

  • (Zn) [V2]
    • .MASTER_CLOCK n [V3/zmc2]
    • (全音符の絶対音長(分解能)設定)
          • n: 1~254 全音符の分解能 (V3/zmc2の場合1~32767)
      • 全音符の絶対音長を設定する。 (I)コマンドでデフォルト値192が自動設定される(つまり四分音符あたり48ということ)。 通常は設定する必要はない。 1920, 480, 192, 144, 128, 96といった数値を設定するのが一般的。 例えばn=480とすると、四分音符の音長 (Ticks Per Quarter Note, TQPN) は 480÷4=120 となる。
      • 例:
      • (Z192)
    • .GATETIME_RESOLUTION n ゲートタイム解像度の設定 [V3]
          • n: 8,16,32,64,128 MML Qの最大値
      • MML Qの最大値 (ゲートタイムの分解能)を設定する。初期設定時は8になっている。 大きな値に設定すれば、より細かなゲートタイム指定が行えるようになる。
      • 例:
      • .GATETIME_RESOLUTION 128
    • .OCTAVE_MODE str [zmc3]
    • オクターブの指定方法の設定
          • str: HuBASIC, SHARP, X68k, NEC のいずれか
      • オクターブの指定方法の設定を行う。 通常(デフォルト)は> でオクターブが1下がり、< で1上がるが、
      • .octave_mode NEC とすることにより、これとは逆に > でオクターブが1上がり、< で1下がるようになる。
      • HuBASIC, SHARP, X68k のいずれかを指定した場合は、 デフォルト状態が維持される。
            • 備考: > < とオクターブ移動の関係について
            • 世の中の大多数のMMLでは、上記"NEC"でいうところの 「> でオクターブが1上がり、< で1下がる」を採用していますが、 SHARPのパソコンで採用されていた(ハドソンの)HuBASICのMMLではこれが逆になっています。 どちらが意味的に正しいのかというのは分かりませんが、 少なくとも日本国内においては前者の意味づけが多数派であることは間違いないと思います。
            • Z-MUSICはX680x0のOPMDRV互換であり、 これはHuBASICのMMLが元になっているため、 Z-MUSICコンパチのzmc2/zmc3も、 「> でオクターブが1下がり、< で1上がる」 ようになっています。
            • # 求むS-BASIC, FMシリーズ/PASOPIA/MSX等々での情報 (笑)
    • .METER m/n [V3]
    • 拍子設定
          • m/n: 1/1~255/255 拍子
      • 拍子の設定を行う。 ただし、あくまで演奏データに対する付加情報的な意味合いしか持たず、 演奏に何ら影響を与えるものではない。 一方で、ただし、SMFのメタイベントとしては記録されるため、 プレーヤでの拍子の進行を正しくしたい場合などには、 設定が必須となる。 曲の途中で拍子が変わるような場合は、 代わりに演奏トラック部のMML [METER m/n]を用いればよい。
      • m/nは、 音楽的な拍子をそのまま分数表現で与えることができる。
      • 例:
      • .METER 3/4 (4分の3拍子を設定)
    • .KEY {n,type,m} または .KEY str [V3]
    • 調号設定
          • n: 0~7 調号中の変化記号(#や♭)の数
          • type: -,+,# 調号の変化記号(フラットかシャープか)
          • m: MAJOR, MINOR 長調か短調か
          • str: Cmajorなど 一般的な調号指定
      • 調号の設定を行う。 ただし、あくまで演奏データに対する付加情報的な意味合いしか持たず、 演奏に何ら影響を与えるものではない。 ただし、SMFのメタイベントとしては記録されるため、 プレーヤでの調号表示を正しくしたい場合などには、設定が必須となる (気が利くプレーヤなら、C♯な音を短調時D♭と表示してくれるかも知れない)。
      • 曲の途中で転調するような場合は、 代わりに演奏トラック部のMML [KEY ...]を用いればよい。
      • 例:
      • .KEY C#minor (嬰ハ短調)
    • (Mtr,size) [V2]
    • トラック確保
          • tr: 1~80 トラック番号
          • size: 100~65535 確保するメモリ量(byte)
      • トラックtrにバッファサイズsizeバイト確保する。
      • 例:
      • (m2,3000) / トラック2用に3000バイト確保する
      • (注意)V3/zmc2ではsizeの大きさの制限はなし。 従って指定自体意味をなさず、 (M...)の記述をすべて省略できる。
    • (Bn) [V2]
    • (ベースチャンネル設定)
          • n: 0, 1
      • ベースチャンネルを設定する。
            • n=0
            • n=1
            • FM音源基準
            • MIDI音源基準
            • チャンネル番号1~8がFM音源,9がADPCM,10~25がMIDIになる
            • チャンネル番号1~16がMIDI,17~24がFM音源,25がADPCMになる。
      • 例:
      • (B1) ベースチャンネルをMIDI基準に設定して...
      • (A1,2) MIDIチャンネル1にトラック2を割り当てる
      • (注意: 上記の例は(AMIDI1,2)とすることもでき、 通常こちらの表現が使われるため、 本MML (Bn)はあまり用いられない)
  • (Dn) [V2]
    • .JUMP n [V3/zmc2]
    • (開発補助(デバッグコマンド有効/無効スイッチ))
          • n: 0, 1
      • [@],[!],[end]コマンドの有効化/無効化スイッチ。 n=0で無効、n=1で有効となる。
      • 例:
      • (d1) / これ以降デバッグコマンド有効化
      • (注意)(Dn)は演奏トラック中に記述しても有効。 これに限らず一般に、 演奏トラック中に共通コマンドを混在させることが可能(zmc2でのみ不可)
      • 例:
      • (t1)
      • (d0) c[@]de / ここの[@]は無効
      • (d1) f[@]ga / ここの[@]は有効
    • .WAVE_FORM wv,lm,ls {dt0,dt1,... (,dt65535)} [V2]
    • .WAVEFORM wv,lm,ls,le,lt,comment {dt0,dt1,... (,dt4294967295)} [V3]
    • (波形メモリ登録)
          • wv: 8~31[V2] 8~255[V3] 波形番号
          • lm: 0~2[V2] 1SHOT,REPEAT,ALTERNATE[V3] ループモード
          • ls: 0~65535[V2] 0~4294967295[V3] ループ開始点
          • le: 0~4294967295[V3] ループ終了点
          • lt: 0~4294967295[V3] ループ回数
          • dtn: -32768~32767 波形データ
      • 波形メモリを登録する。波形番号wvに、 ユーザが自由に波形を登録し、 ピッチモジュレーション(MML @M), ARCC(MML @A), エンハンスドベロシティシーケンス(MML [VELOCITY.DEPTH] (zmc3未実装)), アゴーギク(MML [AGOGIK.DEPTH](zmc3未実装)) にて利用可能。波形は整数で表し、 各要素は離散的な波形構成値と見なされる (各要素間の補間はなされない)。 ちなみに波形番号0~7はプリセット波形などが設定されておりリザーブされている。
      • lmは、 波形を最後まで処理を終えたあとどうループさせるかを設定するもの。
    • V3では0,1,2の代わりにそれぞれ1SHOT, REPEAT, ALTERNATEという文字列で指定することも可能。
      • lsは、 何番目のデータをループ開始点に設定するかを決めるパラメータで、 省略すると0、すなわちデータの先頭がループ開始点と見なされる。
      • leは、 何番目のデータをループ終了点に設定するかを決めるパラメータで、 省略すると最後の波形データの位置が自動的に設定される。
      • ltはループ回数を表し、 ループ領域を何回ループさせるかを設定する。 0を指定した場合または省略時には、無限ループと見なされる。
      • commentは、その波形に対するコメントで、 '{'を含まない255文字以内の任意の文字列を設定可能。
      • 波形データは符号付き16ビット整数で構成する。 データの個数は65535個まで。それ以上は設定できない。
      • 例:
      • .wave_form 8,1,9 {0,5,-5,10,3,-300,10,6,80,10}
      • 波形番号8に、リピートで、 ループ開始点が9番目のもの(80)となる波形を定義する。 つまり、この波形は、
      • 0,5,-5,10,3,-300,10,6,80,10, 80,10, 80,10, 80,10, ...
      • と推移する。
    • .LEGACY_*1_TIE n [zmc2] (音長*1をタイと見なすかどうかの設定)
          • n: 0, 1
      • 歴史的な理由により、 Z-MUSIC(V2)ではデフォルトで音長*1の音は常にタイとみなされる。 つまり、下記の2つの例の演奏結果はまったく同じとなる。
          • @l1 c&d&e&f&g
          • @l1 cedfg
      • 一方で、V3では音長*1はタイと見なされない。
      • zmc2/zmc3では、音長*1をタイと見なすかどうかをユーザーが設定できる。
          • .legacy_*1_tie 0 / *1をタイと見なさない(zmc3/V3デフォルト)
          • .legacy_*1_tie 1 / *1をタイと見なす(zmc2/V2デフォルト)
      • zmc3では、引数を0, 1とする以外に、 OFF, ONとすることもできる。
          • .legacy_*1_tie off / *1をタイと見なさない
          • .legacy_*1_tie on / *1をタイと見なす
    • .DEFINE %,... {...} (V3/zmc2)
    • (マクロ定義)
    • .HALT n [V3] (ウエイトの挿入)
          • n: ウエイト時間であるn/60秒の指定
      • 共通コマンド部の、この.halt命令が指定された位置で n/60秒待つコマンド。 GSリセット直後など、ウエイトが必要となる部分で入れると良い。
      • nが省略された場合には、 無条件でnに60が指定されたものと解釈する。 つまり、1秒待つ。
          • .halt 30 / その場で0.5秒待つ
          • .halt / その場で1秒待つ
      • (注) 元々オリジナルのV3では、 マニュアルに説明が記載されていないものの、 上記のような機能を普通に使うことができた。 要するに、隠しMML的なもの。
      • ただし、オリジナルのV3での機能は、「n回分垂直同期を待つ」であり、 正確にはzmc3に実装された機能とは異なる。

エクスクルーシブメッセージ関連

    • .CURRENT_MIDI_OUT if [V3]
    • (カレントMIDI出力ポート選択)
          • if: 1~4 MIDI IF番号
      • MIDI出力を行う際のデフォルトインターフェースを選択する。 MIDI入出力関連命令のほぼすべてに送受対象インターフェースを指定出来るようになっているが、 この指定を省略した場合や[V2] ZMSコマンドなどの一部の送受対象インターフェースを指定出来ない命令を使用した時に、 本命令によって設定されたインターフェースがデフォルトとして選択される。 [V3]では .CURRENT_MIDI_OUTで設定したインターフェースをカレントMIDI-OUTインターフェースと呼ぶ。
      • 例:
      • .CURRENT_MIDI_OUT 3
    • (Xn1,n2,…) [V2]
    • .MIDI_DATA if,comment {n1,n2,…} [V2]
    • .EXCLUSIVE if,comment {n1,n2,…} [V2]
    • (エクスクルーシブメッセージの送信)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • comment: コメント文字列 (省略可能, '{'を含まない255文字以内の文字列)
          • ni: $00~$ff (それ以上の値も指定可能)
      • MIDIの生データを送信。 パラメータをいくつでも書くことが出来る ((X..)以外は複数行に渡っても可)。 データに128以上を指定すると、 その値を7ビットごとに分けて下位から送信される。
      • 例:
      • 255→$01,$7F
      • 8192→$00,$40
      • 32700→$3C,$7F,$01
      • (X$41,$10,$42,$12,$40,$00,$7f,$00,$41) / GSリセット
      • .midi_data {$41,$10,$42,$12,$40,$00,$7f,$00,$41} / GSリセット
      • .exclusive $41,$10,$42,$12,$30,$00,$7f,$00,$41 / GS reset
    • .ROLAND_EXCLUSIVE dev,mdl,if,comment {n1,n2,…} [V2]
    • (ローランド系楽器へのエクスクルーシブメッセージ送信)
          • dev: デバイスID
          • mdl: モデルID
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • comment: コメント文字列 (省略可能, '{'を含まない255文字以内の文字列)
          • ni: $00~$ff (それ以上の値も指定可能)
      • ローランド系の楽器へエクスクルーシブメッセージを送る。 複数行に分けて記述可能。 エクスクルーシブ・ヘッダやチェックサム・バイトは自動生成して送信してくれる。
      • モデルIDが2バイトの音源に対しては、 この.ROLAND_EXCLUSIVE の代わりに .ROLAND_EXCLUSIVE2 を使う必要がある。
      • 例:
      • 255→$01,$7F
      • 8192→$00,$40
      • 32700→$3C,$7F,$01
      • .ROLAND_EXCLUSIVE $10,$42 {$40,$00,$7f,$00} / GS reset
    • .ROLAND_EXCLUSIVE2 dev, mdlH, mdlL, if, comment {n1,n2,…} [ZMC3]
    • (ローランド系楽器へのエクスクルーシブメッセージ送信)
          • dev: デバイスID
          • mdlH, mdlL: モデルID (1byteずつ、計2byte)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • comment: コメント文字列 (省略可能, '{'を含まない255文字以内の文字列)
          • ni: $00~$ff (それ以上の値も指定可能)
      • ローランド系の楽器へエクスクルーシブメッセージを送る。 基本的には .ROLAND_EXCLUSIVE と同じだが、 モデルIDが2バイトになっている点が異なる。
      • XV-5080やSD-90、Fantomシリーズなど、 近年の楽器は、モデルIDが2バイトになっているものがあり、 それに対応したもの。
      • なお、 .ROLAND_EXCLUSIVE2 は使用可能だが、 [ROLAND_EXCLUSIVE2] はまだないので注意。
      • 例:
      • .ROLAND_EXCLUSIVE2 $10,$00,$10 { $00,$00,$00,$00,$00 } / Performance mode (XV-3080 / 5080)
    • .YAMAHA_EXCLUSIVE dev,mdl,if,comment {n1,...} [V3/zmc2]
    • (ヤマハエクスクルーシブメッセージ送信)
          • dev: デバイスID (通常$00)
          • mdl: モデルID (XG音源なら通常$4c)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • comment: コメント文字列 (省略可能, '{'を含まない255文字以内の文字列,)
          • ni: $00~$ff (それ以上の値も指定可能)
      • ヤマハ製のMIDI機器へエクスクルーシブメッセージを送信する。 エクスクルーシブヘッダや転送バイト数・チェックサムは、 送信メッセージ内容から自動算出し自動送信する。なお送信の際、 使用するヤマハエクスクルーシブタイプはバルクダンプである。
      • なお、
        • 上記のように、本命令はバイト数とチェックサムを送信するため、 XGフォーマットのエクスクルーシブには使用できない。 代わりに .EXCLUSIVE[V3]を使うか .XG_EXCLUSIVE[zmc3]を用いるとよい。
        • XG音源のDX7プラグインボードの音色設定を行う場合は、 このMMLでは正しく設定できない (エクスクルーシブメッセージの仕様が微妙に異なる) ので注意すること。 (代わりに .DX_BULK_DUMP[zmc3] を用いるとよい)
        • モデルIDが2バイトの音源に対しては、 この.YAMAHA_EXCLUSIVE の代わりに .YAMAHA_EXCLUSIVE2 を使う必要がある。

例:

.yamaha_exclusive $10,$4c {$00,$00,$7e,$00} / XG SYSTEM ON

.YAMAHA_EXCLUSIVE2 dev, mdlH,mdlL, if,comment {n1,...} [zmc3]

(ヤマハエクスクルーシブメッセージ送信)

    • dev: デバイスID (通常$00)
    • mdlH, mdlL: モデルID (1byteずつ、計2byte)
    • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
    • comment: コメント文字列 (省略可能, '{'を含まない255文字以内の文字列,)
    • ni: $00~$ff (それ以上の値も指定可能)

ヤマハ系の楽器へエクスクルーシブメッセージを送る。 基本的には .YAMAHA_EXCLUSIVE と同じだが、 モデルIDが2バイトになっている点が異なる。

MOTIF-Rack ESシリーズなど、 近年の楽器は、 モデルIDが2バイトになっているものがあり、 それに対応したもの。

なお、.YAMAHA_EXCLUSIVE2 は使用可能だが、 [YAMAHA_EXCLUSIVE2] はまだないので注意。

例: (全角スペースは半角に直してから使ってください)

/ MOTIF-Rack ES Exclusive Bulk-Dump Test

(i)

(B1)

.YAMAHA_EXCLUSIVE2 $00, $7F, $00 = { $0E, $0F, $00 } / Bulk Dump Header (Normal Voice Edit Buffer)

.YAMAHA_EXCLUSIVE2 $00, $7F, $00 = {

$40, $70, $00, / Address (Normal Voice Common)

$48, $45, $4C, $4C, $4F, $20, $5A, $21, $20, $20 / Voice Name (HELLO Z!)

0, 0, / Reserved

$00, / Voice Category

$00, / Voice Category(Sub)

0, 0, 0, 0, 0, / Reserved

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

}

.YAMAHA_EXCLUSIVE2 $00, $7F, $00 = { $0F, $0F, $00 } / Bulk Dump Footer

.XG_EXCLUSIVE id,if,comment {n1,...} [zmc3]

(XGエクスクルーシブメッセージ送信)

XG専用命令の項を参照のこと。

.MIDI_DUMP=filename [V2] [未実装]

.MIDI_DUMP if,filename [V3] [未実装]

.SMF if,filename [V3] [未実装]

(スタンダードMIDIファイル / MIDIダンプデータ(バルクダンプデータ)の送信)

    • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
    • filename: SMFデータ/MDDデータのファイル名

ファイルネームfilenameのFORMAT0のスタンダードMIDIファイルをMIDIポートifに送信する。 FORMAT1,FORMAT2のスタンダードMIDIファイルを送信することはできない。

filenameの拡張子省略時には ([V2]との互換性保持のため) '.MDD'が自動添付される。スタンダードMIDIファイルの場合は '.MID'や'.SMF'といった拡張子を明記する必要がある。

ifを省略した場合は .current_midi_outで選択したカレントMIDIポートへ出力される。

例:

.MIDI_DUMP MYXGTONE.MID

GM音源専用命令

    • .GM_SYSTEM_ON if [V3/zmc2]
    • (GM音源初期化)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
      • GM音源の初期化を行う。
      • ifを省略した場合は .current_midi_outで選択したカレントMIDIポートへ出力される。
      • 例:
      • .gm_system_on
    • .GM2_SYSTEM_ON if [zmc3]
    • (GM2音源初期化)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
      • GM2音源の初期化を行う。
      • ifを省略した場合は .current_midi_outで選択したカレントMIDIポートへ出力される。
      • 例:
      • .gm2_system_on

GS音源専用命令

  • .SC55_INIT id,if [V2]
    • .GS_INIT id,if [V3/zmc2]
    • (GS音源初期化)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • id: デバイスID (省略可能、初期値$10)
      • GS音源の初期化を行う。
      • 例:
      • .sc55_init
  • .SC55_V_RESERVE id,if {n1,...,n16} [V2]
  • .GS_V_RESERVE id,if {n1,...,n16} [V3/zmc2]
  • .SC55_PARTIAL_RESERVE id,if {n1,...,n16} [V3/zmc2]
    • .GS_PARTIAL_RESERVE id,if {n1,...,n16} [V3/zmc2]
    • (SC55ボイスリザーブ設定)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • id: デバイスID (省略可能、初期値$10)
      • {...}内のパラメータは必ず16個設定しなくてはならない。 パラメータ各値の総和は音源の同時発音数以内に収める必要がある。
      • また、10番目のパラメータはリズムパートに相当する。
      • 例:
      • .sc55_v_reserve {1,2,3,4,5,6,0,0,0,3,0,0,0,0,0,0 } / 1ch=1, 2ch=2, ..., 10ch=3だけボイスリザーブする。
  • .SC55_REVERB id,if {n1,...,n7} [V2]
    • .GS_REVERB id,if {n1,...,n7} [V3/zmc2]
    • (GS音源リバーブパラメータ設定)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ (1個もしくは7個)
      • 例1: .sc55_reverb {4} / reberb macroを4(Hall 2)に設定する。
      • 例2: .sc55_reverb {4,4,0,$40,$40,0,0 } / reverbでmacro=4(Hall2), character=4, PRE-LPF=0, LEVEL=$40(=10進の64), TIME=$40, DELAY FEEDBACK=0. SEND LEVEL TO CHORUS=0 に設定する。
  • .SC55_CHORUS id,if {n1,...,n8} [V2]
    • .GS_CHORUS id,if {n1,...,n8} [V3/zmc2]
    • (GS音源コーラスパラメータ設定)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ (1個もしくは8個)
      • 例1: .sc55_chorus {2} / chorus macroを2(Chorus 3)に設定する。
      • 例2: .sc55_chorus {2,0,$40,8,$50,3,$13,0} / chorusでmacro=2(Chorus 3), PRE-LPF=0. LEVEL=$40, FEEDBACK=8. DELAY=$50, RATE=3, DEPTH=$13, SEND LEVEL TO REVERB=0 に設定する。
  • .SC55_PART_SETUP pt,id,if {n1,…,n119} [V2]
    • .GS_PART_SETUP pt,id,if {n1,…,n119} [V3/zmc2]
    • (GS音源のパートパラメータ変更)
          • pt: 1~16 パートナンバー (10だとはリズムパート)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ
      • パラメータは119個まで。
  • .SC55_DRUM_SETUP map,key,id,if {n1,…,n8} [V2]
    • .GS_DRUM_SETUP map,key,id,if {n1,…,n8} [V3/zmc2]
    • (GS音源のドラムキットの設定変更)
          • map: 0,1 マップナンバー
          • key: 0~127 ノートナンバー
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ
      • パラメータは8個まで。
  • .SC55_PRINT id,if 文字列 [V2]
    • .GS_PRINT id,if 文字列 [V3/zmc2]
    • (GS音源コンソール文字列表示)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • str: 表示文字列 (32文字以内)
      • GS音源のコンソールに文字列を表示する。
      • 例:
      • .sc55_print SAMPLE SONG
  • .SC55_DISPLAY id,if {n1,...,n16} [V2]
    • .GS_DISPLAY id,if {n1,...,n16} [V3/zmc2]
    • (GS音源グラフィック表示)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ
      • GS音源のSC55のグラフィックディスプレイにドットパターンを表示する。 パラメータは必ず16個。
      • 例: 画面に'善'を出す
        • .sc55_display $10 { %0001000000010000 %0000100000100000 %0111111111111100 %0000000100000000 %0011111111111000 %0000000100000000 %0111111111111100 %0001000100010000 %0000100100100000 %1111111111111110 %0000000000000000 %0011111111111000 %0010000000001000 %0010000000001000 %0011111111111000 %0010000000001000 }

SC88専用命令

    • .SC88_MODE_SET md,id,if [V3/zmc2]
    • (SC88モード設定)
          • md: 0, 1 1, 2 もしくは single, double モード値 (後者の指定法はzmc3拡張)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
      • SC88のモード設定を行う。 mdはモード値を表し、md= 0 1 でsingleモード、 md= 1 2 でdoubleモードが設定される。
      • zmc3の場合、1,2の代わりにsingle, doubleでも同様の指定が可能。
      • 注: 本家Z-MUSIC V3のマニュアルでは 0,1で指定する旨記載されているが、1,2の誤り。
      • # 以前はこのマニュアル自体も間違えてました。すみません・・・
      • 例:
      • .sc88_mode_set 1,$10
    • .SC88_REVERB id,if {n1,...,n8} [V3/zmc2]
    • (SC88のリバーブパラメータ設定)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ (1個もしくは8個)
      • 大枠は.sc55_reverbと同じ。 パラメータn8がREVERB PRE-DELAY TIMEとなっている点が異なる。
    • .SC88_CHORUS id,if {n1,...,n9} [V3/zmc2]
    • (SC88のコーラスパラメータ設定)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ (1個もしくは9個)
      • 大枠は.sc55_chorusと同じ。 パラメータn9がCHORUS SEND LEVEL TO DELAYとなっている点が異なる。
    • .SC88_DELAY id,if {n1,...,n11} [V3/zmc2]
    • (SC88のディレイパラメータ設定)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ (1個もしくは11個)
      • 例1: .sc88_delay {0} / delay macroを0(Delay1)に設定する。
      • 例2: .sc88_delay {0,0,$61,1,1,$7f,0,0,$40,$50,0}
      • / delayでmacro=0(Delay1), PRE-LPF=0. TIME CENTER=$61(340msec), TIME RATIO LEFT=1(4%), TIME RATIO RIGHT=1(4%), LEVEL CENTER=$7f(127), LEVEL LEFT=0, LEVEL RIGHT=0,LEVEL=$40(64), FEEDBACK=$50(80), SENDLEVEL TO REVERB=0 に設定する。
    • .SC88_EQUALIZER id,if {n1,...,n4} [V3/zmc2]
    • (SC88のイコライザパラメータ設定)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ
      • パラメータは4個で、それぞれ
      • 例:
      • .sc88_equalizer $10 {0,$40,1,$40}
  • .SC88_PART_SETUP pt,id,if {n1,...,n127} [V3/zmc2]
    • .SC88_PART_PARAMETER pt,id,if {n1,...,n127} [V3/zmc2]
    • (SC88のパートのパラメータの設定変更)
          • pt: 1~16 パートナンバー (10だとはリズムパート)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • ni: パラメータ
      • おおむね.sc55_part_setupと同じ。
  • .SC88_DRUM_SETUP map,key,id,if {n1,...,n9} [V3]
  • (SC88のドラム・セットアップ設定)
        • map: 0,1 マップナンバー
        • key: 0~127 ノートナンバー
        • id: デバイスID (省略可能、初期値$10)
        • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
        • ni: パラメータ
      • MIDIポートifに接続されたSC88のドラム・セットアップの設定を行う。
      • パラメータ(n1n9)は9個まで任意の個数設定可能。
      • 例:
      • .SC88_DRUM_SETUP $10 {42,127,0,64,64,64,1,1,24}
  • .SC88_DRUM_NAME map,id,if str [V3] [未実装]
  • (SC88のドラムセット名の設定)
        • map: 0,1 または USER65, USER66 マップナンバー
        • id: デバイスID (省略可能、初期値$10)
        • if: 1~4 MIDI I/F ポート (省略可能、省略時 .CURRENT_MIDI_OUT で選択されたポート)
        • str: 文字列
      • MIDIポートifに接続されたSC88のドラムセット名の設定を行う。
      • mapはマップナンバーを表し設定範囲は0,1。 ユーザードラムセットの名前を設定する場合には、 USER65,またはUSER66という文字列を与えて指定する。
      • strはドラムセット名を表す文字列で、 "~"で括り12文字以内で指定する。
      • 例:
      • .SC88_DRUM_NAME USER66, $10 "my drum set"
  • .SC88_USER_INST bk,pgm,id,if {n1,...,n11} [V3] [未実装]
  • (SC88のユーザー音色の設定)
        • bk: 0,1 設定先音色バンク番号(0の時バリエーション64)
        • pgm: 1~128 設定先音色番号
        • id: デバイスID (省略可能、初期値$10)
        • if: 1~4 MIDI I/F ポート (省略可能、省略時 .CURRENT_MIDI_OUT で選択されたポート)
        • ni: パラメータ
      • MIDIポートifに接続されたSC88ユーザー音色の設定を行う。
      • bkは設定先音色バンク番号を表し、設定範囲は0,1。 bk=0がバリエーション番号64, bk=1がバリエーション番号65に対応する。
      • パラメータ(n1~n11)は、 11個まで任意の個数設定可能。
      • 例:
      • .SC88_USER_INST 0,4,$10 {1,0,10,64,64,64,64,64,64,64,64}
  • .SC88_USER_DRUM st,nt,id,if {n1,...,n12} [V3] [未実装]
  • (SC88のユーザードラムセットの設定)
        • st: 0,1 設定先ドラムセット番号(0の時ドラムセット番号65, 1で66)
        • nt: 0~127 登録先ノート番号
        • id: デバイスID (省略可能、初期値$10)
        • if: 1~4 MIDI I/F ポート (省略可能、省略時 .CURRENT_MIDI_OUT で選択されたポート)
        • ni: パラメータ
      • MIDIポートifに接続されたSC88のユーザードラムセットの設定を行う。
      • パラメータ(n1n12)は12個まで任意の個数設定可能。
      • 例:
      • .SC88_USER_DRUM 0,32,$10 {24,127,0,64,10,10,0,1,10,1,10,24}

XG音源専用命令

    • .XG_SYSTEM_ON id,if [zmc2]
    • (XG音源初期化)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
      • MIDIポートifに接続されたXG音源の初期化を行う。 idはXG音源のデバイスIDで省略可能、省略時は$10。
      • 例:
      • .xg_system_on
    • .XG_EXCLUSIVE id,if,comment {n1,n2,…,ni} [zmc3]
    • (XG音源へのエクスクルーシブメッセージ)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • comment: コメント文字列 (省略可能, '{'を含まない255文字以内の文字列,)
          • ni: パラメータ
      • XG音源へエクスクルーシブメッセージを送信する。 エクスクルーシブ・ヘッダは自動送信する。
      • なお、送信の際、 使用するヤマハ・エクスクルーシブ・タイプはパラメータチェンジ。
      • commentをつけることで、 '{'以外の255文字を用いて送信内容に関する注釈を与えることが出来る (省略可能)。
      • 例:
      • .XG_EXCLUSIVE $00,1,XG SYSTEM ON { $00,$00,$7E,$00 }
    • .XG_PRINT id,if str [zmc3]
    • (XG音源のディスプレイへの文字列表示)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • str: 表示させる文字列
      • MIDIポートifに接続されたXG音源のディスプレイに文字列を表示する。 文字列strは"~"で括り32文字以内に収めなければならない。
      • 例:
      • .XG_PRINT $10 "HELLO"
    • .XG_DISPLAY id,if {n1,n2,…,n16} [zmc3]
    • (XG音源グラフィックディスプレイへのドットパターン表示)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • n1n16: %0000000000000000~%1111111111111111
      • MIDIポートifに接続されたXG音源のグラフィックディスプレイにドットパターン(16x16)を表示する。 パラメータ(n1~n16)は必ず16個。
        • n1: 1段目のドットパターン
        • n2: 2段目のドットパターン
        • n16: 16段目のドットパターン
      • 例:
        • .XG_DISPLAY $10 { %0001000000010000 %0000100000100000 %0111111111111100 %0000000100000000 %0011111111111000 %0000000100000000 %0111111111111100 %0001000100010000 %0000100100100000 %1111111111111110 %0000000000000000 %0011111111111000 %0010000000001000 %0010000000001000 %0011111111111000 %0010000000001000 }
    • .XG_EQUALIZER id,if {n1,n2,…,n6} [zmc3]
    • (XG音源(5バンドEQ搭載機種) 5バンド・イコライザ・パラメータの簡易設定)
          • id: デバイスID (省略可能、初期値$10)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • n1n6: $34~$4c
      • MIDIポートifに接続されたXG音源(5バンドEQ搭載機種)のイコライザ・パラメータの設定を行う。 パラメータ(n1n6)は6個以内で任意の個数設定可能。 n1については、数値指定だけなく文字列による指定も可能。
        • n1: EQ TYPE (00:FLAT,01:JAZZ,02:POPS,03:ROCK,04:CLASSIC)
        • n2: EQ GAIN1 ($34~$4C:-12~+12dB)
        • n3: EQ GAIN2 ($34~$4c:-12~+12dB)
        • n4: EQ GAIN3 ($34~$4c:-12~+12dB)
        • n5: EQ GAIN4 ($34~$4c:-12~+12dB)
        • n6: EQ GAIN5 ($34~$4c:-12~+12dB)
      • 例:
      • .XG_EQUALIZER $10 {3,$43,$42,$40,$40,$42}
      • .XG_EQUALIZER $10 {ROCK,$43,$42,$40,$40,$42}

DX専用命令

    • .DX_BULK_DUMP dev,format No,if,comment {n1,...} [zmc3]
    • (DX7バルクダンプ送信)
          • dev: デバイスID (通常$00)
          • format No: フォーマット番号 (通常$00)
          • if: 1~4 MIDI I/F ポート (省略可能、 省略時 .CURRENT_MIDI_OUT で選択されたポート)
          • comment: コメント文字列 (省略可能, '{'を含まない255文字以内の文字列,)
          • ni: $00~$ff (それ以上の値も指定可能)
      • ヤマハ製のMIDI機器であるDX7に対してエクスクルーシブメッセージ (特にバルクダンプ)を送信する。 エクスクルーシブヘッダや転送バイト数・チェックサムは、 送信メッセージ内容から自動算出し自動送信する。
      • DX7のバルクダンプに限っては、 ヤマハの通常の音源のエクスクルーシブメッセージ仕様と若干異なる (チェックサムにバイトカウントを含まない) ため、 .YAMAHA_EXCLUSIVE では正しいデータを送信できない。 .EXCLUSIVEでしのぐか、 代わりにこれを用いること。
      • 主に、 XG音源のDX7プラグインボードの音色設定のために用いられることとなるだろう。

MU100/MU128専用命令

    • .MU100_BASIC_MAP id [zmc2]
    • .MU100_NATIVE_MAP id [zmc2]
  • .MU100_VOICE_MAP map,id,if [zmc3] MU100ボイスマップ設定
        • n: 0, 1 または basic, native
        • id: デバイスID (省略可能、初期値$10)
    • .mu100_basic_mapと.mu100_native_mapは それぞれMU basic map, MU native mapを選択する。
    • .mu100_voice_mapはmapで MU100のキャピタル音色のボイスマップを選択し、 map=0でMU basicマップ、 map=1でMU100Nativeマップが設定される。 map=0, map=1の代わりにそれぞれ map=basic, map=native としてもよい。
    • 例:
    • .MU100_VOICE_MAP 1
    • .MU100_VOICE_MAP basic

MT32系専用命令

U220/U20系専用命令

M1専用命令

現在作者工数不足につき省略