- 例:
- (B1) ベースチャンネルをMIDI基準に設定して...
- (A1,2) MIDIチャンネル1にトラック2を割り当てる
- (注意: 上記の例は(AMIDI1,2)とすることもでき、 通常こちらの表現が使われるため、 本MML (Bn)はあまり用いられない)
- (Dn) [V2]
- .JUMP n [V3/zmc2]
- (開発補助(デバッグコマンド有効/無効スイッチ))
- [@],[!],[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をタイと見なすかどうかの設定)
- 歴史的な理由により、 Z-MUSIC(V2)ではデフォルトで音長*1の音は常にタイとみなされる。 つまり、下記の2つの例の演奏結果はまったく同じとなる。
- 一方で、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] (ウエイトの挿入)
- 共通コマンド部の、この.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出力ポート選択)
- 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_SYSTEM_ON if [V3/zmc2]
- (GM音源初期化)
- .GM2_SYSTEM_ON if [zmc3]
- (GM2音源初期化)
- .SC55_INIT id,if [V2]
- .GS_INIT id,if [V3/zmc2]
- (GS音源初期化)
- .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ボイスリザーブ設定)
- {...}内のパラメータは必ず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_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個で、それぞれ