=n | ピッチモジュレーション/ARCC等 機能スイッチング |
|---|
[ECHO itv,dec,lpt] |
疑似エコー |
|---|---|
@Dn[DAMPER n] |
ダンパーペダル設定 |
@Rn[TRACK_MODE n] |
note off省略モード設定 |
`[ALL_SOUND_OFF] |
全トラックmute・強制消音 |
[KEY_REMAP note1,note2] |
音階のつけかえ |
\n |
フェードイン・フェードアウト |
|---|---|
[TRACK_FADER spd,src,dst] |
トラック・フェーダー |
[CH_FADER dev
ch,spd,src,dst] |
チャンネル・フェーダー |
[MASTER_FADER
dev,spd,src,dst] |
マスター・フェーダー |
|: ... :| | リピート |
|---|---|
[..] | 各種コマンド |
[----][BAR str][MEASURE str] |
小節線 |
[JUMP m] |
[未実装] 小節ジャンプ |
@Imk,dv,md[INSTRUMENT_ID mk,dv,md] |
MIDI楽器IDの登録 |
|---|---|
@Er,c,d[EFFECT
r,c,d,ef2,ef5][EFFECT.REVERB r][EFFECT.CHORUS c][EFFECT.DELAY d] |
エフェクタ設定 |
Ya,d[CONTROL a,d] |
コントロールチェンジ設定 |
@Yah,al,dh,dl[NRPN ah,al,dh,dl] |
NRPN設定 |
Xn1,n2,...[ROLAND_EXCLUSIVE n1,n2,…] |
ローランド系エクスクルーシブ送信 |
[YAMAHA_EXCLUSIVE n1,n2,…] |
ヤマハ・エクスクルーシブ送信 |
@Xn1,n2,...[MIDI_DATA n1,n2,…] |
エクスクルーシブ送信 |
Nc | MIDIチャンネル変更 |
|---|---|
@Nc | MIDIチャンネル変更 |
[CH_ASSIGN ch][ASSIGN ch] |
チャンネル切り替え |
W / Wt[SYNCHRONIZE] /
[SYNCHRONIZE t] |
同期待ち/他トラックへ同期信号送信 |
|---|---|
Jt[REPLAY t] |
トラック再演奏 |
[BACK ...] | 裏パート演奏指定 |
|---|---|
[BACK.REPEAT n] |
裏パートにループコマンドも送る |
[VELOCITY.LEVEL mode,
lv1, lv2, ... lv8][VELOCITY.DEPTH mode,
lv1, lv2, ... lv8]
|
[未実装] EVS振幅 |
|---|---|
[VELOCITY.SPEED
sp1, sp2, ... sp8]
|
[未実装] EVSスピード(周期) |
[VELOCITY.DELAY
dl0, dl1, ... dl8]
|
[未実装] EVSディレイ |
[VELOCITY.WAVEFORM w] |
[未実装] EVS波形選択 |
[VELOCITY.ORIGIN org] |
[未実装] EVS波形の原点設定 |
[VELOCITY.SWITCH mode] |
[未実装] EVSスイッチ |
[VELOCITY.SYNC m, c] |
[未実装] EVS同期モード設定 |
[VELOCITY.PHASE mode] |
[未実装] EVS波形位相制御 |
[AGOGIK.LEVEL mode,
lv1, lv2, ... lv8][AGOGIK.DEPTH mode,
lv1, lv2, ... lv8]
|
[未実装] アゴーギク振幅 |
|---|---|
[AGOGIK.DEEPEN sw, spd,
dpn, rpt] |
[未実装] アゴーギク振幅増加 |
[AGOGIK.SPEED
sp1, sp2, ... , sp8]
|
[未実装] アゴーギク・スピード(周期) |
[AGOGIK.DELAY
dl0, dl1, ... , dl8]
|
[未実装] アゴーギク・ディレイ |
[AGOGIK.WAVEFORM w] |
[未実装] アゴーギク波形選択 |
[AGOGIK.SWITCH mode] |
[未実装] アゴーギク・スイッチ |
[AGOGIK.SYNC m, c] |
[未実装] アゴーギク同期モード設定 |
[PATTERN id] |
[未実装] パターン展開 |
|---|---|
[EMBED id] |
[未実装] パターン展開(埋め込み) |
[COMMENT str] |
コメント埋め込み |
|---|---|
[EVENT category,class,data] |
イベント(歌詞等メタ情報)埋め込み |
[KEY ky] |
調の設定 |
[METER m] |
拍子の設定 |
[DUMMY] |
ダミーデータ挿入 |
=n(特殊機能のスイッチング)
ピッチ・モジュレーション、
ARCC0、
オートベンド、
アフタータッチ・シーケンス、
ベロシティ・シーケンス等の各機能のスイッチングを行う。
nは各ビット毎に意味を持ち、対応は以下の通りである。
各ビットを0にするとオフ、1にするとオンとなる。 初期値は0(全機能OFF)である。
=%00011 (ピッチ・モジュレーション/ARCCをON。それ以外をOFF)
一般的に、数値を指定する局面で、%を用いると、 パラメータを2進数で指定することができる。
注意: 例えば @m や@m0 とすることでもピッチモジュレーション機能を解除することが出来る (ARCCなどでも同様)。 しかし、 @mによるスイッチオフはなんらかのリセットデータを音源に送るが、 =によるスイッチオフでは送らない (Z-MUSIC内部でモジュレーションに関知しなくなるだけ)。
- @h40 @m127 c1 @m d1 / dが鳴る時はモジュレーションは0
- @h40 @m127 c1 =0 d1 / dが鳴る時もモジュレーションは掛かったまま
[ECHO itv,dec,lpt] [V3]
(疑似エコー)
LOOP
設定後の音符をitv単位に分割して演奏する。 分割した音符1つ1つに対して線形な元音量との増減decを与えることができる。 1チャンネルで疑似的なエコー効果を与える時などに使用する。
*'を記述すれば絶対音長(1〜32767)を指定することもできる。
LOOPでも指定することができる。
- [ECHO 8,-10,3] c1,,127
この例ではc1は c8 単位に 3回分割される。
そして音量変位は-10なので結果的には
c8,,-10&lc8,,-20&lc2.,,-30
のように演奏される。
- [ECHO 8,-10,LOOP] c1
では、分割回数が無限回になっているので
c1 をできる限り分割する。よって演奏結果は
c8,,-10&c8,,-20&c8,,-30&c8,,-40&
c8,,-50&c8,,-60&c8,,-70&c8,,-80
のようになる。
エコー機能の仕様制限事項は以下の通り。
{...}の中)に対しては効力を発揮せず
@Dn [V2][DAMPER n] [V3]
(ホールド(ダンパーペダル)の設定)ダンパーペダルの状態の設定を行う。
ON,OFFでも設定が可能。
このときはONがn=127,
OFFがn=0に対応する。
- @d0 cdefgab<c / ダンパーペダルオフ(通常)
- @d1 cdefgab<c @d0 / ペダルオン(音が消えない)
- [DAMPER OFF] (ダンパー解除する)
- [DAMPER 68] (ダンパーを値68でONに設定する)
@Rn [V2][TRACK_MODE n] [V3]
(ノートオフ送信制御・トラックモード設定)NORMAL,RHYTHM [V3]
そのトラックでのノートオフ処理を行うかどうかを設定する。
リズムマシンや一部の楽器のリズムキットは発音すればノートオフを送らずともよいものがある
(そういった楽器には「ノートオフモード」とか「ノーサスティン」といったパラメータがあるはずである)。
こういった楽器やチャンネルに対してこのコマンドを使えばドライバのノートオフ処理を省略でき、
演奏処理が幾分軽くなる。
このモードに入ると
Qコマンドの
影響を受けず、
エンベロープを最後まで実行するため、
音を細かく区切ったりなどというニュアンスは再現不可能になる。
n=0でノートオフ処理をする、
n=1でノートオフ処理をしない。
省略時、
及び初期状態は@R0や[TRACK_MODE NORMAL]、
つまり「ノートオフをする」モードに設定されている。
(注) ztomやz2m3では、通常@Rは無視される。 無視されないようにするためには、 ztomやz2m3で-Rスイッチの指定が必要。 MML @D (ダンパーペダル設定)も参照のこと。
- [TRACK_MODE RHYTHM] (ノートオフ処理を省略する)
` [V2] [ALL_SOUND_OFF] [V3]
(トラックミュート・強制消音)強制的にキーオフを行う。 そのトラック内において、その時点で発音中の音を全てミュートする。 ただし、 ダンパーONやキーオフ無しモードに設定されている場合はノートオフできない。
(注: zmc3/z2m3では未サポート。)
- [ALL_SOUND_OFF]
[KEY_REMAP note1,note2] [V3]
(音階のつけかえ)
note1で記述された音階を、 すべてnote2に変換した上で演奏する。 和音・ポルタメントを問わず、 そのトラックの中のすべての音階に対して有効。 ドラム音を変更する場合などに便利。
note1,note2に書けるMMLは以下の通り;
| 音階 | c〜b(8個まで) |
|---|---|
| 調号 | ! # + - |
| オクターブ変更 | O-1〜O9 < > |
(注) 元々オリジナルのV3では、
マニュアルに本機能の説明が記載されていないものの、
上記のような機能を普通に使うことができた。
要するに、隠しMML的なもの。
ただし、オリジナルのV3では、
コンマ(,)の前後にスペースを入れるとエラーになるので注意。
- [KEY_REMAP o3c,o4c] (o3cという音を、以後すべてo4cとして扱う)
\n [V2]
(フェードイン・フェードアウト)負の数を指定した場合はフェードインとなり、 正の数を指定した場合はフェードアウトとなる。 0を指定するとフェードイン/フェードアウトモード解除となる。
\コマンドは各トラックごとに設定可能なので、各トラック違った速度で
フェードインやフェードアウトが実行可能。
フェードアウトでは出力音量が0になった時点でそのトラックの演奏を終了する。
n=0のフェードイン/フェードアウト解除は処理そのものを中止するだけなので、 元の演奏状態に戻したい場合は ボリュームコマンド(V,@V)などを再設定する必要がある。
[TRACK_FADER spd,src,dst] [V3]
(トラック・フェーダー)spd: 0〜65535
src: 0〜128
dst: 0〜128
トラックフェーダーの動きを設定する。
基本MML \とほぼ同等の機能を持つ。
OFFという文字パラメータでも指定可能。
[TRACK_FADER 10,128,0]
(速度10で原音量から無音状態へフェーダーを移動する
(いわゆるFADEOUT))
[CH_FADER dev
ch,spd,src,dst] [V3]
(チャンネル・フェーダー)ALL,
MIDI1-,MIDI2-,
MIDI3-,MIDI4-
ch: 1〜16 または ALL
spd: 0〜65535
src: 0〜128
dst: 0〜128
指定したチャンネルのフェーダーの動きを設定する。
| パラメータ | 操作対象音源 |
|---|---|
ALL | 全デバイス |
MIDI1- | MIDI出力ポート1 |
MIDI2- | MIDI出力ポート2 |
MIDI3- | MIDI出力ポート3 |
MIDI4- | MIDI出力ポート4 |
ALLを指定する。ALLと指定する。
OFFという文字パラメータでも指定可能。
- [CH_FADER MIDI1-10,10,128,0]
(MIDI出力ポート1の10チャンネルを速度10で原音量から無音状態へフェーダーを移動する
(いわゆるフェードアウト))
- [CH_FADER ALL-2,0,64,64]
(全デバイスのチャンネル2をフェーダーレベル64に設定し固定する)
- [CH_FADER ALL,10,0,128]
(全デバイスの全チャンネルを無音状態から原音量までフェーダーを移動させる。
(いわゆるフェードイン))
[MASTER_FADER
dev,spd,src,dst] [V3]
(マスター・フェーダー)ALL,
MIDI1,MIDI2,
MIDI3,MIDI4
spd: 0〜65535
src: 0〜128
dst: 0〜128
マスターフェーダーの動きを設定する。
| パラメータ | 操作対象音源 |
|---|---|
ALL | 全デバイス |
MIDI1 | MIDI出力ポート1 |
MIDI2 | MIDI出力ポート2 |
MIDI3 | MIDI出力ポート3 |
MIDI4 | MIDI出力ポート4 |
OFFという文字パラメータでも指定可能。
- [MASTER_FADER MIDI1,10,128,0]
(MIDI出力ポート1を速度10で原音量から無音状態へフェーダーを移動する
(いわゆるフェードアウト))
- [MASTER_FADER FM,0,64,64]
(FM音源をフェーダーレベル64に設定し固定する)
- [MASTER_FADER ALL,10,0,128]
(全デバイスを無音状態から原音量までフェーダーを移動させる。
(いわゆるフェードイン))
|
ZMUSIC Ver.3.0では トラックフェーダー、 チャンネルフェーダー、 マスターフェーダーの 3つのフェーダーがあります。 このうちトラックフェーダーとチャンネルフェーダーは、 操作対象とするフェーダーの指定方法が違うだけで、処理方式も機能も同一です。 つまり、 たとえばトラックフェーダーが実行されているトラックのチャンネルに対してフェーダー制御を行うと、 それまで実行されていたトラックフェーダーは無効となり、 チャンネルフェーダーとして新たな設定で制御されるようになります。 一方マスターフェーダーはまったく前者2つのフェーダーとは無縁で、 独立した処理系で実行されます。 よってトラックフェーダー/チャンネルフェーダーと同時に独立した制御を行うことができます。 このことからトラックフェーダー/チャンネルフェーダーは、 トラック毎の演奏表現の一手段として使用し、 マスターフェーダーは曲全体の音量制御に利用するのが効果的な使用法といえます。 |
|: ... :|(リピート) [V2]|:n … |r1 … :| … |r2 … :| [V2]
|:n … | … :| [V2]
(1)のケース
|:n 〜 :|で囲まれたmmlを n回演奏する
(n省略時はn=2が自動設定される)。
|ri を |:n 〜 :| の中に挿入すると、 |ri から :| までの演奏データを繰り返し ri回目に演奏させることが出来る。
|:〜:|は 8重(*) まで括ることが可能で、複雑なシーケンスも可能である。
各値の設定可能範囲は1≦n, ri≦255である。
- |:3 a |:2 b :| c:|
/ (abbc abbc abbcの様に演奏される)
- |:2 a |1 b :| |2 c:|
/ (ab ac の様に演奏される)
(*注意) zmc2や[V3]ではメモリの許す限り無限にネストできる。
(2)のケース| を |:n 〜 :| の中に挿入すると、
| 以降に書かれた演奏データは最後の繰り返し時には演奏はしないといった特殊例になる。
- |:5 a | b :|
/ (ab ab ab ab aの様に演奏される)
(注) (1)(2)のケースを、一つのループ構造内で混在させることはできない。
- |:4 a | b :| |4 c :|
/ これはエラーとなる
( | ... :| がきた段階でループが完結し、|4...が余計となる)
- |:8 |:4 a | b :| |4 c :|
/ これはOK (最後の |4 は、外側のループ(|:8)に対応する)
[-]コマンド [V2]
[do] 〜 [loop] |
囲まれた間を半永久的にループ演奏する。 |
|---|---|
[d.c.] |
始めに飛ぶ(1回のみ有効)。 |
[d.s.] |
[segno]または[$]へ
飛ぶ(1回のみ有効)。 |
[segno] [$] |
[d.s.]からの飛び先 |
[tocoda] [*] |
[coda]へ飛ぶ(1回以上有効)。 |
[coda] |
[tocoda]や[*]からの飛び先 |
[fine] [^] |
[d.c.],[d.s.]を
実行した後にここで演奏終了する。 |
[back],[back.repeat] |
裏パート演奏の項を参照 [zmc2] |
以下のコマンドは(D1)状態の時のみ有効となる。
(D0)と
(D1)の
切り替えは共通トラック部だけでなく、
演奏トラック中の任意の位置でも行うことができる。
[!] |
次の[!]までジャンプする。
ジャンプ後の音源やZ-MUSICの内部パラメータはそこまで通常に演奏を行った時と同じになっている。
[!]が偶数個設定されなかった場合は、
正常に動作しない。 |
|---|---|
[@] |
次の[@]までジャンプする。
ジャンプ後の音源やZ-MUSICの内部パラメータはそこまで通常に演奏を行った時と同じになっている。
ほぼ[!]と同機能だが、あるひとつのトラックで設定すると他のトラックも同時にジャンプを開始する点が違う。
[@]が偶数個設定されなかった場合は、正常に動作しない。 |
[end] |
いかなる状態の時にもこれを発見するとそのトラックは演奏を終える。 |
[---------------] ('-'は幾つでもよい) [V3][BAR str] [V3][MEASURE str] [V3]
(小節線)
五線譜でいう小節線に相当する。
命令自体に機能はないが、
小節ジャンプMML[JUMP]と併用して、
曲データの調整に用いることができる。
[COMMENT str]を用いること。
トラックの初期状態は第0小節に相当する。
- [MEASURE Aパート]
- [----------------]
[JUMP m] [V3]
[未実装]
mで表される小節の先頭へジャンプする。
小節はあらかじめMML[BAR]などで定義しておく。
ジャンプ後の音源やZ-MUSICの内部パラメータはそこまで通常に演奏を行った時と同じになっている。
基本MMLの
[@]
とほぼ同等の機能を持つが、該当小節がない場合は正常に演奏されない。
なお、本mmlはあくまでデバッグ用途を想定しているため、
[jump]を用いても、
前の小節にジャンプすることはできない。
前のパートに戻りたい場合は、代わりに
ループコマンドや、
他の演奏制御手段を用いること。
(i)
.assign TR1,MIDI1
(t1)@1 v12
(t1)[jump2] /第2小節から演奏
(t1)cde /第0小節
(t1)[bar]
(t1)fga /第1小節
(t1)[bar]
(t1)b<cd /第2小節
(t1)[bar]
(p)
(この例では b<cd のみが演奏される。)
@Imk,dv,md [V2][INSTRUMENT_ID mk,dv,md] [V3]
(MIDI楽器IDの登録)
Z-MUSICにそのトラックを演奏する楽器のメーカーID、デバイスID、 モデルIDを設定する。 所有しているMIDI楽器の各値については楽器のマニュアルを参照のこと。
これは特に設定しなくても通常のコマンドの動作には全く影響しない。
ただし、
に関しては楽器個別の動作をするため、
これらのコマンドを使用する前には必ず設定しなければならない。
初期値なし。
[PANPOT RND] (ランダムパンポット; [zmc3])
| mk | メーカーID | ROLAND=$41, KORG=$42, YAMAHA=$43など |
|---|---|---|
| dv | デバイスID | 各ユーザーが楽器に設定した値。 特に設定した覚えのない場合は、 その楽器のデフォルトのデバイスIDを設定する |
| md | モデルID | MT32=$16, SC55=$42 or $45 モデルIDが2バイトのものには未対応 |
@Er,c,d [V2]
[EFFECT
r,c,d,ef2,ef5]
[V3][EFFECT.REVERB r] [V3][EFFECT.CHORUS c] [V3][EFFECT.DELAY d] [V3]
(エフェクタ設定 / リバーブ, コーラス, ディレイ設定)@Ech,sw [V2]
(MT-32エフェクタ設定)
MIDI楽器のエフェクトをコントロールする。
通常コントロールチェンジのエフェクト1(GSではリバーブ)へrを、
エフェクト3(GSではコーラス)へcを、
エフェクト4(GSではディレイ)へdを出力する。
[EFFECT.REVERB r]
[EFFECT.CHORUS c]
[EFFECT.DELAY d]は、
それぞれリバーブ(エフェクト1), コーラス(エフェクト3),
ディレイ(エフェクト4)のかかり具合を設定する。
@Iコマンドにて IDをローランドMT32に設定してある場合のみ、 パートch (1≦ch≦8)のエフェクトのスイッチを設定する。 swでオン/オフを設定する(1がon,0がoff)。
この他、 [V3]ではMIDI規格で定められているエフェクト2,エフェクト5にも値が設定可能。 (よく使われるエフェクト1,3,4を先頭に先頭に持ってきてある)
ただし、 楽器側がこれらのエフェクト制御に対応していない場合は無意味。 パラメータは任意のものを省略できるが、 すべて省略するとエラーとなる。 パラメータの有効範囲は0≦r,c,d≦127。初期値は不定。
注) パラメータdについては、 オリジナルのZ-MUSIC V2では未サポート。 Z-MUSIC V3やzmc2では対応。
- [EFFECT 0,10,5] (REVERBを0,CHORUSを10,DELAYを5に設定する)
- [EFFECT.REVERB 127] (リバーブの設定を127にする)
- [EFFECT.CHORUS 127] (コーラスの設定を127にする)
- [EFFECT.DELAY 127] (ディレイの設定を127にする)
Ya,d [V2][CONTROL a,d] [V3]
(コントロールチェンジ送信)MIDI楽器のコントロールチェンジ a番に値dを送信する。 パラメータa,dの設定範囲は共に0≦a,d≦127。 コントロールチェンジについての詳細は、 MIDI楽器のマニュアルのインプリメンテーション・チャートを参照。
y$7e,0 / GSで該当チャンネルをMONOモードに設定する
[CONTROL 11,127] /
コントロールチェンジ11番(EXPRESSION)に127を設定する
@Yah,al,dh,dl [V2][NRPN ah,al,dh,dl] [V3]
(NRPN送信)ah, alはで表されるMIDI楽器のNRPNアドレスに、 データdh, dlを送信する。 MIDI楽器には、 MIDI規格には定められていないレジスタを持つことが許されており、 このコマンドはそのレジスタへの書き込みを行う。
ah, alはそれぞれNRPNアドレス上位下位を表し、
dh, dlはデータの上位下位を表す。
dlのみ省略可能。
@y$1c,42,$00 / GSで close hi-hatのパンを左に振る
[NRPN 1,8, $40] /
NRPN $0108にデータ$40**を設定。下位バイトは省略
Xn1,n2,... [V2][ROLAND_EXCLUSIVE n1,n2,…] [V3]
(ローランド系エクスクルーシブ送信)
ローランド系の楽器にエクスクルーシブメッセージ送信を行う。
このmmlを使用する前に、あらかじめ@Iコマンドや
[INSTRUMENT_ID]で、
メーカーIDをローランド($41)に設定しておく必要がある。
データの転送方式は「ワン・ウェイ・コミュニケーションのデータセット」
(コマンドID=$12)。
データはいくつでも記述可能。 各値の設定範囲は0≦ni≦127であるが、 これ以上の値を設定した場合は7ビットずつに分割されて送信される (例:8192→$00,40の様に下位、上位の順に送信される)
また、"〜"で括ればその文字コードを送信できる。ただし、
同機能の共通コマンド
.ROLAND_EXCLUSIVE
とは異なり複数行にパラメータを分けて書くことはできない。
- x$40,$00,$7f,$00 / GS reset
- [ROLAND_EXCLUSIVE $40,$00,$7f,$00]
(ローランドエクスクルーシブとして
$40,$00,$7f,$00をMIDI楽器へ送信)
[YAMAHA_EXCLUSIVE n1,n2,…] [V3]
(ヤマハ・エクスクルーシブ)
ヤマハ系の楽器にエクスクルーシブ・メッセージ送信を行う。
このmmlを使用する前に、あらかじめ@Iコマンドや
[INSTRUMENT_ID]で
メーカーIDをヤマハ($43)に設定しておくことが前提。
データの転送方式は「バルク・ダンプ」が使用される。
データはいくつでも記述可能。 各値の設定範囲は0≦ni≦127であるが、 128以上の値を設定した場合は7ビットずつに分割されて送信される。
(例:8192→$00,40の様に一般的なMIDI慣例に従い、下位、上位の順に送信される)
また、"〜"で括ればその文字コードを送信できる。
ただし、同機能の共通コマンド
.YAMAHA_EXCLUSIVE
とは異なり複数行にパラメータを分けて書くことはできない。
ヤマハ・エクスクルーシブに不可欠な転送バイト数は自動的に送信される。
本命令はリバーブパラメータの書き換えや音色のパラメータ単位の書き換えを行うのに有効だが、 楽器のメモリーを直接操作するものなので、 各自の責任のもとで使用すること。
- [YAMAHA_EXCLUSIVE $00,$00,$7e,$00]
(ヤマハ・エクスクルーシブとして
$00,$00,$7e,$00をMIDI楽器へ送信)
@Xn1,n2,... [V2][MIDI_DATA n1,n2,…]
[V3]
(MIDIデータ送信)MIDIデータの送信を行う。 メーカーや楽器の種類には無関係でチェックサム等も発信しない。 データはいくつでも記述可能。 各値の設定範囲は0≦ni≦255であるが、 256以上の値を設定した場合は7ビットずつに分割されて送信される。 (8ビットでない点に注意)
(例:8192→$00,40の様に下位、上位の順に送信される)
また、"〜"で括ればその文字コードを送信できる。
ただし、同機能の共通コマンド
.MIDI_DATAとは
異なり複数行にパラメータを分けて書くことはできない。
楽器のメモリーを書き換える場合もあるので、 各自の責任のもとで使用すること。
- @x$f0,$41,$10,$42,$12,$40,$00,$7f,$00,$41,$f7 / GS reset
- [MIDI_DATA $b0,11,127] ($b0,11,127を送信する)
- [MIDI_DATA "ABC"] ($41,$42,$43を送信する)
Nc [V2] (チャンネル変更)[V3]では、チャンネル変更を行うとポートが常に1になるが、 [zmc3] v0.98.10以降では、 ポートが複数ある場合でも、 使用しているポート内でのチャンネル変更が可能。たとえば、 (B1)で、 現在MIDI2-1をアサインしているときに、 n3 とすると、 V3ではMIDI1-3にチャンネルが変更され、 zmc3ではMIDI2-3にチャンネルが変更される。
@Nc [V2] (チャンネル変更)[CH_ASSIGN ch] [V3][ASSIGN ch] [V3]
(チャンネル切り替え)MIDI1-1〜MIDI1-16,
MIDI2-1〜MIDI2-16,
MIDI3-1〜MIDI3-16,
MIDI4-1〜MIDI4-16
Nや
@Nの機能に相当するが、
文字列でチャネル指定できるのが特徴。
- [CH_ASSIGN MIDI3-1] (そのトラックをMIDI3-1に変更する)
W [V2],
[SYNCHRONIZE] [V3]
(他のトラックから同期信号が来るまで演奏処理を中断する) Wt [V2],
[SYNCHRONIZE t] [V3]
(同期信号送信)同期待ちしているトラックtに対して同期信号を送る。設定範囲は [V2]の場合 1≦t≦80 で、 [V3]の場合 1≦t≦65535。
値tを省略すると、これは「同期待ち」の指示となり、 直ちに演奏をひとまず中断し他のトラックから同期信号が送られるまで演奏処理を停止する。
(t1) cdef w2 / トラック2へ同期送信
(t2) w gab<c / 同期信号受信まで待機
この例では結果的にはcdefgab<cが演奏される。
Jt [V2]
[未実装][REPLAY t] [V3]
[未実装]
トラックtを強制的に初めから演奏開始にする
(zmc2/ztom未サポート)。
演奏が終了していても、演奏中であっても、
演奏開始を受けたトラックは最初から演奏を始める。
設定範囲は1≦t≦65535。
(t1) @1 v15 o4 q8 [REPLAY 2]r2[REPLAY2]
(t2) @1 v15 o4 q8 l8cdef
この例では結果的にはcdef cdefが演奏される。
[BACK ...] [zmc2]
(裏パートデータ設定)単一トラックで、 「このコードを鳴らしつつ別の主旋律を演奏する」といった場合に用い、 わざわざ別トラックを確保してmmlを記述するのがおっくうな場合や、 2trk分の情報を1trkに詰め込んだ方が記述しやすい場合... ギターの演奏やキーボードの右手左手同時演奏など... に便利。
たとえば、
[back 'c1eg'] gag<c
(t1)gag<c
(t2)'c1eg'
直前の[back...]の演奏が終わっていないのに次の[back...]が現れると
Warningが出る。この場合期待される演奏とはならないため、
注意が必要。
[back c1] c4 [back d1] / c1の演奏終了前にd1が来る
(t1)w2 gag<c
(t2)w 'c1eg'
[BACK.repeat n] [zmc2] (裏パートリピート設定)
|: |n | :|
[d.c.][segno][$][d.s.][coda][tocoda][*][fine][^][do][loop]
[end][!][@]
[back.repeat on] |: [back eg] ce :|
(t1) |: w2 ce :|
(t2) |: w eg :|
[VELOCITY.LEVEL mode,
lv1, lv2, ... lv8] [V3]
[未実装][VELOCITY.DEPTH mode,
lv1, lv2, ... lv8] [V3]
[未実装]OFF, OPTIONAL,
ON EVSモード
EVSとはZMUSIC Ver.1.0からの機能であるベロシティ・シーケンスを拡張したもので、 発音音符のベロシティをビブラートやARCCのように算術波形やユーザー波形に沿って変化させる機能である。 本命令は、このEVSの変化振幅を設定するもの。
modeとはEVSの動作方式を設定するパラメータ。 以下にmodeと対応する動作を示す。
ONOFFOPTIONAL[VELOCITY.DELAY]で設定された音符数毎にlv1からlv8のEVS振幅を切り換えていく。modeは省略するとスイッチはそれまでの設定を保持したままとなる。 lv1〜lv8のEVS振幅は任意の位置で省略可能で、 数値の頭に±を付けることによって相対的な値の指定も可能。例えば
といった記述ができる。 省略した部分は前の値を持続するということになり、その間は振幅の変更は行われない。 相対指定時にオーバーフロー/アンダーフローを起こした値は有効範囲内の最大値,最小値に修正される。
[VELOCITY.SPEED
sp1, sp2, ... sp8]
[V3]
[未実装]EVSの振動速度を設定する。 最大8つの振幅変化に対応した振動速度変化の設定を行う。 sp1〜sp8は速度値で設定範囲は1≦sp1〜sp8≦32767。
実際の波形にどう影響するかは拡張MML[VELOCITY.WAVEFORM]の項で解説するが、
値が小さいほど高速に、値が大きいほど低速に音が振動する。
sp1〜sp8の振動速度は任意の位置で省略可能だが、 初期値を持たないので注意。
[VELOCITY.DELAY
dl0, dl1, ... dl8]
[V3]
[未実装]EVSの動作モードの一つである 「OPTIONAL」モードにおけるEVSの振幅切り換えタイミングを決定する区間時間の設定を行う。
dl0は最初のEVSが実行されるまでのディレイ(遅延時間)に相当し、 音符個数値で指定する。有効範囲は0〜65535。初期値は0。
dl1〜dl8は次の振幅切り換えまでの区間時間で、 これも音符個数値で指定する。有効範囲は0〜65535。初期値は無し。
dl0〜dl8の任意のものを省略可能だが、 dl1〜dl8は初期値を持たないので注意。
[VELOCITY.WAVEFORM w]
[V3]
[未実装]EVS波形を選択する。
wの0〜4はプリセット波形に割り当てられている。
またはプリセット波形は
SAW (w=0: 鋸歯波に対応)
SQUARE (w=1: 矩形波に対応)
TRIANGLE (w=2: 三角波に対応)
S.SAW (w=3: ワンショット鋸歯波に対応)
RANDOM (w=4: ランダム波に対応)
という文字パラメータを用いて指定することもできる。
初期値は w = 2 の三角波。
w=5〜7はリザーブ。
w=8〜32767はユーザー定義波形となる。
ユーザー波形の登録については、
共通コマンドの
.WAVE_FORMを参照。
以下に波形と各パラメータとの関係を示す。
[VELOCITY.DEPTH]([VELOCITY.LEVEL])
[VELOCITY.DELAY]
[VELOCITY.ORIGIN]
[VELOCITY.SPEED]
波形番号0:鋸歯波 (振幅が正の時) VO→____ _ ←──→\ \ \ \ ↑ VD \ \ \ \ | \ \ \ \ |VL \ \ \ |\↓ | | ̄ VS 波形番号0:鋸歯波 (振幅が負の時) VO→____ _ ←──→ / / / /↑ VD / / / / |VL / / / / | / / / /| ↓ | |  ̄ VS 波形番号1:矩形波 (振幅が正の時) VO→____ _ ←──→ ̄ ̄  ̄ ̄  ̄ ̄  ̄ ̄ ↑ VD | |VL __ __ __ __↓ | |  ̄ VS 波形番号1:矩形波 (振幅が負の時) VO→____ _ ←──→  ̄ ̄  ̄ ̄  ̄ ̄  ̄ ̄ ↑ VD |VL | __ __ __ __ ↓ | |  ̄ VS 波形番号2:三角波 (振幅が正の時) VO→____ _ ←──→\ /\ / ↑ VD \ / \ / | |\ / \ / |VL | \/ \/ ↓ |←→|  ̄ VS 波形番号2:三角波 (振幅が負の時) VO→____ _ ←──→ /\ /\ ↑ VD / \ / \ | /| \ / \ |VL / | \/ \ ↓ |←→|  ̄ VS 波形番号3:鋸歯波シングル (振幅が正の時) VO→____ _ ←──→\ ↑ VD \ | \ |VL |\↓ | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ VS 波形番号3:鋸歯波シングル (振幅が負の時) VO→____ _____________ ←──→ /↑ VD / |VL / | /| ↓ | |  ̄ VS 波形番号4:ランダム波 (振幅が正の時) 波形番号8〜32767:ユーザー波形 (振幅が正の時) 波形データ列が+5,−5,+10,+3,0の場合・・・ +10*VL/32 +5*VL/32 ̄ ̄  ̄ ̄ __+3*VL/32 VO→──── ── ←──→ __ 0*VL/32 VD -5*VL/32 ←→ VS 波形番号4:ランダム波 (振幅が負の時) 波形番号8〜32767:ユーザー波形 (振幅が負の時) 波形データ列が+5,−5,+10,+3,0の場合・・・ +5*VL/32  ̄ ̄ 0*VL/32 VO→──── ── ←──→__  ̄ ̄-3*VL/32 VD -5*VL/32 __ -10*VL/32 ←→ VS
[VELOCITY.ORIGIN org]
[V3]
[未実装]
EVS波形の基準値を設定する。
この値を中心に
[VELOCITY.DEPTH]([VELOCITY.LEVEL])で設定した振幅で振動する。
この値は
[VELOCITY.WAVEFORM]
の図解中のVOに相当する。
初期値は127。
[VELOCITY.SWITCH mode]
[V3]
[未実装]OFF, OPTIONAL, ON
EWS動作スイッチ
EVSの動作制御を行う。
modeは
[VELOCITY.DEPTH]([VELOCITY.LEVEL])のパラメータのmodeと同等。
modeは数値で与えることもでき、この時は
0=OFF, 1=OPTIONAL, 2=ON
に対応する。
[VELOCITY.SYNC m, c]
[V3]
[未実装]OFF, ON
またはより高度な設定(後述)
OFF, OPTIONAL, ON
EVS波形の初期化(リセット)タイミングの設定を行う。
mは同期モードの設定値。
0は非同期,1は同期に対応し、
0と1はそれぞれ文字列OFF, ONにも対応する。
mをON,OFFといった文字列にて設定することも可能。
「同期」に設定した場合は小節線([BAR])のときにEVS波形の初期化を行う。
「非同期」にした場合は発音と無関係にEVSを続行する。
mは数値指定では0,1以外に、 以下のように2進数で設定すればより高度な初期化設定が行える。 []は初期設定を表す。
上から分かるように、mの初期値は0となっている。
cは同期ディレイにあたり、 実際にはmで指定した条件がc回成立すると波形が初期化されることになる。 cの初期値は1。
[VELOCITY.PHASE mode]
[V3]
[未実装]NORMAL, REVERSE
(INVERSE)
EVS波形の位相を制御する。
通常とデフォルト状態では
mode = 0 (NORMAL)に相当し、
[VELOCITY.WAVEFORM]の項で図解した波形が実行される。
一方 mode=1(REVERSE)では
[VELOCITY.WAVEFORM]の項で図解した波形においてVOを中心に反転した波形が実行される。
[AGOGIK.LEVEL mode,
lv1, lv2, ... lv8] [V3]
[未実装][AGOGIK.DEPTH mode,
lv1, lv2, ... lv8] [V3]
[未実装]OFF, 1/8,
OPTIONAL,
ON アゴーギクモード
アゴーギクとは演奏速度(テンポ)を一定の法則にしたがって変動させる効果のことをいう。 ZMUSIC Ver.3.0では、 ビブラートや ARCCのような算術波形やユーザー波形に沿ってテンポを変化させることができ、 これをアゴーギク機能と呼ぶ。
[AGOGIK.DEPTH]([AGOGIK.LEVEL])はアゴーギクの振幅の設定を
lv1〜lv8において行う。
modeはアゴーギクの動作方式を設定するパラメータ。
以下にmodeと対応する動作を示す。
ONOFF1/8OPTIONAL[AGOGIK.DELAY]で行う。
modeは省略するとスイッチはそれまでの設定を保持したままとなる。 lv1〜lv8のアゴーギク振幅は任意の位置で省略可能で、 数値の頭に±を付けることによって相対的な値の指定も可能。 例えば
[AGOGIK.LEVEL optional 64,,-10,+5]
といった記述ができる。 省略した部分は前の値を持続するということになり、 その間は振幅の変更は行われない。
相対指定時にオーバーフロー/アンダーフローを起こした値は有効範囲内の最大値,最小値に修正される。
-
[AGOGIK.LEVEL 1/8 0,0,10,20,30]
modeを1/8とし、lv1=0,lv2=0,lv3=10,lv4=20,lv5=30と設定した。
lv6,lv7,lv8は省略(未設定)。
[AGOGIK.DEEPEN
sw,
spd,
dpn,
rpt]
[V3]
[未実装]OFF, ON アゴーギク機能の有効/無効スイッチ
アゴーギクの振幅の増加/減少を設定する。
OFF, ONOFFで無効に、ONで有効に設定される。
-
[AGOGIK.DEEPEN ON,6,+8,10]
(増減スピード6で10回振幅を8増加させる)
[AGOGIK.SPEED
sp1, sp2, ... , sp8]
[V3]
[未実装]アゴーギクの振動速度を設定する。 最大8つの振幅変化に対応した振動速度変化の設定が行える。 設定範囲は1≦sp1〜sp8≦32767。
実際の波形にどう影響するかは拡張MML
[AGOGIK.WAVEFORM]の項で解説するが、
値が小さいほど高速に、値が大きいほど低速に音が振動する。
sp1〜sp8の振動速度は任意の位置で省略可能だが、 初期値を持たないので注意。
-
[AGOGIK.SPEED 10,8,20]
(sp1=10,sp2=8,sp3=20,sp4〜sp8は省略(未設定))
[AGOGIK.DELAY
dl0, dl1, ... , dl8]
[V3]
[未実装]アゴーギクの動作モードの一つである「OPTIONAL」モードにおけるアゴーギクの振幅切り換えタイミングを決定する区間時間の設定を行う。
dl0は最初のアゴーギクが実行されるまでのディレイ(遅延時間)に相当し、 絶対音長値で指定する。有効範囲は0〜65535。初期値は0。
dl1〜dl8は次の振幅切り換えまでの区間時間で、 これも絶対音長値で指定する。有効範囲は0〜65535。初期値は無し。
dl0〜dl8の任意のものを省略可能だが、 dl1〜dl8は初期値を持たないので注意。
-
[AGOGIK.DELAY 10,24,12,12,12,28,28,12,12]
dl0=10,dl1=24,dl2=12,dl3=12,dl4=12,dl5=28,dl6=28,dl7=12,dl8=12が設定される。
[AGOGIK.WAVEFORM w]
[V3]
[未実装]アゴーギク波形を選択する。
wの0〜4はプリセット波形に割り当てられている。
またはプリセット波形は
SAW (w=0: 鋸歯波に対応)
SQUARE (w=1: 矩形波に対応)
TRIANGLE (w=2: 三角波に対応)
S.SAW (w=3: ワンショット鋸歯波に対応)
RANDOM (w=4: ランダム波に対応)
という文字パラメータを用いて指定することもできる。
初期値は w = 2 の三角波。
w=5〜7はリザーブ。
w=8〜32767はユーザー定義波形となる。
ユーザー波形の登録については、
共通コマンドの
.WAVE_FORMを参照。
以下に波形と各パラメータとの関係を示す。
[AGOGIK.DEPTH] ([AGOGIK.LEVEL])
[AGOGIK.DELAY]
[TEMPO] ([@TEMPO], T, @T)
[AGOGIK.SPEED]
波形番号0:鋸歯波(SAW) (振幅が正の時) _ / / / / /↑AL T→____/ / / / / ↓ ←──→ / / / /  ̄ AD / / / /| | | AS 波形番号0:鋸歯波 (振幅が負の時) \ \ \ \ T→____ \ \ \ \ _ ←──→\ \ \ \ \ ↑ AD \ \ \ \ |\↓AL | | ̄ AS 波形番号1:矩形波 (振幅が正の時)  ̄ ̄  ̄ ̄  ̄ ̄  ̄ ̄ T→____ _ ←──→ ↑AL AD __ __ __ __↓ | |  ̄ AS 波形番号1:矩形波 (振幅が負の時) _  ̄ ̄  ̄ ̄  ̄ ̄↑AL T→____ ↓ ←──→  ̄ AD __ __ __ | | AS 波形番号2:三角波 (振幅が正の時) _ /\ /\ /↑AL T→____/ \ / \ / ↓ ←──→ \ / \ /|  ̄ AD \/ \/ | | | AS 波形番号2:三角波 (振幅が負の時) /\ /\ T→____ / \ / \ _ ←──→\ / \ / |\ ↑AL AD \/ \/ | \↓ | | ̄ AS 波形番号3:鋸歯波シングル (振幅が正の時) _____________ /↑AL T→____/| ↓ ←──→| |  ̄ AD AS 波形番号3:鋸歯波シングル (振幅が負の時) T→____ _ ←──→\ ↑ AD |\↓AL | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ AS 波形番号4:ランダム波 (振幅が正の時) 波形番号8〜32767:ユーザー波形 (振幅が正の時) 波形データ列が+5,−5,+10,+3,0の場合・・・ +10*AL/32 +5*AL/32 ̄ ̄  ̄ ̄ __+3*AL/32 T→──── ── ←──→ __ 0*AL/32 AD -5*AL/32 ←→ AS 波形番号4:ランダム波 (振幅が負の時) 波形番号8〜32767:ユーザー波形 (振幅が負の時) 波形データ列が+5,−5,+10,+3,0の場合・・・ +5*AL/32  ̄ ̄ 0*AL/32 T→──── ── ←──→__  ̄ ̄-3*AL/32 AD -5*AL/32 __ -10*AL/32 ←→ AS
-
[AGOGIK.WAVEFORM TRIANGLE] (AGOGIKの波形を三角波に設定する)
上の設定でテンポ=100で、たとえば振幅が10のとき
テンポはアゴーギク作用により90〜110間を交互に変化する。
[AGOGIK.SWITCH
mode]
[V3]
[未実装]OFF, 1/8,
OPTIONAL, ON
アゴーギクの動作スイッチ
アゴーギクの動作制御を行う。
modeは
[AGOGIK.DEPTH]([AGOGIK.LEVEL])のパラメータのmodeと同等。
modeは数値で与えることもでき、この時は
0=OFF,-1=1/8,1=OPTIONAL,2=ON
に対応する。
- [AGOGIK.SWITCH 1/8]
(1/8モードでONにする)
- [AGOGIK.SWITCH 2]
(以前のモード(1/8かOPTIONALのいずれか)でONにする)
[AGOGIK.SYNC
m,
c]
[V3]
[未実装]OFF, ON
または より高度な設定 (後述)
アゴーギクの同期モード
アゴーギク波形の初期化(リセット)タイミングの設定を行う。
mは同期モードの設定値。
0は非同期,1は同期に対応し、
0と1はそれぞれ文字列OFF, ONにも対応する。
mをON,OFFといった文字列にて設定することも可能。
「同期」に設定した場合は新しく発音するたびにアゴーギク波形の初期化を行う。 「非同期」にした場合は発音と無関係にアゴーギクを続行する。
mは数値指定では0,1以外に、 以下のように2進数で設定すればより高度な初期化設定が行える。 []は初期設定を表す。
上から分かるようにmの初期値は1となっている。
cは同期ディレイにあたり、 実際にはmで指定した条件がc回成立すると波形が初期化されることになる。 cの初期値は1。
- [AGOGIK.SYNC %011] (発音と同時、タイ指定においても初期化する)
[PATTERN id] [V3]
[未実装]
共通コマンド
.PATTERNで登録したパターン名idの演奏データにリンクする。
idにはパターン名を記述する。
(i)
.pattern ABC { cdefgab<c> }
.assign TR1,MIDI1
(t1)[PATTERN ABC]
(p)
(cdefgab<c>が演奏される)
[EMBED id] [V3]
[未実装]
共通コマンド.PATTERNで登録したパターン名idの演奏データを展開する。
idにはパターン名を記述する。
[PATTERN]は演奏実行時にパターン部にジャンプする形で演奏されるが、
[EMBED]はパターンの内容そのものをそのトラックに埋め込むので、
演奏時は通常の演奏データとまったく変わらない方法で演奏される。
つまり、[PATTERN]は処理速度的には[EMBED]よりも劣るが、
演奏データサイズを削減できる。
逆に[EMBED]は処理速度的に
[PATTERN]より優れるが演奏データサイズは大きくなる。
(注) zmc3/z2m3 では、 リアルタイム演奏するわけではないため処理速度・最終的なSMFの大きさ共に比較自体意味をなさない。 どちらを使っても最終的な出力は同じとなる。
(i)
.pattern ABC { cdefgab<c> }
.assign TR1,MIDI1
(t1)[EMBED ABC]
(p)
(cdefgab<c>が演奏される)
[COMMENT str] [V3]
(コメント埋め込み)
コメントを与える。
コンパイル後のZMDにもコメント文字列が内部的に埋め込まれる点が、
基本MML
/や
[BAR]と違う。
[COMMENT This is a pen.]
[EVENT category,class,data] [V3]
(イベント埋め込み)
WORD
[V3]
PICTURE,SOUND
[未実装]
META
[zmc3]
class: 文字列
data: 文字列
演奏データに外部プレイヤー向けのイベント情報を盛り込む時に使用する。
ZMUSIC Ver.3.0自身は本命令の実行は行わず無視する。
(注: が、zmc3/z2m3は歌詞データもしくはメタ情報に限り、
SMFにこれらのイベントを埋め込む)
WORDの時
class=STRING
data=歌詞文字列
PICTUREの時
class=PIC
data=PIC画像ファイルのファイル名
SOUNDの時
class=ADPCM
data==ADPCMファイルのファイル名
METAの時
class,data=以下に示されているもの
| class | data |
|---|---|
sequence | シーケンス番号 |
text | テキスト |
copyright | 著作権表示 (きちんと対応し切れてない(Conductor Trackに移動しない) ので使用禁止!) |
title | シーケンス名 |
instrument | 楽器名 |
lyrics | 歌詞
(category=WORD,class=STRING,data=歌詞文字列
の場合と同じ)
|
marker | マーカー |
cue | キューポイント |
program | プログラム名(音色名) |
device | デバイス名(音源名) |
- [EVENT WORD,STRING,"豚もおだてりゃ木に登る"] (歌詞設定)
- [EVENT PICTURE,PIC,FISH.PIC]
(画像データ設定)
- [EVENT SOUND,ADPCM,BOMB.PCM]
(ADPCMデータ設定)
- [EVENT META, CUE, "START"]
(キューポイントの設定 / SMAFなどで使用)
[KEY ky] [V3]
(調の設定)
曲全体の調を設定する。ただし
[KEY_SIGNATURE]のように演奏トラックに調号を付加するような効果や機能はなく、
あくまで表記上の設定となる。
データにはこのMMLで指定した調が記録されるため、
プレーヤなどで正しい調が表示されることを期待する場合には設定すべき。
kyには以下の調名を与える。
Cmajor,Gmajor,Dmajor,Amajor,Emajor,Bmajor,F+major,F#major,
C+major,C#major,Fmajor,B-major,Bbmajor,E-major,Ebmajor,
A-major,Abmajor,D-major,Dbmajor,G-major,Gbmajor,C-major,Cbmajor,
Aminor,Eminor,Bminor,F+minor,F#minor,C+minor,C#minor,G+minor,
G#minor,D+minor,D#minor,A+minor,A#minor,Dminor,Gminor,Cminor,
Fminor,B-minor,Bbminor,E-minor,Ebminor,A-minor,Abminor
- [KEY D#Minor] (嬰二短調)
[METER m] [V3]
(拍子の設定)
曲全体の拍子を設定する。 ただし演奏トラックに対してなんの効果ももたらさず、 あくまで表記上の設定となる。 データにはこのMMLで指定した拍子が記録されるため、 プレーヤなどで正しい拍子が表示されることを期待する場合には設定すべき。 設定値mは分数表記を取る。
- [METER 6/8] (8分の6拍子と設定)
[DUMMY] [V3]
(ダミーデータ挿入)何も行わない命令。 ZMSコンパイル後のZMDに1バイトの空きスペースを作ることができる。 通常の音楽制作には用いる必要はない。