Z-MUSIC(V2/V3) MML文法(基本命令)

デフォルト音長変更

ゲートタイムのレート指定

ゲートタイムtick数指定

テンポ変更

音階・休符

    • [A-G][!#+-][s,g,v] [V2] (音階MML)
          • s: 1,2,4,8,... or *0~*32767 ステップタイム
          • g: 1,2,4,8,... or *0~*32767 ゲートタイム
          • v: 0~127 ベロシティ
      • A~Gがそれぞれハ長調のラシドレミファソに 対応する。 音階MMLの後に!,#,+, -(!がナチュラルに, #+が♯に, -が♭に相当)を つけて、音階を半音ずつずらすことが出来る。
      • 例:
          • c
          • c+++(d+と同じ)
          • c-
          • c!+
      • ナチュラルの存在意義については[k.sign] の項を参照。
      • sを指定することでステップタイムを指定することが出来る。 ステップタイムには基本的には音楽的な音長を指定する。 ステップタイムを指定しなければ、 デフォルトの音長 (Lで別途指定する) がステップタイムとして用いられる。
      • 例:
          • c (デフォルトの音長)
          • c4(四分音符)
          • c+8(8分音符)
      • ステップタイムの後に.(ドット,小数点)をつけることで、 (数字で指定した部分の)ステップタイムの半分のステップタイムを付加していく。
      • 例:
          • c4.(付点四分音符)
          • c+4..(四分音符+8分音符+16分音符の長さ)
      • ステップタイムを音楽的な音長で指定する代わりに、 絶対音長(いわゆるtick数)で指定することも出来る。 その場合は数字の前に* (アスタリスク)をつける。
      • 例:全音符の分解能を192とした場合 ((Z~)で変更可能)
          • c*48(四分音符)
          • c+*48..(四分音符+8分音符+16分音符の長さ)
      • 最後に&(アンド記号)をつけることで、 その音階からのタイ/スラー表現を記述出来る。 ただし、スラーについては @J も確認のこと。
      • 例:
          • c4&c4 (タイ)
          • c4&d4 (スラー)
      • &の代わりに^(べき乗記号)を用いると、 後からどんどん音長を付加していくことができる。ただしタイのみ。 (つまり、スラーのように、音階を変化させることができない)
      • 例:
          • c1^1^2 (全音符x2 + 二分音符、の長さ)
          • c1^*48^8 (絶対音長による指定との混在も可能)
      • 通常はここまでを理解していればよい。
      • ステップタイムの後にゲートタイムgを指定することが出来る。 ステップタイムと同じ表記方法が使える。
      • 例:
          • c4,16 (音長は四分音符だが、実際の発音時間は16分音符相当。 いわゆるスタッカート)
          • c4,*2 (もっと短く発音する場合の例)
          • c,8 (このような指定も可能)
      • ステップタイムよりゲートタイムが長い場合は、
        • [V2]の場合、 自動的にステップタイム=ゲートタイム(かつタイ指定されている)として処理される。
        • [V3]の場合、 指定通りの意味に解釈される。例えば
          • c4,2d2,2
        • という場合、1拍目はcのみが、2拍目はcとdの両方が、 3拍目はdのみが鳴っていることになる。
      • ゲートタイムの後にベロシティvを指定することが出来る。 相対指定も可能。
      • 例:
          • c4,,127 (四分音符をベロシティ127で発音)
          • c4,*2,+10 (前の音よりベロシティを10強く発音)
          • c,,-20
      • ベロシティが0より小さくなったり、127より大きくなったりした場合は、 自動的にそれぞれ0,127に補正される。
      • まとめとして、音階MMLを正規表現で表わすと、次のようになる。
      • [A-G][!]?[#\+-]*(\*?\d\.*)+ (,(\*?\d)?(,[\+-]?\d))? [&((\*?\d\.*)+)]+
      • (注意)音長*0と音長*1
      • [V2]では、 歴史的な理由により、音長*1の音は常にタイとみなされる。 つまり、下記の2つの例の演奏結果はまったく同じ。
          • @l1 c&d&e&f&g
          • @l1 cdefg
      • [zmc2]では、共通トラック部に
      • .legacy_*1_tie 0
      • と記述することで、 音長*1の音をタイと見なさなくすることができる。
      • [V3]では音長*1の音はタイとは見なされず、 そのまま長さ*1の音と認識される。
      • また、他のMMLによくあるように、音長*0が使用できる。 タイと併用しない場合は発音のみを行い、 タイと併用して通常の音長の音階に繋げる場合は、 その音階がノートオフすると同時に*0&な音もノートオフする。
      • 例:
          • c*0e*0g*0 / cegの和音が同時に鳴り始め、鳴りっぱなしになる
          • c*0&e*0&g4 / cegの和音が同時に鳴り始め、4分音符分鳴る
          • @u100c*0& @u-10e*0& @u-10g4 / 構成音のベロシティを変えてcegの和音が4分音符分鳴る
          • c*0,,100& e*0,,-10& g4,,-10 / 3つ目の例はこのように記述することもできる
          • z100,-10,-10 c*0& e*0& g4 / このように記述することもできる
          • z100,-10,-10 "c4eg" / zmc2とzmc3ではこれでも同義
    • Rs,g [V2] (休符)
          • s: 1,2,4,8,... or *0~*32767 ステップタイム
          • g: 1,2,4,5,... or *1~*32767 ゲートタイム [V3]
      • ステップタイムsを指定して用いる。
      • 休符以外の音符からタイで休符(R)に接続された場合、 直前の音符のタイと認識される。
      • 例: q8'c4eg'& r8 / cegな和音を付点四分音符分発音する
      • V3の場合ゲートタイムgを指定できるが、 これは通常の音符から休符へ&によるタイ指定が行われた時のみ意味をなす。 たとえば
      • q8c4&r4,8
      • とした時はc4は4分音符音長分発音し続け、休符に差し掛かる。 休符の長さは4分音符音長だがゲートタイムは8分音符に設定されているので、 前の音のc の音は休符が始まってから8分音符音長後に消音されることとなる。
      • 例:
          • R4 (四分休符)
          • R4..
          • R
          • R*192
          • R4&R
    • @Ws [V2]
    • [TRACK_DELAY n] [V3] (ウエイト・トラックディレイ)
          • s: 1,2,4,8,... or *1~*32767 ステップタイム
      • 指定時間、前の状態を保存する。sは音長を表し、 音階の時と同様の指定が可能。 s省略時はデフォルト音長が用いられる。
          • @w*64
          • @w4..
          • [TRACK_DELAY 10] (そのトラックを絶対音長10分演奏を遅らせる)
      • 注: @WR(休符)とは 微妙に異なり、「発音時の状態を維持する」ものであるため、 たとえば
          • c*0& @w e や c*0& @w& e : 和音が鳴る
          • c*0& r e や c*0& r& e : 単音が2つ鳴る (@J0の場合)
      • などと、要するに*0&から@wにつなぐ場合に違いが出てくる。
      • また、Rとは違って、 ゲートタイムを指定することはできない。
  • [K.SIGN k1,k2,...][V2]
    • [KEY_SIGNATURE k1,k2,…] [V3] (調号設定)
          • k1, k2,...: 調号がつく音階の指定, もしくは調名の指定
      • 調号を設定する。 どの音階にデフォルトでどの変化記号(♯, ♭)がつくのかを設定する。 の部分は変化記号、音階の順に設定し、 1個ずつ , で区切る。または変化記号の後に音階を並べる。
    • kn部分は変化記号、音階の順に設定し、1個ずつ , で区切る。
      • 例:
          • [K.SIGN +c,+d,+f,+g] (ホ長調) cdfgに自動的に#(シャープ)がつくようになる
          • [K.SIGN -abde] (変イ長調) abdeに自動的に-(フラット)がつくようになる
          • [K.SIGN -a,+b] aに-(フラット)が、bに#(シャープ)が自動的につくようになる
      • また以下の調名を記述することによって、 一般的な調号の設定を行うこともできる。
      • 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
      • 例:
          • [K.SIGN G-Major] / 変ト長調(cdegabに♭)
      • ナチュラル記号である '!' を使用すれば、 一時的に調号の効力をなくすことができる。 また、調号の効力をなす音階に対してさらに #,+(#)や-(♭)が付いた場合は 調号と両方考慮した音階になる。
      • 例:
          • [K.SIGN -b] b! / (bには通常ならば♭が付き、b-になる (半音下がる)がここでは ! のためナチュラル指定となり bで演奏される)
          • [K.SIGN G-Major] b!
          • (この調だとbには通常ならば♭が付き、b-になる) (半音下がる)のだが ! のためナチュラル指定となり bで演奏される)
          • [K.SIGN -b] b- / (bには通常ならば♭が付き、b-になる (半音下がる)が、ここでは更に-(♭)がついているため b--(つまりa)で演奏される)
          • [K.SIGN G-Major] b-
          • (この調だとbには通常ならば♭が付き、b-になる) (半音下がる)のだが♭のためb--(つまりa)で演奏される)
    • @Jn [V2]
    • [TIE_MODE n] [V3] (TIEの処理モード設定)
          • n: 0(通常モード) or 1(FM音源互換モード) [V2] または NORMAL,SPECIAL(ENHANCED) [V3]
      • MIDI部におけるタイの処理モードを設定する。 n=0で通常モード(初期値)、 n=1でFM音源互換モードになる。
      • c&d とした場合、通常(@J0時)はMIDIでは & のない c d として処理される。しかし@J1時はある音の発音後、 その音の持続音(減衰音)で次の音の音程へ変化してくれるようになる(スラー)。 つまり、c&d はノートオフなしで繋がる。
      • (内部的には、 c& @b683 c相当。 683≒8192÷12=1半音)
      • 特に問題がなければ、トラックの最初におまじないとして @J1を入れておいた方が何かにつけて便利である。
      • 参考:以下すべてノートオフなしで繋がる例
          • @J1 (c<d)&(d>c)
          • @J1 (g,e)24&e
          • @J1 @b0,683 c4&c+4
          • @J0 (cd)&(c>b)
          • @J0 (g,e)24&g
          • @J0 @b0,683 c4&c4
      • 例:
          • [TIE_MODE ENHANCED] (タイモードをFM音源互換モードに設定する)

オクターブ変更

    • On [V2] (オクターブ指定)
          • n: -1~9 オクターブ値
      • オクターブを設定する。初期値はO4。 nには-1~9までを指定可能。
      • 例:
          • O-1
          • O3
      • デフォルトでは、 < >でオクターブを相対的に+1,-1する (< は+1し、> は-1する)。 [zmc3]では、 .OCTAVE_MODEにより、 <>の機能を逆にすることができる。
      • 例:
          • O-1 < (ここではO0状態)
          • O3 > < (ここではO3状態)
          • cdefgab<c / いわゆるドレミファソラシド

音長制御

    • Ls [V2]
    • @Lc [V2] (デフォルト音長設定)
          • s: 1,2,4,8,... or *1~*32767 ステップタイム
          • c: 1~32767 ステップタイム(絶対音長)
      • デフォルト音長(デフォルトのステップタイム)を設定する。初期状態は L4。
      • Lを用いた場合パラメータは音楽的音長 (もしくは絶対音長)を用い、 @Lだと絶対音長のみとなる。 どちらも付点の併用が可能。
      • 例:
          • L16.
          • @L96
          • L*2000 / この指定も可能であるため、@Lの存在意義はないかも
    • Qn [V2] (ゲートタイムのレート設定)
          • n: 1~8 ゲートタイムレート [V2]
          • n: -8~8 ゲートタイムレート [V3]
      • 1音中で実際に発音している時間を音長のn/8時間単位で設定する (シーケンサでいうゲートタイム指定)。
      • 初期値 n=8、設定範囲は-8~8。
      • 値が正の場合、1が発音時間がもっとも短く、8が最も長い(テヌート)。
      • [V3]で、値が負の場合は、 ステップタイムよりもゲートタイムを長くすることができる。 たとえばQ-8とすると、 ゲートタイムはステップタイムの2倍に設定され、 Q-4ならばゲートタイムはステップタイムの1.5倍に設定される。 SC-88Proなどの音源では、 これにより音源側のスラー機能を使うことができる。 (ノートオフ前に次のノート音がくると、特定音源の特定音色ではスラーと解釈される)
      • 分母の値はデフォルトでは8。
      • @Qを設定した時はQは機能せず、 逆にQを設定した時は@Qは機能しない。後に設定したものが有効となる。
      • [V3]では、.GATETIME_RESOLUTIONにより、ゲートタイムの分解能を8以外の値 (8,16,32,64,128のいずれか)に変更できる zmc3では[GATETIME_RESOLUTION]により、 演奏トラック中でも変更が可能。
      • zmc2ではQn1,n2, ... といったように、 ベロシティーシーケンス(MML Z)と同様の方法で Qnの値を先行していくつでも指定できる。また、 Q*4, *8, ... などとすることで、 @Q同様にゲートタイムを直接指定することができる。
      • 例:
          • q4 cdefg / (スタッカート気味になる)
          • q-4 cdefg / (V3のみ; 前の音がこれから鳴る音と重なるようになる(音源によってはレガート機能が働く))
    • @Qn [V2] (ゲートタイムの微調整)
          • n: 1~32767 ゲートタイム減少時間(tick) [V2]
          • n: -32767~32767 ゲートタイム減少時間(tick) [V3]
      • ノートオフ(発音をやめること)を絶対音長でnカウント早める。 発音音長より大きい値の場合、@Qは機能せず Q8の状態で演奏される。 例えば @Q96 c*16 の場合は発音長が 16 - 96 < 0 となるので @Qの処理はされず発音長は16tickとなる。
      • nを負値に設定した場合は絶対音長で-nカウント、 ノートオフを遅らせることができる。たとえば
      • @Q-12 c*48
      • とするとcのゲートタイムは60(=12+48)となる。
      • 初期値は@Q0(=Q8=テヌート) に相当し、設定範囲は0~32768。
      • @Qを設定した時はQは機能せず、 逆にQを設定した時は@Qは 機能しない(排他)。つまり後に設定したものが有効となる。
      • (注意) zmc2では@Qn1,n2, ... といったように、 ベロシティーシーケンス(MML Z)と同様の方法で @Qnの値を先行していくつでも指定できる。

音量/ベロシティ

    • Vn [V2] (音量(ボリューム)の設定)
          • n: 0~16 おおまかなボリューム値
      • 大ざっぱにボリュームの設定を行う。設定範囲は0≦n≦16。 初期値は8。Vによるボリューム指定と、 それに対応する@Vのボリューム値は以下の通り。
    • @Vn [V2]
    • [VOLUME v] [V3] (音量(ボリューム)の設定)
          • s: 0~127 or -128~+127 ボリューム値 / ボリューム増減値
      • ボリュームの設定を行う。vの設定範囲は0≦v≦127。 数値の頭に+,-の符号を付記すると相対指定になる。 この場合のvの設定範囲は-127≦v≦+127。
      • 例:
          • [VOLUME 42] (音量42を設定)
          • [VOLUME -12] (それまでの音量を12下げる)
    • _n ~n [V2]
    • [@VOLUME v] [V3] (ボリュームの相対設定)
          • n: 0~127 ボリューム増減値 [V2]
          • n: -127~127 ボリューム増減値 [V3]
      • ボリュームの相対指定を行う。~は音量増加を表し _は音量減少を 表す。設定範囲は0≦n≦127で、演算の結果、 アンダーフローを起こした場合は0へ、 オーバーフローを起こした場合は127へ修正される。 また計算は@Vnで表される絶対音量レベルで行われる。
      • nを省略した場合は以前に設定したものが用いられる。 nの初期値は1。
      • [@VOLUME]は、 [VOLUME]とは違い、 先頭に+,-をつけなくても相対指定としてみなされる。
      • 例:
          • @v120 _10 c _ d ~ e (cは@120 - 10 = @v110で、dは@v110 - 10 = @v100で、 eは@v100 + 10 = @v110で演奏される)
          • |:10 _10 c :| (段々と音量が下がりながらcが演奏される)
          • [@VOLUME 12] (それまでの音量を12上げる)
          • [@VOLUME -12] (それまでの音量を12下げる)
    • Un / @Un [V2]
    • [VELOCITY n] [V3]
    • [@VELOCITY n2] [V3] (ベロシティの設定)
    • Un:f / @Un:f [zmc2]
    • [VELOCITY n:f] [zmc3] (ベロシティのゆらぎつきでの設定)
          • n: 0~127 or -128~+127 ベロシティ値 / ベロシティ増減値
          • n2: -128~+127 ベロシティ増減値
          • f: -64~+63 ベロシティゆらぎ値 [zmc2]
      • ベロシティの設定を行う。 大抵のMIDI楽器ではこれによって音のニュアンスを変えることが出来る。
      • 設定範囲は 0≦n≦127で127が最強(大)に相当。 初期値は127。
      • また、@U+2 U-2 といったように、 現在の設定値からの相対指定も可能。[@VELOCITY]では、 指定値n2は無条件に相対値と見なされる。
      • 引数を省略すると、 @uの場合は以前設定した相対値が補われる。 初期値は+1。 同様にuの場合は最後に設定した@uの値を再設定する。
      • [V3]では@uの代わりに[VELOCITY] を使用することができる。
      • zmc2/zmc3では、fを指定することができ、 その場合はベロシティのゆらぎ設定となる。 以後ベロシティ値には随時n±fの値が ランダムで設定される。 ゆらぎをオフにする場合にはfに0を指定する。
      • u@uの違いは、 演奏時にリアルタイムに考慮されるか否か、 ループの影響を受けるか受けないかといったところにある。
      • 例:
          • @u100|:4 @u+5 c :| / 4回ともベロシティ105
          • @u100|:4 u+5 c :| / ベロシティ105,110,115,120で演奏
          • @u5 |:3 @u+50 c u-5:| d / ベロシティ55が3回でc、ベロシティ50でd
          • @u110|:10 u+2 c :|u e / eはベロシティ110
          • [VELOCITY 42] (ベロシティを42に設定)
          • [VELOCITY -12] (それまでのベロシティを12下げる)
          • [@VELOCITY 12] (それまでのベロシティを12上げる)
          • [@VELOCITY -12] (それまでのベロシティを12下げる)
              • 機能的にはまったく同じですが、 演奏時にリアルタイムに考慮されるか否かの相違があります。
              • @u100|:4 @u+5 c :|
              • としたとき4回とも @u105c が演奏されますが
              • @u100|:4 u+5 c :|
              • としたときは @u105, @u110, @u115, @u120 でそれぞれ演奏されます。
              • なお、管理は @uu はまったく別です。 ですから
              • @u5 |:3 @u+50 c u-5:| d
              • としたとき @u55 で3回 c が演奏され @u50d が演奏されます。
              • u のみの指定は、 それまでに最後に設定した @u をもう1回設定するので
              • @u110|:10 u-2 c :|u e
              • のように、ループで変化してしまったベロシティを元に戻すことが出来ます。 この例では、直前のベロシティ値によらず e@u110 で演奏されます。
              • ただし
              • @u110 c @u-2 d u e
              • のように、 @U相対ベロシティを使用した場合は @U の値自体が変化してしまうので、 U のみの設定は余り意味を持たなくなります。 この例ならば ed と同じく @U108 (110-2)で演奏されます。
              • このように U, @U を使い分ければ、 複雑で高度なシーケンスをすることが出来ます。 @u は、ループなどの影響を受けない大局的な設定、 u はループ等の影響を受ける局所的な設定というわけです。
              • 一方で、[VELOCITY][@VELOCITY]は 単に絶対値指定か相対値指定かの違いだけで、 U@Uに相当する違いはありません。
    • Zn1,... [V2] (ベロシティの先行指定)
    • Zn1:f1,... [zmc2] (ベロシティのゆらぎつきでの先行設定)
          • n1,n2,...: 0~127 or -128~+127 ベロシティ値 / ベロシティ増減値
          • f: -64~+63 ベロシティゆらぎ値 [zmc2]
      • ノートオン毎のベロシティのばらつきを先行して設定する。 これをZ-MUSICではベロシティー・シーケンスと呼ぶ。 各値の設定範囲は0≦ni≦127。
      • これはこの先の音階MML、和音MML、 ポルタメントMMLのベロシティを先行指定するものである。 最大いくつ先まで指定できるかはZ-MUSICの処理系によって異なり、 [V2]が16個、 [V3]が128個、 [zmc2]が無制限。
      • zmc2/zmc3では、fを指定することができ、 その場合はベロシティのゆらぎ設定となる。 以後ベロシティ値には随時n±fの値がランダムで設定される。 ゆらぎをオフにする場合にはfに0を指定する。
      • 例:
          • z127,99,80 cdefg
          • cはベロシティ127で、dはベロシティ99で、eはベロシティ80で、 fは再びベロシティ127で、gはベロシティ99で発音される。
          • z127:10,99:5,80 cdefg
          • cはベロシティ127±10で、dはベロシティ99±5で、eはベロシティ80±5 (ゆらぎ値省略時は直前の指定値を流用)で、 fは再びベロシティ127±10で、gはベロシティ99±5で発音される。
    • 値を1つだけ指定した時は @Uと全く同様に機能する。 数値の頭に±を記述すれば相対指定が可能である。 数値を全く書かずに 'Z'のみ記述するとベロシティ・シーケンスのOFFと解釈される。 また、ベロシティコマンド@U / Uを使用してもベロシティ・シーケンスは解除される。
      • 注意:ベロシティ・シーケンスはループコマンドを無視して処理されるので、
      • z99,100,127 |:100 c :| d e
      • とした場合cが100回ベロシティ99で、ループ外のdがベロシティ100で、 eがベロシティ127で演奏される。
    • [VELOCITY.REVISE type, power] [zmc2] (ベロシティ補正)
          • type: 0, 1, 2, 8, 16, 24 ベロシティ補正タイプ
          • power: 0, 1, 2, 8, 16, 24 ベロシティ補正強度
      • 「音長が短くなればなるほどマイナス方向にベロシティを補正する」 ようにする。
      • typeが補正曲線指定で、0がlog曲線補正、1が線形補正1、 2が線形補正2。
      • powerが補正の強さを表す。 この機能をオフにするときにはpower=0を指定する。
      • デフォルトでは補正オフ。ベロシティの揺らぎと併用すると効果的。
      • 具体的な補正式は下記の通り。 (pがpower,Zが全音符の分解能)
      • 例えばZ=192,power=7の場合、以下の補正がかかる:
    • その他のtypeについては、思い付き次第おいおい実装していきます(^^;
    • [VELOCITY.OFFSET o] [zmc3] (ベロシティオフセット設定)
          • o: -128~127
      • ベロシティに対するオフセット値(バイアス値)を設定する。 デフォルト状態ではo=0。
      • ベロシティとして実際に出力される値は、 [VELOCITY]で指定した値に[VELOCITY.OFFSET]で指定したオフセット値を加えたものが用いられる。 オフセット値を加えた値が127を越える場合や、 -128を下回る場合は、それぞれ127,-128に補正される。
      • 例:
          • [velocity.offset -10] z120,100,90,80 cdef
          • (cのベロシティは110, dのベロシティは90,...相当となる)

テンポ設定

    • Tn [V2]
    • [TEMPO t] [V3] (テンポの設定)
    • [@TEMPO t] [V3] (相対テンポ設定)
          • n: 30~300 or -270~+270 テンポ値 / テンポ増減値
    • テンポを設定する。nは30~300が指定可能。 nは1分間に演奏される4分音符の数に相当する。
      • 初期値は120。1つのトラックで指定すれば全トラックに影響する。 指定値に±をつけることで、相対指定も可能。
      • [@TEMPO]を用いると、 指定値に±がなくてもテンポの相対指定となる。 演算の結果有効範囲を超えてしまった場合は、 設定可能範囲内に自動修正される。
      • 例:
          • [TEMPO 200] (テンポ200を設定)
          • [@TEMPO -20] (現在のテンポに20を引いた値を設定)

音色・バンク(バリエーション)変更

    • @n[V2], [TIMBRE n] [V3], [PROGRAM n] [V3] (音色の設定 その1)
    • @n1,n2 [V3], [TIMBRE n1,n2] [V3], [PROGRAM n1,n2] [V3] (音色の設定 その2)
    • @n1:n2,n3 [V3], [TIMBRE n1:n2,n3] [V3], [PROGRAM n1:n2,n3] [V3] (音色の設定 その3)
    • @&quotprogram str.." [zmc3], [TIMBRE "program str.."] [zmc3], [PROGRAM "program str.."] [zmc3], (音色の設定 その4)
          • その1の場合
              • n: 1~128 プログラム番号 [V2] または
              • n: 1~32768 プログラム番号 [V3]
          • その2の場合 [V3]
              • n1: 0~16383(255) バンク番号
              • n2: 1~128 プログラム番号
          • その3の場合 [V3]
              • n1: 0~127 バンク上位
              • n2: 0~127 バンク下位
              • n3: 1~128 プログラム番号
          • その4の場合 [zmc3]
              • program str: 音色文字列
      • プログラムチェンジ(音色変更)を行う。
        • その1の場合
        • 音色を音色番号nに設定する。初期値なし。 [V2]では、1≦n≦128。初期値なし。 [V3]で129以上の値を設定すると、 音色バンク切り換えのメッセージも同時に送出される。
            • バンク上位値=((n >> 14) and $7f)
            • バンク下位値=((n >> 7) and $7f)
              • [TIMBRE 25] (音色番号25を設定)
        • その2の場合 [V3]
        • 音色を、バンクn1,音色番号n2に設定する。 初期値なし。 n1は0~16383, n2は1~128の値を取る。 音色バンク切り換えのメッセージも同時に送出される。
            • バンク上位値=((n1 >> 7) and $7f)
            • バンク下位値=(n1 and $7f)
              • [TIMBRE 4,25] (バンク4の音色番号25を設定)
        • その3の場合 [V3]
        • 音色を、バンクn1:n2, 音色番号n3に設定する。初期値なし。 音色バンク切り換えのメッセージを、 n1を上位バンク値・ n2を下位バンク値として送出する。
            • n1: 0~127 バンク上位
            • n2: 0~127 バンク下位
            • n3: 1~128 音色番号
              • [TIMBRE 4:4,25] (バンク4:4の音色番号25を設定)
        • その4の場合 [zmc3]
        • 音色指定を音色名で行う。 @"機種 音色"という風に用いる。
          • 例:
              • @"SC-88Pro X Wire Bass" / 内部でi10,3@40に化ける
              • @"8p xwirebass" / 上の例と同じ
              • @"xg grandpno" / i0,0 @1
              • [program "mu100 GrandPno"] / i0,126 @1
              • [program mu100 GrandPno] / 同様
              • @"xg grandpno#" / i0,126 @1
              • @"basic grandpno#" / i0,127 @1
              • → basicの代わりに xgbasic, mubasicも可。 省略名の代わりに、フルネームでも可
          • 当然ながら、大文字小文字やらスペースの有無、ハイフンの有無 (Honky-tonkとHonky tonkなど)にピリオドの有無などの類は無視する。 XG音色の場合、省略名・フルネームどちらでも可。
          • # でも、音色番号を覚えなくてよくなる代わりに、音色名を # (マニュアル表記に沿って)正確に覚える必要がでてくるのが # なんとも。それでも「Alto Saxって何番だっけ?」てなことで # 悩まなくて済むようになるのは大きいと思ってます。
          • 現状、機種名は8p/88/55/mt/xg/mu100に対応。 SC系については、8pとする以外にSC88ProとかSC-88 Proとかでも受け付ける。 CM64音色は、やたらに音色名がだぶるために未サポート。
          • 機種名を省略した場合、@iで設定された機種情報をにらみつつ (でないと単に"Violin"と言われた場合GS/XGなどの区別ができない)、 バンクセレクトのLSBを0にした音色を設定する
          • ・・・となる予定だが、現在はエラーとしてはじいている(^_^;
          • (XG周り thanks to muteさん)
    • Im,l [V2]
    • [TIMBRE_BANK n1,n2] [V3]
    • [PROGRAM_BANK n1,n2] [V3]
    • (バンク切り替え)
          • n1: 0~127 バンク上位
          • n2: 0~127 バンク下位
          • m,l: 0~127 バンク(バリエーション)上位・下位バイト
      • MIDI楽器の音色のバンク(バリエーション)切り換えを行う。 RolandのSC-55などでは音色がバンクに分かれており、 音色切り換えはこの命令でバンクを指定してから行う。
      • 同一バンク内で切り換えを行う場合は一度設定すれば以降設定する必要はない。 mはバンク番号上位、 lはバンク番号下位を表し、 設定範囲はm,lともに0~127までである。 パラメータは省略すると強制的に0になる。
      • GS音源では主にバンク切り換えパラメータの上位を有効としているので、 Im とすればバンクmへ切り換えることが出来る。また、 SC-88以上の音源では、例えば Im,1とすれば、 SC55音源のバンクmへ切り替える。
      • 一方KORGのWAVE STATIONやYAMAHAのXG音源では、 バンク切り換えパラメータの下位を有効としているので、 I0,l や、 I,l とすることでバンクlへ切り換えることが出来る。
      • 例:
          • i0 @128
          • [TIMBRE_BANK 0] @128 (バンク0の音色番号128に設定)
          • i0,12 @11
          • [TIMBRE_BANK 0,12] @11 (バンク0,12の音色番号12に設定)
  • [TIMBRE_SPLIT sw b1,t1,m1,n1, b2,t2,m2,n2, ... b8,t8,m8,n8] [V3]
    • [PROGRAM_SPLIT sw b1,t1,m1,n1, b2,t2,m2,n2, ... b8,t8,m8,n8] [V3]
    • (個々の音階に対する音色振り分け)
          • sw: OFF,ON
          • b1b8: 0~16383 (あるいは00:00~127:127)
          • t1t8: 1~32768
          • m1m8: 0~127,128 または O-1C~O9G,C-1~G9
          • n1n8: 0~127,128 または O-1C~O9G,C-1~G9
    • 発音する音高に応じて、音色を自動的に切り換える機能 (TIMBRE SPLIT)の設定を行う。
    • ノート番号0~127(O-1C~O9G)までを最大8つのブロックに分割し、 1つのブロック毎に別々の音色を対応づけることができる。 実際の演奏時には、発音する音符のノート番号が特定のブロックに 属する場合は、その対応付けられた音色に切り換えてから発音を行う。
        • sw: スイッチ
        • TIMBRE SPLIT機能の制御を行う。 sw=OFFで機能解除、 sw=ONで機能有効に設定する。
        • 省略して、これ以降のパラメータ (b1b8, t1t8, m1m8, n1n8)を 記述した場合はONが指定されたとみなす。 また、 OFFを指定した場合には以降のパラメータを記述する必要はない。 なお、swには数値は与えられない点に注意。
        • b1b8: バンク番号
        • 切り換える音色のバンク番号を設定する。 設定範囲は0≦b1b8≦16383。
        • また、 mm:nnのような表記で指定することも可能で、 このときは mmがBANK MSB,nnがBANK LSBに対応し、 設定範囲は0≦mm≦127,0≦nn≦127。
        • t1t8: 音色番号
        • 切り換える音色番号を設定する。 設定範囲は1≦t1t8≦128。
        • m1m8: 範囲開始ノート番号
        • 分割ブロックの開始ノート番号を設定する。 設定範囲は0≦m1m8≦127。 MMLを使ってO-1C~O9G、C-1~G9といった指定も可能。
        • n1n8: 範囲終端ノート番号
        • 分割ブロックの終端ノート番号を設定する。 設定範囲は0≦m1m8≦127。 MMLを使ってO-1C~O9G、C-1~G9といった指定も可能。
      • 例:
          • [TIMBRE_SPLIT ON,0,32,o4c,o5c, 8,32,o2c,o3b ]
          • O4C~O5Cの音符はバンク0,音色番号32で
          • O2C~O3Bの音符はバンク8,音色番号32で
          • 演奏する。 その他の音域の音符に関してはそれまでに設定されている音色で演奏する。
    • [TIMBRE_SPLIT.SWITCH sw] [V3]
    • [PROGRAM_SPLIT.SWITCH sw] [V3]
    • (個々の音階に対する音色振り分け機能使用可否スイッチ)
          • sw: 0,1 または ON,OFF
    • TIMBRE SPLIT機能の制御を行う。 sw=0で機能解除、 sw=1で機能有効。
    • [TIMBRE_SPLIT]swと同様に文字パラメータを与えることもできる。 この場合はsw=OFFで機能解除、 sw=ONで機能有効となる。
      • 例:
          • [TIMBRE_SPLIT.SWITCH off] (TIMBRE_SPLITを機能解除する)

[もどる]