Z-MUSIC(V2/V3) MML文法(その他)

ピッチモジュレーション/ARCC等 機能スイッチング

MIDIチャンネル変更

MIDIチャンネル変更

チャンネル切り替え

同期待ち/他トラックへ同期信号送信

トラック再演奏

裏パート演奏指定

裏パートにループコマンドも送る

[未実装]

パターン展開

[未実装]

パターン展開(埋め込み)

特殊機能スイッチング

    • =n(特殊機能のスイッチング)
          • n: %00000 ~ %11111 スイッチ値 [V2]
          • n: %0000000000 ~ %1111111111 スイッチ値 [V3]
      • ピッチ・モジュレーション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] (疑似エコー)
          • itv: 音長
          • dec: -128~127
          • lp time: 0~65535 または LOOP
      • 設定後の音符をitv単位に分割して演奏する。 分割した音符1つ1つに対して線形な元音量との増減decを与えることができる。 1チャンネルで疑似的なエコー効果を与える時などに使用する。
        • itv: 音楽的音長
        • 音符を分割する単位を音長(1~32767)で指定する。 音長は音楽的音長で指定するが、 数値の頭に'*'を記述すれば絶対音長(1~32767)を指定することもできる。
        • dec: 減衰相対音量値
        • 分割した音符1つ1つに対して元音量との相対的な差を与えることができる。 分割後n番目の音符の音量の変位はn*decになる。 設定範囲は-128~127。
        • lp: くりかえし回数
        • 分割を何回繰り返すかを指定する。設定範囲は0~65535。 0は無限回を意味する。
        • また無限回は文字列LOOPでも指定することができる。
      • 例:
          • [ECHO 8,-10,3] c1,,127
          • この例ではc1は c8 単位に 3回分割される。 そして音量変位は-10なので結果的には
          • c8,,-10&amplc8,,-20&amplc2.,,-30
          • のように演奏される。
          • [ECHO 8,-10,LOOP] c1
          • では、分割回数が無限回になっているので c1 をできる限り分割する。よって演奏結果は
          • c8,,-10&c8,,-20&c8,,-30&c8,,-40& c8,,-50&c8,,-60&c8,,-70&c8,,-80
          • のようになる。
      • エコー機能の仕様制限事項は以下の通り。
        1. 連符コマンド ({...}の中)に対しては効力を発揮せず
        2. 音量操作は具体的にはベロシティを対象としている
        3. 音符に対してのベロシティが省略されている場合はその音符の直前のベロシティ値が基準となりこの値から減衰する(この場合は直前のベロシティから±63の変化に限定される)。
        4. 音符にベロシティを絶対値設定している場合はその値を基準として減衰する(0~127の範囲内で増減)。
  • @Dn [V2]
  • [DAMPER n] [V3] (ホールド(ダンパーペダル)の設定)
        • n: 0, 1~127 ダンパーペダルOFF(0)/ON(1~127)
    • ダンパーペダルの状態の設定を行う。
      • [V2]の場合:
      • nの設定範囲は、0がダンパーペダルオフ、 0以外(1≦n≦127)がダンパーペダルオンである。 nが0以外の場合には、ダンパー値として127が送信される。
      • [V3]の場合:
      • nの設定範囲は0-127。 設定値がそのままMIDI楽器にダンパー値として送信される。 一般のMIDI楽器では0~63をダンパーOFF, 64~127をダンパーONとしている。
      • ダンパーON,OFFは、 文字列ON,OFFでも設定が可能。 このときはONn=127, OFFn=0に対応する。
  • ダンパーオンの状態では、 発音はされるがダンパーオフになるまでノートオフされない (ピアノのサスティンペダルと同じ)。
  • 各楽器の最大同時発音数を超えた時には各楽器に処理が委ねられるが、 一般的には一番過去に発音された音がノートオフされそのボイスを用いて新たな音がノートオンされることになる。
    • 例:
        • @d0 cdefgab<c / ダンパーペダルオフ(通常)
        • @d1 cdefgab<c @d0 / ペダルオン(音が消えない)
        • [DAMPER OFF] (ダンパー解除する)
        • [DAMPER 68] (ダンパーを値68でONに設定する)
    • @Rn [V2]
    • [TRACK_MODE n] [V3] (ノートオフ送信制御・トラックモード設定)
          • n: 0, 1 ノートオフ処理ON(0)/OFF(1) [V2]
          • n: 0,1 または 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に変換した上で演奏する。 和音・ポルタメントを問わず、 そのトラックの中のすべての音階に対して有効。 ドラム音を変更する場合などに便利。
      • note1,note2に書けるMMLは以下の通り;
            • 音階
            • 調号
            • オクターブ変更
            • c~b(8個まで)
            • ! # + -
            • O-1~O9 < >
      • (注) 元々オリジナルのV3では、 マニュアルに本機能の説明が記載されていないものの、 上記のような機能を普通に使うことができた。 要するに、隠しMML的なもの。
      • ただし、オリジナルのV3では、 コンマ(,)の前後にスペースを入れるとエラーになるので注意。
      • 例:
          • [KEY_REMAP o3c,o4c] (o3cという音を、以後すべてo4cとして扱う)

フェードイン・フェードアウト

    • \n [V2] (フェードイン・フェードアウト)
          • n: -85 ~ 85 フェードイン・フェードアウトスピード [V2]
          • n: -128 ~ 127 フェードイン・フェードアウトスピード [V3]
    • フェードインまたは、フェードアウトを行う。nは音量増減スピードを表し 絶対値が大きいほど増減スピードが速くなる。
      • 負の数を指定した場合はフェードインとなり、 正の数を指定した場合はフェードアウトとなる。 0を指定するとフェードイン/フェードアウトモード解除となる。
      • \コマンドは各トラックごとに設定可能なので、各トラック違った速度で フェードインやフェードアウトが実行可能。 フェードアウトでは出力音量が0になった時点でそのトラックの演奏を終了する。
      • n=0のフェードイン/フェードアウト解除は処理そのものを中止するだけなので、 元の演奏状態に戻したい場合は ボリュームコマンド(V,@V)などを再設定する必要がある。
    • [TRACK_FADER spd,src,dst] [V3] (トラック・フェーダー)
          • spd: 0~65535
          • src: 0~128
          • dst: 0~128
      • トラックフェーダーの動きを設定する。 基本MML \とほぼ同等の機能を持つ。
        • spd: 移動速度
        • フェーダーの移動速度を指定する。 spd=1がもっとも遅く、 spd=65535がもっとも早い。 spd=0は移動解除に相当する。 また、移動解除指定は OFFという文字パラメータでも指定可能。
        • src: 移動元フェーダーレベル
        • 移動元のフェーダーレベルを設定する。 設定範囲は0≦src≦128で、 0が無音状態、128は原音量に相当する。
        • dst: 移動先フェーダーレベル 移動先のフェーダーレベルを設定する。 設定範囲は0≦dst≦128で、 0が無音状態、128は原音量に相当する。
      • 例: [TRACK_FADER 10,128,0]
      • (速度10で原音量から無音状態へフェーダーを移動する (いわゆるFADEOUT))
    • [CH_FADER dev ch,spd,src,dst] [V3] (チャンネル・フェーダー)
          • dev: ALL, MIDI1-,MIDI2-, MIDI3-,MIDI4-
          • ch: 1~16 または ALL
          • spd: 0~65535
          • src: 0~128
          • dst: 0~128
      • 指定したチャンネルのフェーダーの動きを設定する。
        • dev: デバイス
        • 操作の対象となる音源デバイス名を文字列にて指定する。 デバイス名と対応音源は以下の通り。
        • ch: 操作対象チャンネル番号
        • 上記のデバイスと合わせて指定する。 MIDI音源パートのチャンネル設定範囲は1≦ch≦16。 全チャンネルを対象としたい場合は、 文字列ALLを指定する。
        • なお、全デバイスの全チャンネルを操作対象とする場合は、 ALL-ALLではなく、単にALLと指定する。
        • spd: 移動速度
        • フェーダーの移動速度を指定する。 spd=1がもっとも遅く、 spd=65535がもっとも早い。 spd=0は移動解除に相当する。 また、移動解除指定は OFFという文字パラメータでも指定可能。
        • src: 移動元フェーダーレベル
        • 移動元のフェーダーレベルを設定する。 設定範囲は0≦src≦128で、 0が無音状態、128は原音量に相当する。
        • dst: 移動先フェーダーレベル
        • 移動先のフェーダーレベルを設定する。 設定範囲は0≦dst≦128で、 0が無音状態、128は原音量に相当する。
      • 例:
          • [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] (マスター・フェーダー)
          • dev: ALL, MIDI1,MIDI2, MIDI3,MIDI4
          • spd: 0~65535
          • src: 0~128
          • dst: 0~128
      • マスターフェーダーの動きを設定する。
        • dev: デバイス
        • 操作の対象となる音源デバイス名を文字列にて指定する。 デバイス名と対応音源は以下の通り。
        • spd: 移動速度
        • フェーダーの移動速度を指定する。 spd=1がもっとも遅く、 spd=65535がもっとも早い。 spd=0は移動解除に相当する。 また、移動解除指定は OFFという文字パラメータでも指定可能。
        • src: 移動元フェーダーレベル
        • 移動元のフェーダーレベルを設定する。 設定範囲は0≦src≦128で、 0が無音状態、128は原音量に相当する。
        • dst: 移動先フェーダーレベル
        • 移動先のフェーダーレベルを設定する。 設定範囲は0≦dst≦128で、 0が無音状態、128は原音量に相当する。
      • 例:
          • [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]
        1. |:n … |r1 … :| … |r2 … :| [V2]
        2. |: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)のケース
    • |ririを省略した ||: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]
      • 以下のコマンドは(D1)状態の時のみ有効となる。 (D0)(D1)の 切り替えは共通トラック部だけでなく、 演奏トラック中の任意の位置でも行うことができる。
            • [!]
            • [@]
            • [end]
            • 次の[!]までジャンプする。 ジャンプ後の音源やZ-MUSICの内部パラメータはそこまで通常に演奏を行った時と同じになっている。 [!]が偶数個設定されなかった場合は、 正常に動作しない。
            • 次の[@]までジャンプする。 ジャンプ後の音源やZ-MUSICの内部パラメータはそこまで通常に演奏を行った時と同じになっている。 ほぼ[!]と同機能だが、あるひとつのトラックで設定すると他のトラックも同時にジャンプを開始する点が違う。 [@]が偶数個設定されなかった場合は、正常に動作しない。
            • いかなる状態の時にもこれを発見するとそのトラックは演奏を終える。
  • [---------------] ('-'は幾つでもよい) [V3]
  • [BAR str] [V3]
    • [MEASURE str] [V3] (小節線)
          • str: コメント文字列
      • 五線譜でいう小節線に相当する。 命令自体に機能はないが、 小節ジャンプMML[JUMP]と併用して、 曲データの調整に用いることができる。
    • ZMSを見やすくするためにコメント文字列strを与えることができるが、 strの情報はZMDには残らない。 残したい場合は代わりに [COMMENT str]を用いること。
      • トラックの初期状態は第0小節に相当する。
      • 例:
          • [MEASURE Aパート]
          • [----------------]
    • [JUMP m] [V3] [未実装]
    • (小節ジャンプ)
          • m: 1~
      • 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 のみが演奏される。)

MIDI楽器制御命令

    • @Imk,dv,md [V2]
    • [INSTRUMENT_ID mk,dv,md] [V3] (MIDI楽器IDの登録)
          • mk: メーカーID
          • dv: デバイスID
          • md: モデルID
      • Z-MUSICにそのトラックを演奏する楽器のメーカーID、デバイスID、 モデルIDを設定する。 所有しているMIDI楽器の各値については楽器のマニュアルを参照のこと。
      • これは特に設定しなくても通常のコマンドの動作には全く影響しない。 ただし、
      • [YAMAHA_EXCLUSIVE]
    • に関しては楽器個別の動作をするため、 これらのコマンドを使用する前には必ず設定しなければならない。 初期値なし。
      • 例:
          • @i$41, $10, $42 / GS音源用にIDを設定する。 これ以降このトラックで@exが使用可能になる
          • [INSTRUMENT_ID $41,$10,$42] (ROLAND,DEV-ID=$10,SC55に設定)
    • @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エフェクタ設定)
          • r: 0~127 リバーブ値
          • c: 0~127 コーラス値
          • d: 0~127 ディレイ値
          • ef2: 0~127
          • ef5: 0~127
    • MT-32の場合は
        • ch: 1~ 8 チャンネル番号
        • sw: 0 or 1 エフェクタのON(1)/OFF(0)
      • 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] (コントロールチェンジ送信)
          • a: 0 ~ 127 コントロールチェンジ番号
          • d: 0 ~ 127 コントロールチェンジデータ
      • 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: 0 ~ 127 NRPNアドレス上位・下位
          • dh, dl: 0 ~ 127 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] (ローランド系エクスクルーシブ送信)
          • n1,...: 0 ~ 127 エクスクルーシブデータ
      • ローランド系の楽器にエクスクルーシブメッセージ送信を行う。 この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] (ヤマハ・エクスクルーシブ)
          • ni: 0~127
      • ヤマハ系の楽器にエクスクルーシブ・メッセージ送信を行う。 この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データ送信)
          • n1,...: 0 ~ 127 エクスクルーシブデータ
      • 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] (チャンネル変更)
          • c: 1 ~ 32 チャンネル番号
    • そのトラックの操作対象MIDIチャンネルの変更を行う。設定範囲は 1≦c≦32で各数値に対応したチャンネル番号は 共通コマンド(Bn)で指定した値に応じて変わってくる。
        • (B0)の時、c = 10~25 MIDIチャンネル1~16
        • (B1)の時、c = 1~16 MIDIチャンネル1~16
      • [V3]では、チャンネル変更を行うとポートが常に1になるが、 [zmc3] v0.98.10以降では、 ポートが複数ある場合でも、 使用しているポート内でのチャンネル変更が可能。たとえば、 (B1)で、 現在MIDI2-1をアサインしているときに、 n3 とすると、 V3ではMIDI1-3にチャンネルが変更され、 zmc3ではMIDI2-3にチャンネルが変更される。
    • @Nc [V2] (チャンネル変更)
          • c: 1 ~ 32 チャンネル番号
    • 機能的にはNコマンドと同じ。しかし 共通コマンド(Bn)に関わらない指定が可能。
        • c = 10~25 MIDIチャンネル1~16
  • [CH_ASSIGN ch] [V3]
    • [ASSIGN ch] [V3] (チャンネル切り替え)
          • ch: MIDI1-1MIDI1-16, MIDI2-1MIDI2-16, MIDI3-1MIDI3-16, MIDI4-1MIDI4-16
    • そのトラックに割り当てられているデバイス、チャンネルを変更する。 N@Nの機能に相当するが、 文字列でチャネル指定できるのが特徴。
      • 例:
          • [CH_ASSIGN MIDI3-1] (そのトラックをMIDI3-1に変更する)

演奏制御

    • W [V2], [SYNCHRONIZE] [V3] (他のトラックから同期信号が来るまで演奏処理を中断する)
    • Wt [V2], [SYNCHRONIZE t] [V3] (同期信号送信)
          • t: 1 ~ 80 [V2] 同期信号送信先トラック番号
          • t: 1~65535 [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: 1~65535
      • トラック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を指定する。
      • 単一トラックで、 「このコードを鳴らしつつ別の主旋律を演奏する」といった場合に用い、 わざわざ別トラックを確保してmmlを記述するのがおっくうな場合や、 2trk分の情報を1trkに詰め込んだ方が記述しやすい場合... ギターの演奏やキーボードの右手左手同時演奏など... に便利。
      • たとえば、
      • [back 'c1eg'] gag<c
    • などとすると、演奏上は
      • (t1)gag<c
      • (t2)'c1eg'
    • のように、和音が自動的に裏パートに回され、 和音と単音が同時に演奏される。 ただし、この例では説明上2ch分使っているように見えるが、 実際には1ch分しか使用されない。
      • 直前の[back...]の演奏が終わっていないのに次の[back...]が現れると Warningが出る。この場合期待される演奏とはならないため、 注意が必要。
      • 例: [back c1] c4 [back d1] / c1の演奏終了前にd1が来る
    • (注) この機能は、 内部的にはダミートラックとそこへの同期送信という形で実現されている。 たとえば、先の例は内部的には次のようになる:
      • (t1)w2 gag<c
      • (t2)w 'c1eg'
    • このため、使用チャンネル数は増えないものの、 コンパイル後出力されるトラック数は増える。
    • [BACK.repeat n] [zmc2] (裏パートリピート設定)
          • n: 0, 1 or OFF, ON
    • [back...]に関連して、 繰り返し等の演奏制御系コマンドを裏トラックにも出力する。
    • パラメータには1,0,ON,OFFを指定でき、省略時のデフォルトは ([back.repeat])は1(on)となる。 初期値は0(off)。
    • このコマンドにより、以下のコマンドが影響を受ける:
      • |: |n | :|
      • [d.c.][segno][$][d.s.][coda][tocoda][*][fine][^][do][loop]
      • [end][!][@]
      • 例:
      • [back.repeat on] |: [back eg] ce :|
    • とすると、
      • (t1) |: w2 ce :|
      • (t2) |: w eg :|
    • 相当の出力が得られる。

EVS (Enhanced Velocity Sequence)

    • [VELOCITY.LEVEL mode, lv1, lv2, ... lv8] [V3] [未実装]
    • [VELOCITY.DEPTH mode, lv1, lv2, ... lv8] [V3] [未実装]
    • (EVS振幅)
          • mode: OFF, OPTIONAL, ON EVSモード
          • lv1lv8: -128 ~ +127 EVS振幅
      • EVSとはZMUSIC Ver.1.0からの機能であるベロシティ・シーケンスを拡張したもので、 発音音符のベロシティをビブラートやARCCのように算術波形やユーザー波形に沿って変化させる機能である。 本命令は、このEVSの変化振幅を設定するもの。
      • modeとはEVSの動作方式を設定するパラメータ。 以下にmodeと対応する動作を示す。
        • mode: ON
        • EVSを以前の設定で再開する。
        • mode: OFF
        • EVSを停止する。
        • mode: OPTIONAL
        • [VELOCITY.DELAY]で設定された音符数毎にlv1からlv8のEVS振幅を切り換えていく。
        • ※EVSは音長という概念がないので、 ビブラートARCCのような1/8モードはない。
      • modeは省略するとスイッチはそれまでの設定を保持したままとなる。 lv1lv8のEVS振幅は任意の位置で省略可能で、 数値の頭に±を付けることによって相対的な値の指定も可能。例えば
      • [VELOCITY.LEVEL optional 64,,-10,+5]
      • といった記述ができる。 省略した部分は前の値を持続するということになり、その間は振幅の変更は行われない。 相対指定時にオーバーフロー/アンダーフローを起こした値は有効範囲内の最大値,最小値に修正される。
      • 例: [VELOCITY.LEVEL 1/8 0,0,10,20,30] / ( modeを1/8とし、lv1=0,lv2=0,lv3=10,lv4=20,lv5=30と設定した。lv6,lv7,lv8は省略(未設定))。
    • [VELOCITY.SPEED sp1, sp2, ... sp8] [V3] [未実装]
    • (EVSスピード(周期))
          • lv1lv8: 1 ~ 32767 EVS振動速度
      • EVSの振動速度を設定する。 最大8つの振幅変化に対応した振動速度変化の設定を行う。 sp1sp8は速度値で設定範囲は1≦sp1sp8≦32767。
      • 実際の波形にどう影響するかは拡張MML[VELOCITY.WAVEFORM]の項で解説するが、 値が小さいほど高速に、値が大きいほど低速に音が振動する。
      • sp1sp8の振動速度は任意の位置で省略可能だが、 初期値を持たないので注意。
      • 例: [VELOCITY.SPEED 10,8,20] (EVSの速度をsp1=10,sp2=8,sp3=20と設定,sp4~sp8は省略(未設定))
    • [VELOCITY.DELAY dl0, dl1, ... dl8] [V3] [未実装]
    • (EVSディレイ)
          • dl0: 0 ~ 65535 最初のEVSが実行されるまでのディレイ(遅延時間)
          • dl1dl8: 1 ~ 65535 次の振幅切り替えまでの区間時間
      • EVSの動作モードの一つである 「OPTIONAL」モードにおけるEVSの振幅切り換えタイミングを決定する区間時間の設定を行う。
      • dl0は最初のEVSが実行されるまでのディレイ(遅延時間)に相当し、 音符個数値で指定する。有効範囲は0~65535。初期値は0。
      • dl1dl8は次の振幅切り換えまでの区間時間で、 これも音符個数値で指定する。有効範囲は0~65535。初期値は無し。
      • dl0dl8の任意のものを省略可能だが、 dl1dl8は初期値を持たないので注意。
      • 例: [VELOCITY.DELAY 10,24,12,12,12,28,28,12,12]
      • (EVSのディレイをdl0=10,dl1=24,dl2=12,dl3=12,dl4=12,dl5=28,dl6=28, dl7=12,dl8=12と設定する。つまり音符dl=10個分はEVSの影響なく発音し11個目から dl1=24個分最初の振幅値でEVS開始となる。以下同様)
    • [VELOCITY.WAVEFORM w] [V3] [未実装]
    • (EVS波形選択)
          • w: 0 ~ 32767 波形番号
      • EVS波形を選択する。
      • wの0~4はプリセット波形に割り当てられている。
      • またはプリセット波形は
      • という文字パラメータを用いて指定することもできる。
      • 初期値は w = 2 の三角波。 w=5~7はリザーブ。 w=8~32767はユーザー定義波形となる。 ユーザー波形の登録については、 共通コマンドの .WAVE_FORMを参照。
      • 以下に波形と各パラメータとの関係を示す。
      • 波形番号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波形の原点設定)
          • org: 0 ~ 127 EVS波形の基準値
      • EVS波形の基準値を設定する。 この値を中心に [VELOCITY.DEPTH]([VELOCITY.LEVEL])で設定した振幅で振動する。 この値は [VELOCITY.WAVEFORM] の図解中のVOに相当する。
      • 初期値は127。
      • 例: [VELOCITY.ORIGIN 100] (EVSの波形の基準値を100に設定する) 上の設定で(基準点=100)たとえば振幅10のとき 波形=TRIANGLE(三角波) にするとベロシティは100~90(100-10)区間を交互に変化する
    • [VELOCITY.SWITCH mode] [V3] [未実装]
    • (EVSスイッチ)
          • code: 0 ~ 2 または OFF, OPTIONAL, ON EWS動作スイッチ
      • EVSの動作制御を行う。
      • mode[VELOCITY.DEPTH]([VELOCITY.LEVEL])のパラメータのmodeと同等。 modeは数値で与えることもでき、この時は 0=OFF, 1=OPTIONAL, 2=ON に対応する。
      • 例: [VELOCITY.SWITCH OPTIONAL] (EVSをOPTIONALモードでONにする)
      • [VELOCITY.SWITCH 2] (EVSを以前のモードでONにする)
    • [VELOCITY.SYNC m, c] [V3] [未実装]
    • (EVS同期モード設定)
          • m: 0=非同期 1=同期 または OFF, ON またはより高度な設定(後述)
          • c: 1~65535 同期ディレイ回数 OFF, OPTIONAL, ON
      • EVS波形の初期化(リセット)タイミングの設定を行う。 mは同期モードの設定値。 0は非同期,1は同期に対応し、 0と1はそれぞれ文字列OFF, ONにも対応する。 mON,OFFといった文字列にて設定することも可能。
      • 「同期」に設定した場合は小節線([BAR])のときにEVS波形の初期化を行う。 「非同期」にした場合は発音と無関係にEVSを続行する。
      • mは数値指定では0,1以外に、 以下のように2進数で設定すればより高度な初期化設定が行える。 []は初期設定を表す。
        • 第0ビット 小節線に同期して初期化 [0]:しない 1:する
        • 第1ビット ベロシティが指定されている音符があっても波形は進行する [0]:しない 1:する
        • 第2ビット 休符があっても波形は進行する [0]:しない 1:する
      • 上から分かるように、mの初期値は0となっている。
      • cは同期ディレイにあたり、 実際にはmで指定した条件がc回成立すると波形が初期化されることになる。 cの初期値は1。
      • 例: [VELOCITY.SYNC %011] (EVSを小節線同期、ベロシティが指定されている音符があっても波形は進行する)
    • [VELOCITY.PHASE mode] [V3] [未実装]
    • (EVS波形位相制御)
          • mode: 0~1 または NORMAL, REVERSE (INVERSE)
      • EVS波形の位相を制御する。 通常とデフォルト状態では mode = 0 (NORMAL)に相当し、 [VELOCITY.WAVEFORM]の項で図解した波形が実行される。 一方 mode=1(REVERSE)では [VELOCITY.WAVEFORM]の項で図解した波形においてVOを中心に反転した波形が実行される。
      • 例: [VELOCITY.PHASE REVERSE] (EVSの実行波形を逆位相モードにする)

アゴーギク

    • [AGOGIK.LEVEL mode, lv1, lv2, ... lv8] [V3] [未実装]
    • [AGOGIK.DEPTH mode, lv1, lv2, ... lv8] [V3] [未実装]
    • (アゴーギク振幅)
          • mode: OFF, 1/8, OPTIONAL, ON アゴーギクモード
          • lv1lv8: -32768 ~ +32767 アゴーギク振幅
      • アゴーギクとは演奏速度(テンポ)を一定の法則にしたがって変動させる効果のことをいう。 ZMUSIC Ver.3.0では、 ビブラートARCCのような算術波形やユーザー波形に沿ってテンポを変化させることができ、 これをアゴーギク機能と呼ぶ。
      • [AGOGIK.DEPTH]([AGOGIK.LEVEL])はアゴーギクの振幅の設定を lv1lv8において行う。 modeはアゴーギクの動作方式を設定するパラメータ。 以下にmodeと対応する動作を示す。
        • mode: ON
        • アゴーギクを以前の設定で再開する。
        • mode: OFF
        • アゴーギクを停止する。
        • mode: 1/8
        • 発音する音符の音長の1/8単位毎で、 lv1からlv8のアゴーギク振幅を次々に変化していく。
        • mode: OPTIONAL
        • 発音する音符の音長とは無関係に、 任意の時間区間毎でlv1からlv8のアゴーギク振幅を次々に設定していく。 時間区間のシーケンスは後述の [AGOGIK.DELAY]で行う。
      • modeは省略するとスイッチはそれまでの設定を保持したままとなる。 lv1lv8のアゴーギク振幅は任意の位置で省略可能で、 数値の頭に±を付けることによって相対的な値の指定も可能。 例えば
      • [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] [未実装]
    • (アゴーギク振幅増加)
          • sw: OFF, ON アゴーギク機能の有効/無効スイッチ
          • spd: 1 ~ 65535 アゴーギク振幅増減速度
          • dpn: -32768 ~ +32767 アゴーギク振幅増減量
          • rpt: 0 ~ 32767 アゴーギク増減回数
      • アゴーギクの振幅の増加/減少を設定する。
        • sw: OFF, ON
        • アゴーギクの振幅増減機能を有効にするか無効にするかを設定する。 OFFで無効に、ONで有効に設定される。
        • spd: 増減速度
        • アゴーギクの振幅の増減速度を設定する。 1がもっとも速く、65535がもっとも遅い。 0はエラー。値は絶対音長に相当し、有効範囲は1~65535。
        • dpn: 振幅増加量
        • 振幅の増減量を設定する。負値は振幅減少、 正値は振幅増加に対応する。
        • 値の有効範囲は -32768 ~ +32767。 絶対値が大きければ大きいほど、増減は急激となる。
        • rpt: 増減回数
        • 振幅はspdの速度でdpn幅増減するが、 この処理を何回繰り返すかを設定する。 rpt = 0 とすると振幅が初期化されるまで無限に増減を繰り返す設定になる。
        • 値の有効範囲は1~32767。
      • 例:
          • [AGOGIK.DEEPEN ON,6,+8,10]
          • (増減スピード6で10回振幅を8増加させる)
    • [AGOGIK.SPEED sp1, sp2, ... , sp8] [V3] [未実装]
    • (アゴーギク・スピード(周期))
          • sp1sp8: 1 ~ 32767 アゴーギク振動速度
      • アゴーギクの振動速度を設定する。 最大8つの振幅変化に対応した振動速度変化の設定が行える。 設定範囲は1≦sp1sp8≦32767。
      • 実際の波形にどう影響するかは拡張MML [AGOGIK.WAVEFORM]の項で解説するが、 値が小さいほど高速に、値が大きいほど低速に音が振動する。
      • sp1sp8の振動速度は任意の位置で省略可能だが、 初期値を持たないので注意。
      • 例:
          • [AGOGIK.SPEED 10,8,20]
          • (sp1=10,sp2=8,sp3=20,sp4~sp8は省略(未設定))
    • [AGOGIK.DELAY dl0, dl1, ... , dl8] [V3] [未実装]
    • (アゴーギク・ディレイ)
          • dl0: 0 ~ 65535 最初のアゴーギクが実行されるまでのディレイ(遅延時間)
          • dl1dl8: 1 ~ 65535 次の振幅切り替えまでの区間時間
      • アゴーギクの動作モードの一つである「OPTIONAL」モードにおけるアゴーギクの振幅切り換えタイミングを決定する区間時間の設定を行う。
      • dl0は最初のアゴーギクが実行されるまでのディレイ(遅延時間)に相当し、 絶対音長値で指定する。有効範囲は0~65535。初期値は0。
      • dl1dl8は次の振幅切り換えまでの区間時間で、 これも絶対音長値で指定する。有効範囲は0~65535。初期値は無し。
      • dl0dl8の任意のものを省略可能だが、 dl1dl8は初期値を持たないので注意。
      • 例:
          • [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 ~ 32767 アゴーギク波形番号
      • アゴーギク波形を選択する。
      • wの0~4はプリセット波形に割り当てられている。
      • またはプリセット波形は
      • という文字パラメータを用いて指定することもできる。
      • 初期値は w = 2 の三角波。 w=5~7はリザーブ。 w=8~32767はユーザー定義波形となる。 ユーザー波形の登録については、 共通コマンドの .WAVE_FORMを参照。
      • 以下に波形と各パラメータとの関係を示す。
      • 波形番号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] [未実装]
    • (アゴーギク・スイッチ)
          • mode: -1 ~ 2 または 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] [未実装]
    • (アゴーギク同期モード設定)
          • m: 0=非同期 1=同期 またはOFF, ON または より高度な設定 (後述) アゴーギクの同期モード
          • c: 1~65535 同期ディレイ
      • アゴーギク波形の初期化(リセット)タイミングの設定を行う。
      • mは同期モードの設定値。 0は非同期,1は同期に対応し、 0と1はそれぞれ文字列OFF, ONにも対応する。 mON,OFFといった文字列にて設定することも可能。
      • 「同期」に設定した場合は新しく発音するたびにアゴーギク波形の初期化を行う。 「非同期」にした場合は発音と無関係にアゴーギクを続行する。
      • mは数値指定では0,1以外に、 以下のように2進数で設定すればより高度な初期化設定が行える。 []は初期設定を表す。
        • 第0ビット 発音と同時にリセット 0:しない [1]:する
        • 第1ビット タイでもリセット [0]:しない 1:する
        • 第2ビット 休符でもリセット [0]:NO 1:YES
        • 第3ビット 波形はキーオン毎に進行する [0]:NO 1:YES
        • 第4ビット 波形は休符でも進行する [0]:NO 1:YES
        • 第5ビット 小節線でリセット [0]:NO 1:YES
      • 上から分かるようにmの初期値は1となっている。
      • cは同期ディレイにあたり、 実際にはmで指定した条件がc回成立すると波形が初期化されることになる。 cの初期値は1。
      • 例:
          • [AGOGIK.SYNC %011] (発音と同時、タイ指定においても初期化する)

パターンマクロ

    • [PATTERN id] [V3] [未実装]
    • (パターン展開)
          • id: パターン名文字列
      • 共通コマンド .PATTERNで登録したパターン名idの演奏データにリンクする。 idにはパターン名を記述する。
      • 例:
      • (i)
      • .pattern ABC { cdefgab<c> }
      • .assign TR1,MIDI1
      • (t1)[PATTERN ABC]
      • (p)
      • (cdefgab<c>が演奏される)
    • [EMBED id] [V3] [未実装]
    • (パターン展開(埋め込み))
          • id: パターン名文字列
      • 共通コマンド.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] (コメント埋め込み)
          • str: 文字列
      • コメントを与える。 コンパイル後のZMDにもコメント文字列が内部的に埋め込まれる点が、 基本MML /[BAR]と違う。
      • 例: [COMMENT This is a pen.]
    • [EVENT category,class,data] [V3] (イベント埋め込み)
          • category: WORD [V3]
          • category: PICTURE,SOUND [未実装]
          • category: META [zmc3]
          • class: 文字列
          • data: 文字列
      • 演奏データに外部プレイヤー向けのイベント情報を盛り込む時に使用する。 ZMUSIC Ver.3.0自身は本命令の実行は行わず無視する。
      • (注: が、zmc3/z2m3は歌詞データもしくはメタ情報に限り、 SMFにこれらのイベントを埋め込む)
        • category: イベント種類
        • イベントの種類を指定する。現在定められているのは
            • WORD: 歌詞などの文字列データ [V3]
            • PICTURE: グラフィックデータ [未実装]
            • SOUND: 効果音など [未実装]
            • META: メタ情報(後述) [zmc3]
        • の4つ。METAはzmc3/z2m3でのみ使用可能。
        • class: 具体的なデータフォーマットタイプ
        • categoryで指定したイベントの種類を具体的にどのようなデータ形式を用いて表現するかを文字列で指定する。 以下にそれらを示す。
            • category=WORDの時 class=STRING data=歌詞文字列
            • category=PICTUREの時 class=PIC data=PIC画像ファイルのファイル名
            • category=SOUNDの時 class=ADPCM data==ADPCMファイルのファイル名
            • category=METAの時 class,data=以下に示されているもの
      • 例:
          • [EVENT WORD,STRING,"豚もおだてりゃ木に登る"] (歌詞設定)
          • [EVENT PICTURE,PIC,FISH.PIC] (画像データ設定)
          • [EVENT SOUND,ADPCM,BOMB.PCM] (ADPCMデータ設定)
          • [EVENT META, CUE, "START"] (キューポイントの設定 / SMAFなどで使用)
    • [KEY ky] [V3] (調の設定)
          • ky: 文字列
      • 曲全体の調を設定する。ただし [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] (拍子の設定)
          • m: 1/1~255/255
      • 曲全体の拍子を設定する。 ただし演奏トラックに対してなんの効果ももたらさず、 あくまで表記上の設定となる。 データにはこのMMLで指定した拍子が記録されるため、 プレーヤなどで正しい拍子が表示されることを期待する場合には設定すべき。 設定値mは分数表記を取る。
      • 例:
          • [METER 6/8] (8分の6拍子と設定)
    • [DUMMY] [V3] (ダミーデータ挿入)
      • 何も行わない命令。 ZMSコンパイル後のZMDに1バイトの空きスペースを作ることができる。 通常の音楽制作には用いる必要はない。

[もどる]