Z-MUSIC(V2/V3) MML文法(実用編)

連符

使用tick数予約

パンポット指定

    • Pn [V2] (パンポットの設定)
          • n: 0,1,2,3 パン位置
      • 大ざっぱにパンポットの設定を行う。設定範囲は 0≦n≦3である。 初期値は3。0は出力停止(@v0 @u0に相当)、 1は左、2は右、3は中央。
    • @Pp [V2]
    • [PANPOT p] [V3] (パンポットの設定)
    • [@PANPOT p] [V3] (相対パンポット)
          • p: 0~127 あるいは -127~+127 (+,-の符号を明記すると相対指定になる)
      • パンポット(定位, 音の出る方向)を設定する。 p=0が最左、p=64が中央、 p=127が最右に対応する。 pの設定範囲は0≦p≦127。 0(左)≦p≦127(右)であるが MIDI楽器によっては無効となる場合があったり(M1,SY77など)、 左右が逆に設定されていたりする(MT-32など)場合があるため注意が必要。 初期値は64(中央)。
      • また[V3]では、pに文字列 L63L1 M R1R63 を与えることもできる。 文字列パラメータと数値パラメータとの対応は以下に示す通り。
      • zmc3では更に文字列RNDも指定可能で、このときはパンポットがランダムになる。 GS音源とXG音源を使用時にのみ指定可能で、 事前に[INSTRUMENT_ID]@Iで音源IDを指定しておくこと。(zmc3 v0.98.4でこの制限は解除された)
      • 数値の頭に+,-の符号を付記すると相対指定になる。 この場合のpの設定範囲は-127≦p≦+127。 ただし、[@PANPOT]を使用する場合は、 [PANPOT]などとは違い、 先頭に+,-をつけなくても相対指定としてみなされる。
      • 例:
          • @p64|:10 @p+5 c16 :| / (音がだんだん右に移動する)
          • [PANPOT R20] (基本MMLの @P84に相当)
          • [@PANPOT 12] (それまでのパンポットを12上げる)
          • [@PANPOT -12] (それまでのパンポットを12下げる)
    • @Pn1,... [zmc3] (パンポットの先行指定)
    • @Pn1:f1,... [zmc3] (パンポットのゆらぎつきでの先行指定)
          • n1,n2,...: 0~127 or -128~+127 or L1~L63 or M or R1~R63 パンポット値 / パンポット増減値
          • f: -64~+63 パンポットゆらぎ値
      • ノートオン毎のパンポットのばらつきを先行して設定する (パンポットシーケンス)。 各値の設定範囲は0≦ni≦127だが、 パンポット用の文字列での指定も可能。 ( L1L63 or M or R1R63 )
      • これはこの先の音階MML、和音MML、 ポルタメントMMLのパンポットを先行指定するものである。 指定できる最大数は、無制限。
      • また、fを指定することができ、 その場合はパンポットのゆらぎ設定となる。 以後パンポット値には随時n±fの値がランダムで設定される。 ゆらぎをオフにする場合にはfに0を指定する。
      • 例:
          • @p127,99,80 cdefg
          • cはパンポット127で、 dはパンポット99で、 eはパンポット80で、 fは再びパンポット127で、 gはパンポット99で発音される。
          • @p127:10,99:5,80 cdefg
          • cはパンポット127±10で、 dはパンポット99±5で、 eはパンポット80±5 (ゆらぎ値省略時は直前の指定値を流用)で、 fは再びパンポット127±10で、 gはパンポット99±5で発音される。
          • @pL63,M,R63,M cdefg
          • cはパンポットL63で、 dはパンポットMで、 eはパンポットR63で、 fはパンポットMで、 gはパンポットL63で発音される。
    • 値を1つだけ指定した時は @pと全く同様に機能する。 数値の頭に±を記述すれば相対指定が可能である。 数値を1つだけ指定することで、 パンポット・シーケンスをOFFにすることができる。
      • 注意:パンポット・シーケンスはループコマンドを無視して処理されるので、
      • @p99,100,127 |:100 c :| d e
      • とした場合cが100回パンポット99で、 ループ外のdがパンポット100で、 eがパンポット127で演奏される。
    • [AUTO_PANPOT sw, note1, pan1, note2, pan2, ...] [zmc3] (オートパンポットの設定)
          • sw: 0,1 または OFF,ON
          • note1, note2, ... : 0~127 または O-1CO9G, C-1G9
          • pan1, pan2, ... : 0~127 または -127 ~ +127 または L63L1 M R1R63 (+,-の符号を明記すると相対指定になる)
      • 発音する音階に応じて、パンポットを変更する設定を行う。 例えば、鍵盤楽器で、低い音を鳴らすときには左の方から音を鳴らし、 高い音を鳴らすときには右の方から音を鳴らす、といった場合に用いる。
        • note1より低い音は、 すべてpan1のパンポット位置で発音する。
        • note1note2は、 pan1pan2の間でnoteに応じたパンポット位置で発音する。
        • note2note3は、 pan2pan3の間でnoteに応じたパンポット位置で発音する。
        • 最後に設定するnoteより高い音は、 すべて最後に設定するpanのパンポット位置で発音する。
      • note, panは何組でも指定可能だが、 note, panをすべて省略した場合は、 単純にオートパンポット機能のON/OFF設定となる ([AUTO_PANPOT.SWITCH] と同じ)。 また、note, panを1組だけ指定した場合には、 どの音階でも同じpan値での発音となる。 つまり、 通常の@Pや[@PANPOT]と同じ意味となるが、 @Pや[@PANPOT]とは別の処理系となる。 (つまり、[AUTO_PANPOT]@P・[@PANPOT]は、 お互いに相対指定の影響を受けない)
      • 例:
          • [AUTO_PANPOT on, 0, L63, 127, R63] (一番低い音を一番左で、一番高い音を一番右で発音する。 その間はPANPOTを滑らかにつないで発音する)
          • [AUTO_PANPOT on, o4c, L63, 127, R63] (o-1c~o4c をL63で発音し、そこからは徐々に右になるように発音する)
          • [AUTO_PANPOT on, o2c, L63, o4c, M, o5c, R10] (o-1c~o2cをL63で、o2c~p4cをL63~Mの間で、 o4c~o5cをM~R10で、それ以降はR10で発音する]
    • [AUTO_PANPOT.SWITCH sw] [zmc3] (オートパンポットのスイッチ)

連符

    • {..}s [V2] (連符の指定)
          • s: 1,2,4,8,.. or *1 ~ *32767 連符の合計音長
      • {~}で囲まれたMML群を合計の音長が s分音符音長になるように演奏する。 sには符点を付けたり、 *を付けて絶対音長による指定も行える。
      • {~}の中には音長を操作するMMLを書くことは出来ない。 (符点,L, @L, Q, @Qなど)
      • s省略時はデフォルト音長が適用される。
      • 例:
          • {ceg}4 / いわゆる3連符
          • {cdef}2
          • {abrc}4..
          • {cd&de}*192
    • {{..}}s [zmc2] (演奏総音長の予約)
    • {{..}}s,p [zmc3] (演奏総音長の予約)
          • s: 1,2,4,8,.. or *0 ~ *32767 予約音長 [zmc2]
          • p: 0 または 1, OFFまたはON 補完モード [zmc3]
      • {{...}}内で使う総音長をsで宣言する。 sには符点をつけたり、*をつけて絶対音長にしたり、 ^sを追加して指定することも出来る。
      • {{...}}内ではすべてのMMLを普通に使うことができる。 |:...:|といったループは展開後の総音長で計算がなされる。 {{...}}内に更に {{...}}をネストさせることも可能。
      • {{...}}内で実際に使用した総音長と、 宣言していた音長が異なる場合には、コンパイル時にwarningが出る。
      • {{...}}の有無による演奏の違いはない。 ギターのソロパートなど、 あらかじめ決められた小節内に演奏を納めたい場合などに便利。
      • zmc3 v0.98.11 以降では、コンマの後に補完モードを指定可能。 補完モードとして1またはONを指定した場合は、 {{...}}内の演奏総音長が予約音長に満たない場合に、 {{...}}の末尾に自動的に休符を補う動作をする。 また、この場合(予約音長に満たない場合)にはエラー・警告を出さない。
      • 補完モード省略時は、直前の補完モードを踏襲する。補完モードの初期値は0(OFF)。
      • 例:
          • {{c4d4e4f4}}1 / OK
          • {{c4d4e4}}1 / warning
          • {{@v100 "c4eg" (c4d) }}4^4 / OK
          • {{ l4 {{cdef}1 r1 }}*192^1 / OK
          • {{ l4 |:4 c :| }}1 / OK
          • l4 {{cde}}1,1 / OK cder4 と同義
      • また、多少裏技めいた使い方となるが、 任意の区間での演奏音長を知りたい場合には、 予約音長にダミー値を与えてその区間を {{...}}でくくることで、例えば
      • Warning: {{..}}: 48 ticks are reserved, but 192 are in use.
      • といったWarningを出すことができる。これをチェックすれば、 指定区間の演奏音長(この場合192)を手軽に求めることができる。

和音

    • 'MML...'c,d(&) [V2]
    • "MML..."c,d(&) [zmc2] (和音)
          • c: 1 ~ 32766 音長 (注: 32767の誤植ではありません)
          • d: 1,2,4,8,... or *0 ~ *32767 ディレイ
      • 和音を発音する。'~'と "~" の違いは、 和音の個々の構成音が Zコマンドによるベロシティシーケンスの影響を受けるか受けないかで、 '~'が影響を受けず、 "~"が影響を受ける。 以下'~'について説明するが、 "~"についても同様。(違いは例を参考のこと)
      • '~'間に書けるMMLは以下の通り;
      • オクターブスイッチは'~'内だけのローカル指定となる。
      • '~'内に音長を書かずに外に数値を書くと(c)、 これは絶対音長の指定になる。 設定範囲は0≦c≦32766で、全音符以上の発音時間も設定できる。
      • ディレイパラメータdを設定することによって、 和音を一度に発音せず、 各音を絶対音長dずつ時間的にずらして1音ずつ発声する (アルペジオ奏法)。 ディレイは初期値0で、 省略可能だが省略時は以前設定した値がそのまま起用される。
      • 例:
          • 'c4eg' (ドミソを4分音符で和音として演奏する)
          • o4'gb<d'96 (ソシレを絶対音長96で演奏。和音発音後はo4に戻る)
          • 'c4eg<c',6 (まずcが発音され、その6tick後にeが発音され、更に6tick後ずつ g, <cが発音される)
          • 'c4eg',30 (これはgが発音出来ないためエラーになる)
          • z100,110,120 'ceg' / c,e,gすべてベロシティ100
          • z100,110,120 "ceg" / cがベロシティ100,eが110,gが120
      • 同構成音の和音~和音間、異構成音の和音~和音間、単音~和音間、 和音~単音間を&で結んでのタイ/スラーが可能。ただし処理の関係上、 タイでつながれた和音のディレイは強制的に0に設定される。つまり
      • 'c4eg',6&'e4gb-',6
      • 'c4eg',6&'e4gb-',0
      • として処理される。
      • (注意)[zmc2] / zmc3 では、負のディレイ値を設定することも可能。この場合、
        • 実際のディレイ値は正にした物を用いる
        • 和音の発音順を記述順の逆にする
    • といった動作になる。
      • 例: 'ceg',-6 は 'gec',6 と同じ。

ピッチベンド・オートベンド・ポルタメント

    • Kn [V2] (キートランスポーズの設定)
          • n: -128 ~ 127 トランスポーズ値
      • 音程を半音単位で上下させる(キートランスポーズ)。 nはn半音を意味し、 設定範囲は-128≦n≦127(±10オクターブ程度に相当)。
      • 初期値は0、またニュートラル(中央値)も0である。
    • @Bn [V2]
    • [PITCH n] [V3] (ピッチベンドの固定値設定 (ディチューン設定))
          • n: -8192 ~ 8191 ピッチベンド
      • ベンド値(ディチューン)を設定する。設定範囲は -8192≦n≦8191で、 初期値は0、ニュートラルも0である。
      • なお、Kと@Bは全く管理が別で あるため、例えば
      • k1 @b10 cdefg
      • とすると1半音と10だけ上にピッチシフトされてcdefgが 演奏される。 よって、 いちいちMMLを書き直すこと無く各パートの頭にKコマンドを追加するだけで、 ディチューン等も考慮した転調が実現出来る。
    • @Kn [V2] (ピッチベンドの固定値設定)
          • n: -768 ~ 768 トランスポーズ幅 [V2]
          • n: -7680 ~ 7680 トランスポーズ幅 [V3]
      • キートランスポーズを1/64半音単位で行う(いわゆるディチューン)。 設定可能範囲は V2の場合 -768≦n≦768(±12半音程度に相当)、 V3の場合 -7680≦n≦7680(±10オクターブ程度に相当)。 初期値は0、またニュートラルも0である。 設定単位が違う以外は @Bと同じ。 FM音源に慣れている人用。
    • [@PITCH n] [V3] (相対ピッチ指定(ディチューン))
          • n: -8192~+8191
      • ピッチベンダーホイールの値設定を「相対指定」で行う以外は、 @B, [pitch]と同等。
    • @Bsrc, dst, dly, hold time(or bend time) [V2]
    • [BEND src,dst,dly, hold time(or bend time)] [V3]
    • (オートベンド / ピッチベンドのスライド設定)
          • src, dst: -8192 ~ 8191 ベンドスタート/ベンドエンド値
          • dl: 0 ~ 32767 ディレイ
          • hold time: -32768~0 (継続時間) または bend time: 1~32767 (変化所要時間) [V3]
      • dst............_ /| | / hold time src...._/bend time | |← →| dly
      • @Bの後ろに2つ以上のパラメータを書くとオートベンド (任意のピッチを指定出来るポルタメント)の設定となる。 この設定以降に発音する音は、すべてこの設定の音程変化に従う。
      • まず、絶対音長dlyの間、ピッチsrcを持続し、 目的のピッチdstに向けて音程を変化させていく。 変化時間はhold time/bend timeにて行う([V3]のみ)。 値を負にした場合はhold timeの設定となり、 その絶対値の絶対音長分目的のピッチdstを持続するような音程変化を行う。 逆に、正にした場合はbend timeの設定となり、 その値の絶対音長の間に音程変化を行う。設定範囲はそれぞれ -8192≦src≦8191, -8192≦dst≦8191, 0≦dly≦32767, -32767≦hold time≦0 1≦bend time≦32767。
      • V3では、bndを指定でき、正値の場合は変化にかける時間を表す。 負値の場合はベンドを完了してどのくらいの時間ベンド終了ディチューンを継続するかを設定する。 0にするとディレイ以後、 発音する音符の音長のすべてを使ってベンド終了ディチューンまで変化する設定となる。
      • 例:
          • @b0,-683,24 c /(683≒8192÷12=1半音) cをnote onして、24tick後音程が下がり始め note off時までに半音下がる。
          • @k0,128,12,24 c*64 / 発音後12カウント後音程が上がり始め、ここから24カウントで目的の音高にたどり着き、28(64-12-24)カウント分、+128の音高を保ち続ける。
          • [BEND -65,765,24,48 ]
          • (ピッチ-65から765までの音程変化を行う。ピッチ-65を絶対音長24持続し、 ピッチ765までの音程変化を絶対音長48内で行う。)
          • [BEND 0,683,24,-48 ] c*192 (ピッチ0から683までの音程変化を行う。ピッチ0を絶対音長24持続してから、 ピッチ683までの音程変化を行い始める。そしてピッチ683の音程を絶対音長48 持続する。この例では音程変化にかける時間は絶対音長120(=192-24-48)になる。)
      • dl,bndは省略可能で省略時は以前の設定値が起用される。 初期値はsc,ds,dlともに0。
      • 設定を解除するには[BEND OFF]とするか 後述の[BEND.SWITCH]コマンドを利用する。 解除した場合でも、 変化開始ピッチsrcはそのまま設定されているので、 オートベンドを解除しつつピッチも変更したい場合は @b0, [BEND 0]のように変化開始ピッチのみを設定し直す。
      • なお、ポルタメントとの併用は出来ない。
    • @Ksc,ds,dl,bnd [V2] (ピッチベンドのスライド設定)
          • sc, ds: -768 ~ 768 ベンドスタート/ベンドエンド値
          • dl: 0 ~ 32767 ディレイ
          • bnd: -32767 ~ 32767 (正)変化所用時間,(負)継続時間,(0)いずれも設定しない [V3]
      • sc,dsの設定範囲が -768≦sc≦ +768, -768≦ds≦ +768となる以外は @Bsc,ds,dlと同じ。
    • [BEND.SWITCH sw] [V3] (オートベンドのスイッチ)
          • sw: 0,1 または OFF,ON
    • オートベンドの動作のON,OFFを行う。swは0がOFF, 1がONに対応する。 また、文字列 ON,OFFを直接与えることもできる。
      • 例:
          • [BEND.SWITCH 0] [BEND.SWITCH OFF] (スイッチオフ)
          • [BEND.SWITCH 1] [BEND.SWITCH ON] (スイッチオン)
    • @Gn [V2]
    • [BEND.RANGE n] [V3]
    • (ベンドレンジの設定)
          • n: 1 ~ 24 (GS音源の場合), 1~127 (XG音源の場合), ... ベンドレンジ
      • ベンドレンジ(MIDI楽器に対するベンドの変化量領域)の設定を行う。 MIDIでは14ビット(-8192~8191)のピッチベンドの変化を与えることができるが、 この変化 -8192~0, 0~8191 が 実際にどのような音程変化をもたらすかを設定できる。
      • nはMIDI楽器によって設定範囲が異なる。 また、外部からベンドレンジを操作出来ないものや、プログラムチェンジ (音色切り換え)時に初期化されてしまうものなどがあるので、 楽器のマニュアルをよく読んでから使用したほうが良い。 また、ベンドレンジを変更すると ポルタメントオートベンドの効果も変化してくるので注意 (V2/V3では、ポルタメントは@G12が設定されていることを前提として動作する)。 逆に、 ベンドレンジを変更すれば、 オートベンドコマンドを用いて1オクターブ以上のベンドを実現したりすることも可能である。
      • 初期値は先に示したようにn=12を設定しているが、 楽器側がベンドレンジを変更出来ないものであれば不定である。
      • @G12の場合、8192÷12 ≒ 683、ということで、 ピッチベンド値を683増やすごとに、音は半音ずつ上がっていく。
      • 注: z2m3 v1.04以降では、@G12状態でなくてもポルタメントや(@J1時の)スラーが正しく動作するようになっている。(オートベンドは相変わらず影響を受ける)
      • ただし、当然ながらv1.03以前でのポルタメント動作を前提としているデータは正しく演奏されない。
      • また、本家Z-MUSIC(V2/V3)ではnに0を指定できるが、 zmc3ではエラーとなる。
      • 例:
          • @g12
          • [BEND.RANGE 12]
    • (k1k2)c,d,prt [V2]
    • [k1k2]c,d,prt [V3]
    • [PUSH_PORTAMENT src, dest, step, gate, velo, dly, hold time(or port time)] [V3] [未実装]
    • [PULL_PORTAMENT src, dest, step, gate, velo, dly, hold time(or port time)] [V3] [未実装]
    • [PORTAMENT src, dest, step, gate, velo, dly, hold time(or port time)] [V3] [未実装]
    • (ポルタメント)
          • src: ポルタメント開始音階 (o-1c ~ o9g)
          • dst: ポルタメント終了音階 (o-1c ~ o9g)
          • c: 0 ~ 32767 音長
          • step: 0~32767
          • gate: 0~32767
          • velo: 0~127 (相対指定-63~+63も可能)
          • dly: 1,2,4,8,... or *0 ~ *32767 ディレイ
          • hold time: -32768~0(継続時間) または port.time: 1~32767(変化所要時間) [V3]
      • dst............_ /| | / hold time src...._/bend time | |← →| dly
      • ポルタメントを行う。
        • [V2]な記述法の場合:
        • 以下のMMLコマンドを(~)や[-]内に記述できる。
          • (~)内や[-]内に音長を書かずに外に数値を書くと(c)、 これは絶対音長の指定になる。 設定範囲は0≦c≦32767で全音符以上の発音時間も設定できる。
          • 音長は和音コマンド同様にキーの後ろに書くことも、 (~)や[-]の外に書くこともできる。 外に書いた場合は絶対カウントとみなされる。
          • dlyはディレイで絶対カウント単位でポルタメントのかかり方を遅らせることが出来る。 設定可能範囲は 0≦d≦32767。
          • [V3]では更にhold timeもしくは port.timeを設定できる。 正値の場合はポルタメントにかける時間を表す。 負値の場合はポルタメントを完了してからどのくらいの時間、 終了音高を継続させるかの設定となる。 0にするとディレイ以後、 発音する音符の音長のすべてを使って目的の音高までポルタメントを実行する。
        • [V3]な記述法の場合:
            • src: 開始キー
            • ポルタメント開始ノート。 オクターブ-1のcからオクターブ9のgまでのノートを指定可能。
            • dest: 終端キー
            • ポルタメント終了ノート。 オクターブ-1のcからオクターブ9のgまでのノートを指定可能。
            • step: ステップタイム
            • ポルタメント音符の音長を指定する。値は絶対音長指定で行い、 その有効範囲は0-32767。
            • gate: ゲートタイム
            • ポルタメント音符のゲートタイムを指定する。値は絶対音長指定で 行い、その有効範囲は0~32767。
            • velo: ベロシティ
            • ポルタメント音符の発音ベロシティを設定する。値の有効範囲は 0~127で、数値前に±をつけて指定すれば相対指定となる。ただし、 この時の有効範囲は-63~+63となる。
            • dly: ディレイ(遅延時間)
            • 発音後、ポルタメントを開始するまでの遅延時間を設定する。 値は絶対音長指定で行い、その有効範囲は0~32767。
            • hold time or port.time: 持続時間または変化時間
            • 負値を与えた場合は、ポルタメントにおける音程変化を行ったあと最終的に、 どのくらいの時間これを持続するかの設定を行う (hold time)。 また正値を与えた場合はポルタメントにおける音程変化を絶対音長でどれくらいかけるかの設定を行う (port.time)。
            • それぞれ有効範囲は hold time: -32768~0, port.time: 1~32767。
      • 和音コマンドとは違ってオクターブ スイッチは(~)・[-]・[PORTAMENT]等の外へも影響する。
      • dly, hold time / port.timeを省略すると、 最後に設定していた値がそれぞれ使用される。
      • 音長を省略するとデフォルトの音長(Lまたは@Lコマンドで指定したもの)が適用される。
      • 本家Z-MUSICやzmc2では、 @Gコマンドでベンドレンジを12 (1オクターブ)以外に変更したとき、 あるいはMIDI楽器のベンドレンジが12に設定されていない時の動作は、 表記通りにならない。
      • zmc3の場合は、 ベンドレンジが12以外の場合でも正しくポルタメントが機能するが、 1オクターブより広い範囲でポルタメントを実行したい場合は、 例えば2オクターブで実行したい場合は、 @G24としておく必要がある。 (指定されているベンドレンジより広い範囲でのポルタメントを実行しようとすると、その旨警告が出る。)
      • (~)や[PUSH_PORTAMENT]と、 [-]や[PULL_PORTAMENT]の違いは、 実際にノートオンされる音階。 (~)や[PUSH_PORTAMENT]の場合、 srcがノートオンされてdstの音階へとピッチベンドがスライドする(dstの音階へ遠ざかる)が、 [-]や[PULL_PORTAMENT]の場合は (ピッチベンドを操作してsrcの音階に聞こえる) dstがノートオンされ、dstの音階に近づくようピッチベンドがスライドする。
      • 発音する音階によって実際に出力される波形が異なるような場合、 (~)と[-]を使い分けることによって より自分が使いたい音色に近づけることができる。
      • なお、[PUSH_PORTAMENT][PORTAMENT]はまったく同一機能。
      • 例:
          • o4(g2<g) o4のgでキーオンし、2分音符分 鳴り終えるまでにオクターブ5のgまでなめらかにポルタメントする。コマンド終了後はオクターブは5になっていることに注意。
          • (o3d*96,e),48 o3のdでキーオンし、このピッチで48カウント分演奏し、それ以降絶対音長96でキーオフするまでにo3のeまで音程をシフトしていく。
          • o4[c2e] ピッチベンドをあらかじめ3度下げつつeの音でキーオンし(つまりcが鳴っているように聞こえる)、 2分音符分鳴り終えるまでにeまでなめらかにポルタメントする。
          • [PORTAMENT o4c,o4e,48,46,120,8,24]
          • (オクターブ4のcからeに向けてポルタメントを開始する。 ポルタメントノートはステップタイムは48、 ゲートタイムは46、ベロシティ120で発音する。発音後、 絶対音長8の遅延時間の後、絶対音長24かけて目的のノートへポルタメントする。残った時間、絶対音長14 (=48-8-24)の間、変化先音程であるオクターブ4のeを持続する。)
          • [PULL_PORTAMENT o4c,o4e,48,46,120,8,-24] (オクターブ4のcからeに向けてポルタメントを開始する。 ポルタメントノートはステップタイムは48、 ゲートタイムは46、ベロシティ120で発音する。発音後、 絶対音長8の遅延時間の後、絶対音長16(=48-8-24)かけて目的のノートへポルタメントする。絶対音長24の間、 変化先音程であるオクターブ4のeを持続する。)
    • なお、オートベンドとの併用は出来ない(排他)。
        • 2つのポルタメントコマンド(~),[-]の相違点
              • MIDIパートでは、ある音程から目的の音程へ変化させる場合、 始まりの音程を基準にするか、目的の音程を基準にするかを選ぶことが出来ます。 たとえば
              • (c,e)
              • [c,e]
              • というようなドからミへのポルタメントを考えた場合をみてみます。
              • 前者(c,e)ではcを発音後、これの音程を徐々に上げていき、 目的のeの音程に達した時を処理を止めます。 つまりeの音はcの音を3度上げた音なのです。 これを分解して表記すると(半音≒683とする)
              • @b0c& .... @b2732c
              • のようになります。
              • これに対して後者[c,e]は、目的の音程eを3度下げたcの音程で発音し、 音程を上げてe本来の音程に達すると処理を停止します。 こちらは分解して表記すると(半音≒683とする)
              • @b-2732e& .... @b0e
              • のようになります。
              • これらになんの違いがあるかは楽器の性質に依存します。 たとえばPCM系の音源の場合は、 サンプリングしたベースノートの音高付近がもっともリアルに聴こえますので、 ポルタメント前後でもっとも長くならす音程がベースノートに近くなるようにする、 などの細かい工夫が行えます。
    • [AUTO_PORTAMENT sw, dly, hold time(or port.time)] [V3] (オートポルタメント)
          • sw: 0,1 または OFF,ON
          • dly: 0~32767
          • hold time: -32768~0 または port.time: 1~32767
      • _ /| | / hold time _/port.time | |← →| dly
      • オートポルタメントを制御する。有効にするとある音から次に 発音する音符までの音程を断続的に変化させる。
        • sw: スイッチ
        • オートポルタメントを有効にするか無効にするかを設定する。 0がOFF,1がONに対応する。 またはOFF,ONといった文字列を与えることも可能。
        • dly: ディレイ(遅延時間)
        • オートポルタメントを開始するまでの遅延時間を絶対音長で与える。 有効範囲は0~32767。
        • hold.time or port.time: 持続時間または変化時間
        • 負値を与えた場合は、オートポルタメントにおける音程変化を行ったあと最終的に、 どのくらいの時間これを持続するかの設定を行う(hold time)。 また正値を与えた場合はオートポルタメントにおける音程変化を絶対音長でどれくらいかけるかの設定を行う (port.time)。
        • それぞれ有効範囲はhold time: -32768~0,port.time: 1~32767。
      • ※MIDIでオートポルタメントを実行すると暗黙のうちに @J1相当のタイモードに変更されます。
    • [AUTO_PORTAMENT.SWITCH sw] [V3] (オートポルタメントスイッチ)
          • sw: 0,1 または OFF,ON
      • オートポルタメントの動作のON,OFFを行う。 swは0がOFF,1がONに対応する。 また、文字列 ON,OFFを直接与えることもできる。
      • 例:
          • [AUTO_PORTAMENT.SWITCH 0] [AUTO_PORTAMENT.SWITCH OFF] (スイッチオフ)
          • [AUTO_PORTAMENT.SWITCH 1] [AUTO_PORTAMENT.SWITCH ON] (スイッチオン)

アフタータッチメッセージ

    • [CH_PRESSURE n] [V3] [未実装]
    • (チャンネルプレッシャー)
          • n: 0 ~ 127 または -127 ~ +127 チャンネルプレッシャー値
      • チャンネルプレッシャーとは、 チャンネル単位で設定するアフタータッチ機能をいう。 本命令はMIDIパートにおいて、 このチャンネルプレッシャーのMIDIメッセージを送信するもの。 (チャンネルプレッシャーの設定値に対応する効果はMIDI音源側であらかじめ設定しておく必要がある。)
      • 設定範囲は0~127。数値の頭に±を書いて相対指定を行うこともできる。 この場合の設定範囲は-127~+127。
      • 例: [CH_PRESSURE 64] (チャンネルプレッシャーを64に設定する)
    • [POLYPHONIC_PRESSURE ky, vl] [V3] [未実装]
    • (ポリフォニックプレッシャー)
          • ky: 0 ~ 127 または O-1CO9G, C-1G9 対象ノート
          • vl: 0 ~ 127 または -127 ~ +127 ポリフォニックプレッシャー値
      • ポリフォニックプレッシャーとは、 ノート別に設定することができるアフタータッチ機能のことをいう。 本命令はMIDIパートにおいて、 このポリフォニックプレッシャーのMIDIメッセージを送信するもの。 (ポリフォニックプレッシャーの設定値に対応する効果は、 MIDI音源側であらかじめ設定しておく必要がある。)
      • ポリフォニックプレッシャーを与えるノートはkyにて指定する。 kyの設定範囲は0~127。 kyO-1CO9G, C-1G9といったMMLで与えることもできる。 ポリフォニックプレッシャー値であるvlの設定範囲は0~127。 数値の頭に±を書いて相対指定を行うこともできる。 この場合の設定範囲は-127~+127。
      • 例: [POLYPHONIC_PRESSURE o4c,64] (ノートO4Cにポリフォニックプレッシャー値64を設定する。)
    • @Zn1,...,n8 [V2] (アフタータッチの設定)
          • n1~n8: 0 ~ 127 アフタータッチ値
      • アフタータッチを音長の1/8時間単位で設定する。 これをZ-MUSICではアフタータッチ・シーケンスと呼ぶ。各値の設定範囲は 0≦ni≦127。 発音後の音のニュアンスを細かく変化させることができる。
      • 例えば
      • @z127,120,110,127,80,60,50,10
      • として絶対音長192の音長でキーオンしたとすると192/8=24で 24カウント毎にアフタータッチを変化させる。 順を追って説明すると、発音はベロシティ127でキーオンされる。 その24カウント後アフタータッチ120の強さで鍵盤を押さえた(鍵盤を押し込む強さを弱めたというべきか?)ことになり、 以降も同様である。
      • MIDI楽器によっては発音後の鍵盤を押す強さ(即ちアフタータッチ)によって音のニュアンスを変えることができ、 サンプラーなどでは全く別の音色を発音させることも可能なので、 使用方法によってはかなり興味深い効果を得ることが出来る。
      • パラメータは任意の位置で省略可能で、 数値の頭に±を付けることによって相対的な値の指定も可能である。 例えば
      • @z127,,,10
      • @z,,,,120,,1
      • @z,,120,,-10,+5
      • といった記述が可能である。 省略した部分は前の値を持続するということになり、 その間はアフタータッチの情報は送信されない。
      • 先頭パラメータを省略した場合には発音は以前に設定したベロシティ @U/Uの値で行われる。 それ以外は先頭のパラメータの値のベロシティでキーオンされる。
      • 相対指定時にオーバーフロー/アンダーフローを起こした値は、 許容範囲内の最大値最小値に修正される。
      • 値を全て省略した場合はアフタータッチ・シーケンス解除と解釈される。
      • 例: @z / アフタータッチ・シーケンス機能オフ
    • [AFTERTOUCH.LEVEL mode, v1, v2, ... , v8] [V3] [未実装]
    • (アフタータッチシーケンス設定)
          • mode: -1~2 または OFF, 1/8, OPTIONAL, ONのいずれか
          • v1v8: 0~127
      • アフタータッチシーケンスにおけるアフタータッチ値 v1v8の設定を行う。
      • 基本MMLの@Zと ほぼ同等の機能だが、mode が設定できるのが特徴。 modeとはアフタータッチシーケンスの動作方式を設定するもの。 以下にmodeと対応する動作を示す。
      • ON
        • アフタータッチシーケンスを以前の設定で再開する。
      • OFF
        • アフタータッチシーケンスを停止する。
      • 1/8
        • 発音する音符の音長の1/8単位毎で v1からv8のアフタータッチを次々に設定していく。
        • ちょうど基本MML @Zが提供するアフタータッチシーケンスの機能と同等。
      • OPTIONAL
        • 発音する音符の音長とは無関係に、 任意の時間区間毎でv1からv8のアフタータッチを次々に設定していく。 時間区間のシーケンスは後述の [AFTERTOUCH.DELAY]で行う。
      • modeは省略するとスイッチはそれまでの設定を保持したままとなる。
      • v1v8のアフタータッチ値は任意の位置で省略可能で、 数値の頭に±を付けることによって相対的な値の指定も可能。例えば
      • [AFTERTOUCH.LEVEL optional 127,,-10,+5]
      • といった記述ができる。省略した部分は前の値を持続するということになり、 その間はアフタータッチの情報は送信されない。
      • 相対指定時にオーバーフロー/アンダーフローを起こした値は有効範囲内の最大値,最小値に修正される。
      • 例: [AFTERTOUCH.LEVEL 1/8 0,0,10,20,30]
      • modeを1/8とし、 v1=0,v2=0,v3=10,v4=20, v5=30と設定した。 v6,v7,v8は省略(未設定)。
    • [AFTERTOUCH.DELAY dl0, dl1, dl2, ... , dl8] [V3] [未実装]
    • (アフタータッチシーケンス・ディレイ設定)
          • dl0: 0 ~ 32767
    • dl1dl8: 1~65545

発音 ↓ ____ ........|___ v1 | |___....... | | | v2 ←──-→←-→←─→ dl0 dl1 dl2 v1,v2はdl1,dl2に対応する [AFTERTOUCH.LEVEL]のアフタータッチ値

アフタータッチシーケンスの動作モードの一つである 「OPTIONAL」モードにおけるアフタータッチ出力タイミングを決定する 区間時間の設定を行う。

dl0は最初のアフタータッチがかかるまでのディレイ (遅延時間)に相当し、絶対音長値で指定する。 有効範囲は0~32767。初期値は0。 dl1dl8は次のアフタータッチ出力までの区間時間で、 これも絶対音長値で指定する。有効範囲は0~65535。初期値は無し。

dl0dl8の任意のものを省略可能だが、 dl1dl8は初期値を持たないので注意。

例: [AFTERTOUCH.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が設定される。

この後、たとえば

[AFTERTOUCH.DELAY 22,33,,,,,,,44]

とした場合、省略したパラメータについては前の値が保存され、 指定されたパラメータのみ書き変わるので、設定は

dl0=22, dl1=33, dl2=12, dl3=12, dl4=12, dl5=28, dl6=28, dl7=12, dl8=44のようになる。

[AFTERTOUCH.SWITCH mode] [V3] [未実装]

(アフタータッチシーケンス・スイッチ設定)

    • mode: -1~2 または OFF, 1/8, OPTIONAL, ONのいずれか

アフタータッチの動作制御を行う。 mode[AFTERTOUCH.LEVEL]の パラメータのmodeと同等。 modeは数値で与えることもでき、この時は

0=OFF, -1=1/8, 1=OPTIONAL, 2=ON

に対応する。

例:

    • [AFTERTOUCH.SWITCH OPTIONAL] / (OPTIONALモードでONにする)
    • [AFTERTOUCH.SWITCH 2] /(以前のモード(1/8かOPTIONALのいずれか)でONにする)

[AFTERTOUCH.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進数で設定すればより高度な初期化設定が行える。 []は初期設定を表す。

上から分かるようにmの初期値は1となっている。

cは同期ディレイにあたり、 実際にはmで指定した条件が c回成立すると波形が初期化されることになる。 cの初期値は1。

例:

    • [AFTERTOUCH.SYNC %011] (発音と同時、タイ指定においても初期化する)

[もどる]