創作田園地帯 | Adus Compiler

Adus Commands Reference

目次

基本要素

通常、単に数といった場合は整数リテラルのことである。 整数リテラルは特に断りのない限り、十進数、十六進数、又は八進数が使用できる。

接頭辞のない 123 のようなリテラルは十進数表記である。 無関係な文字が接している場合は そこで数が終わっている扱いになり、123c は数 123 の 後ろに c コマンドが連続していることを表す。

接頭辞 0x 又は 0X で始まる数は十六進数であり、a から f、A から F を 用いることができる。例えば 0x7F は 127 と同じである。

接頭辞 0 で始まる数は八進数である。例えば 0100 は 64 と同じ。 0 から 8 までの文字しか使用できないから 090 は不正である。

ちなみに単なるゼロを 0 と書くが、これは八進数である。 十六進数で 0x0 と書くことができ、これを単に 0x と書くこともできる。 従って十進数でゼロを表記する術はない。

多くの場合、正負符号の指定が可能で、 負の数は接頭辞 - を使って -50 や -0x3 と表記する。 正の数の接頭辞 + も使用可能である。 なお +0 と -0 はいずれも 0 と同じ意味になる。

相対値

基準値、標準値、デフォルト値、或いは先行指定された値がある場合に、 その数値からの相対指定された数が相対値である。 数の指定する殆どの場面では相対指定が可能であり、 それは整数リテラルと 相対値のいずれでも用いうることを表している。 故に相対値は「相対指定された整数リテラル」と表現する方が適切であるかも知れない。 対義語として単なる整数リテラルを、絶対値であるとか、絶対指定された数などという。

接頭辞 ^ に整数リテラルが続くとそれは基準値からの相対値になる。 例えば基準値が 5 の時に ^7 と書くのは、絶対指定で 12 と指定するのと同じである。 つまり基準値からの加算が行われるのである。 なお ^ のみの表記は ^0 の略記と見なされる。

反対に接頭辞 _ で始まると減算になる。従って _7 は ^-7 と同じ意味になる。

音長

音長とは音の長さを表すためのリテラル表現である。 尤も必ずしも音の長さとは限らず、休符の長さであるとか、 どれぐらい時間が経過したら発動するかなど時間間隔を表すから、 より正確には時間リテラルというべきであろう。 ただしそもそも音長は絶対時間を表している訳ではなく、 四分音符が実際何秒かというのはテンポによって変わってくる。 この意味で音長は相対的な表現といえる。

さて音長が単なる数で表現されたとき、 それは楽典でいう音符の長さに相当する。 つまり 4 は四分音符であり、8 は八分音符であり、0x10 は十六分音符である。 必ずしも 2 の倍数である必要はなく、楽譜ならば三連符であるべきところを、 例えば 12 と書いて十二分音符で表現できる。12 は 4 を三等分した長さとなる。 ただしステップ数で割り切れない 5 (五分音符)のような記述は不正である。

続けてピリオドを付すと付点音符になる。4. は付点四分音符、8.. は複付点八分音符、 或いは 12. は付点十二分音符である。 付点の数に制限はなく、複々付点音符のような記述も可能である。

デルタタイム(ステップ数、或いは tick 数とも) で直接音長を指定することも可能である。*2 でデルタタイム 2 の指定になる。 タイムベースが 48 なら *48 で 4 と同じになる。 単に * のみならデフォルト音長と同じ長さになり、 音長の記述を省略した長さを表す。*-2 のようにマイナス音長が使用可能で、 特に相対指定の時に有効である。

音長同士を ^ で連結することができる。4^8 は 4. と同じ長さになる。4^16^*2 のように 複数連結することも可能。4^*-2 とすると 4 より *2 だけ短くなる。 また *^* のようにしてデフォルト音長の二倍を表現できる。

同様に _ で減算が可能。4^*-2 は 4_*2 の方がスマートである。1_8 で 2.. と同じ長さ。 なお ^ も _ も右結合なので 4_8_16 は 4 から 8_16 だけ短くした 4_16 と 同じ長さになり、4_8^16 は 4 から 8^16 だけ短くした 16 と同じ長さになる。

相対指定が可能で ^8 のような表記はデフォルト音長より 8 長くなる。 つまり *^8 と同じ。同様に _*3 で *3 短くなる。

ディレクティブ

#copyright

著作権情報を埋め込む。 ©の文字、著作物発行年と、著作権所有者名が含まれなければならない。 例えば #copyright "(c)2005 Yoshinori SUDA"

see #title

#timebase

タイムベースを指定する。 ここで四分音符の分解能の決定し、デルタタイムの計算が行われる。 例えば #timebase 96

see T, 音長

#title

曲名(シーケンス名)を指定する。 例えば #title "Pastoral"

see copyright

#track

トラック名を宣言する。 全てのトラック名は使用に先立って宣言されていなければならない。 #track <a> でトラック名 a を宣言し、 #track <ab> でトラック名 a と b の両方を宣言する。

トラック名はアルファベット一文字に数字一文字で構成される。 例えば a3 や b0 など。 大文字と小文字は区別されるので e0 と E0 は別トラックである。 ただし数字が 0 の場合は省略が可能なので e0 は単に e と表記することができる。 従って #track <a> と #track <a0> は全く同じ効果がある。

see :, \channel

特殊指定

コメント(/* */, //)

/* から */ の間はコメントとして無視される。入れ子にすることはできない。

// から行末までもコメントして無視される。

トラック指定(:)

トラックを指定する。a: とすると以降は a トラックへの指定となる。 複数指定が可能で ab: ならば a と b の両方に適用される。

*: は宣言されている全てのトラックに対する指定。

a?: は a から始まる全てのトラックに対する指定。 例えば a0 と a1 が宣言されているならば a?: は a0a1: と同等。

! で始まるトラック指定は、それ以下を除く全てのトラックに対する指定をとなり、 !a: は a 以外の全てのトラックに対する指定を表す。例えば #track<abc> ならば、 !a: は bc: と同等、!ab: は c: と同等である。!a?: のような指定も可能。

see #track, \channel

小節線(|)

小節線。| は単純に読み飛ばされるので、 小節線として、或いは区切り記号として広く使用が可能。 他の命令よりも前段階で処理されるので、命令途中にも挿入が可能で、 例えば v50,30,|50,20 のように先行指定の途中に入れることもできる。 極端な例では v|s|5 は vs5 と同じ意味になる。

反復([])

[ と ] の間の文字を繰り返す。 反復回数は [ ]3 のように表記する。[ab]3 は ababab と展開される。

反復回数は正の整数で指定する。 使用できるのは正の十進数のみで十六進数などは使用できない。 また []0 は不正である。

反復回数が省略された場合は 2 を指定したのと同じなので [ab] は abab と展開される。

命令途中でも使用可能。 v50[,30,40],20 は v50,30,40,30,40,20 となる。 なお v50,[30,40,]20 とすると、反復回数が 20 回になるので要注意。 小節線を用いて v50,[30,40,]|20 ならば v50,30,40,30,40,20 になる。

[] 内に ; があると、最後の繰り返しはその地点でループを抜ける。 [ab;c] は abcab となる。ただし反復回数が 1 回の時は ; そのものが無視され、 [ab;c]1 は abc と展開される。

トラック指定をまたいでいても使用できる。a:[ b:c a:de b:f a:] は a: に関して dede に展開される。

see ;, |

ビーデ(;)

ビーデ位置を指定する。[] 反復の最後はここでループを抜ける。

see []

以降無視(!)

そのトラックの以降全ての命令を無視する。 例えば cd: ! とすると c と d トラックが演奏を停止する。 トラック指定の ! と混同しないように注意されたい。 !a: ! は a トラックのみを演奏する。

see //, :

スクリプト(\[ \])

\[ と \] の間はスクリプト(マクロ)である。 Adus はスクリプト言語として DMDScript を内蔵しており、 これは ECMAScript、即ち JavaScript と互換性がある。 例えば \[ var r = 3; \] のように直接記入する。 \[ と \] の間には改行を含めることもできる。

関数 r() が Adus へのインターフェースである。 r() のパラメータを文字列として MML に書き出す。 従って \[ r(3) \] は MML 中に単に 3 と書くのと同じ結果。 \[ r("v10"); \] は v10 と同じ。 複数パラメータの場合は連続して書き出されるので、 \[ r(3,4) \] は 34 と同等になる。

スクリプトは in-track に有効であり、 トラックごとに変数などの値が保持される。 トラックをまたいでの値交換はできない。

スクリプトの実行結果にスクリプトを含めることはできない。 \[ r("\[ r=3 \]"); \] はエラーになる

また、現時点ではスクリプトの実行結果にサブトラック反復を含めることができない。

see $

スクリプト変数($)

スクリプト内の値を参照する。 $...$ は \[ r(...); \] と同義。ただし $ と $ の間に改行は入れられない。 \[ var r=3; \] としておいて $r$ とすると 3 が挿入される。 いわゆるシンタックスシュガー。

see \[ \]

サブトラック({})

{ と } の間はサブトラックとして、 任意の位置に音符を挿入することができる。 例えば {c1} として任意の位置に c1 を挿入することができるので、 {c1} e8g8<c8>g8 は c1 と e8g8<c8>g8 が同時に演奏される。

サブトラックには親トラックの全てのパラメータが承継され、 ベロシティの先行指定などもそのまま引き継がれる。 なお、小文字系コマンド(v や l など)に限り、 サブトラックの内容が親トラックに影響を及ぼさない。 つまりサブトラックから抜けた時点で元の状態に戻される。

サブトラックの後に音長を指定することができる。 {a1}4 は {a1} r4 と同じ効果がある。 音長の代わりに & を指定すると、サブトラックの長さを指定したのと同じになり、 {a4 b4}& は {a4 b4} r2 と同等である。 これは {} を外した a4 b4 と似ているが、 ベロシティの指定など小文字系コマンドに関して差異がある。

サブトラックは {{<c8e8>}c4 d0<f8>}>a2< のように 入れ子にするこができる。ただし、このネストは最大で10回までに制限している。

小文字系コマンド

<

オクターブを一つ上げる。o^1 とほぼ同じだが、o コマンドで先行指定しているとき、 その解除を行わない点が異なる。

see >, o, \swap

>

オクターブを一つ下げる。

see <, o, \swap

(

ベロシティを増やす。(10 は v^10 とほぼ同じとなる。 ( のみのとき、初期状態では (8 と同じとなり、 この標準値は (=20 などとして変更が可能である。 なお、この標準値は ) にも影響する。

see ), v, \swap

)

ベロシティを減らす。)10 は v_10 とほぼ同じとなる。 ( のみのとき、初期状態では )8 と同じとなり、 この標準値は (= により変更される。

see (, v, \swap

a

音名のラ。使用法は c に準じる。

b

音名のシ。使用法は c に準じる。

c

書式 c[+/-/=][length][/gate][,velocity[,adjust]][&]

音名のド。例えば cdefgab<c> でドレミファソラシドを意味する。

o4 のときの c がMIDIノートナンバーで 60 を表す。

c の後に + を付ければシャープの意味となり半音上がる。 + を複数付けることもでき、c++ は d と同じ。 同様に - はフラットで半音下げる。 なお、= はナチュラルだが今のところ実用性は皆無である。

c2 のようにして音長を指定して音符の長さを表す。 指定が省略された場合は l コマンドの値が採用される。 また、c^8 のようにこの値からの相対指定が可能で、 同じことを c*^8 と書くこともできる。c^* は省略値の二倍になる。 なお、c0 のように音長がゼロのときは、ひとまずノートオフされずに、 次の音符のノートオフ時まで延長される。 つまり c0e4 は c と e のいずれも四分音符となる。 c0e0g4. のように和音を表現することができる。

スラッシュ / を用いて実際に発音する長さ、つまりゲートタイムが指定できる。 c/8 も c2/8 も c1./8 も、いずれも音符の長さに関わらず 常に八分音符の長さの発音となる。 ゲートタイム指定が省略されたとき(スラッシュ自体がないときを含む)は、 音符の長さを基準に q コマンドと kコマンド によりゲートタイムが決定され、 gate = length × q/8 + k により 算出される長さとなる。 この長さから相対指定したい場合は、c2/_16 のようにすると良い。 なお、c0/16 のように音長がゼロのときや、& と併用されたとき、 ゲートタイムの指定は無視される。

コンマに続けてベロシティを指定できる。例えば c4,120 や c2/8,^10 などとする。 省略時や相対指定のときは v コマンドの指定が基準となる。

更にコンマに続けて発音開始位置の増減位置を指定できる。 c4,,*3 なら 3 ticks だけ遅れて発音が開始され、c4,,-*3 或いは c4,,*-3 なら 3 ticks 早く発音が始まる。 指定が省略されたときは t コマンドの値が採用される。 相対指定が可能。

最後に & を付けるとノートオフが延長される。c4&e4&g4 のように アルペジオを簡易的に表現することができる。 より細かくはサブトラックを用いて表現する。

なお、音高、ベロシティ及び発音開始位置について、n コマンドにより、 デフォルト値の挙動を変更することができる。

see l, q, k, v, t, {}, n, r, p, o, w

d

音名のレ。使用法は c に準じる。

e

音名のミ。使用法は c に準じる。

f

音名のファ。使用法は c に準じる。

g

音名のソ。使用法は c に準じる。

k

書式 k[gate][,[<length>]gate2]...[~]

書式 kr[value][,type]

書式 ks[coefficient]

ゲートタイムの調整。指定された音長だけゲートタイムの増減を行う。 例えば k*5 とすれば c4 の実際の発音は c4^*5 となる。 即ち音符の長さを length とし、q コマンドの 値を q としたとき、 ゲートタイムは、length × q/8 + gate となる。

先行指定が可能であり、指定方法は v コマンドに準じる。 同様に kr コマンド、ks コマンドの使用も可能である。

see c, q, v

l

書式 l[length][,length2]...[~]

標準の音長を指定する。 音符の長さが省略された場合は、この長さになる。 つまり l8 のとき cde は c8 d8 e8 の意味になり、cd4ef16 は c8 d4 e8 f16 となる。

ノートオンごとの先行指定が可能で l8,16,32 cde は c8 d16 e32 と同じ。 或いは l8,,^32,4 cdefg は c8 d8 e8^32 f4 g4 となる。

末尾にチルダ ~ を付けると先行指定の終端に達したら最初に巻き戻す。 例えば l8,16,32~ cdefgab<c> は c8 d16 e32 f8 g16 a32 b8 <c16> と展開される。

see c, r, p

n

書式 nnote[,number[,velocity[,adjust]]]

ノート・マトリックスを定義する。 ノート・マトリックス機能を使用することで、 特定の音符に対して別のノート番号を割り振ることができるようになる。 つまり nc,36 とすると、 (そのオクターブの)c に対する発音は常にノート番号 36 で行われる。 単に nc と書くと c に対するノート・マトリックスを解除する。

note の指定は c, d, e, f, g, a, b のいずれか、 又は直接ノート番号による。 よって o4 c はノート番号 60 を表すので、o4 nc,36 の代わりに n60,36 と 書くこともできる。

コンマに続けてベロシティの増減を指定することができる。 nc,36,10 とすると、v コマンド等での指定より 更に10加算されたベロシティで発音される。nc,,-10 のように負数も可。

更にコンマに続けて 発音開始位置の増減値を指定可能。nc,36,,*2 とすると、t コマンドでの 指定より更に 2 ticks だけ発音が遅れる。

典型的には、次のようにドラムキットのために用いる。

v:  nc,42,15    // Closed Hihat
    nd,46,10    // Open Hihat
    ne,44       // Pedal Hihat
    ng,51,10    // Ride Bell
    na,52,10    // Cymbal 1 (right)
    nb,49,10    // Cymbal 2 (left)

w:  nc,36       // Kick
    nd,38,10    // Snare
    ne,39       // Hand Clap
    <
     na,48      // Tom-H
     nb,47      // Tom-M
     nc,45      // Tom-L
     nd,43      // Tom-F
    >

see c, v, t

o

書式 o[octave][,[<length>]octave2]...[~]

オクターブの指定。 標準は o4。o^2 や o_1 にような相対指定も可能。

先行指定が可能であり、指定方法は v コマンドに準じる。 ただし、or コマンドや os コマンドは存在しない。

see <, >, c, n, v

p

書式 p[length][/gate][&]

休符。使用法は r に準じる。

ただし、v コマンドその他の先行指定に対する 振る舞いが r コマンドと異なり、p コマンドは 先行指定にノートオンがあったかのように作用する。 例えば v10,20,30 のとき crc は c,10 r c,20 となるが、cpc は c,10 p c,30 となる。

see r, c, l

q

書式 q[rate][,[<length>]rate2]...[~]

ゲートタイムの割合指定。標準は q8 であり、 例えば q4 としたとき c1 は c1/2 となり、c8 は c8/16 となる。 つまり、音符の長さを length とし、k コマンドの 値を k としたとき、 ゲートタイムは、length × rate/8 + k となる。

先行指定が可能であり、指定方法は v コマンドに準じる。 ただし、qr コマンドや qs コマンドは存在しない。

see c, k, v,

r

書式 r[length][/gate][&]

休符。r2 のようにして休符の長さを表す。 長さが省略された場合は l コマンドの値が採用される。

現在発音中の音符がある場合は、休符の終わりでノートオフされるので、 デフォルト状態のとき c4&r4 は c2 と同じになる。 ノートオフの時期は、スラッシュ / に続けてゲートタイムを指定することで行う。 例えば c4&r2/8 は c4.r4. とほぼ同じ。 ゲートタイム指定が省略されたときは、 休符の長さを基準に q コマンドと kコマンド によりゲートタイムが決定され、 gate = length × q/8 + k により 算出される長さとなる。

末尾に & を付けると、現在発音中の音符のノートオフが更に延長される。 例えば l4 c&r&e としたとき、c は 4^4^4 の長さを持っている。 特に発音中の音符がないときは無視される。

ノートオンごとの先行指定が行われているときに、 音符のように作用させたいときは p コマンドを用いると良い。

see p, c, l

t

書式 t[adjust][,[<length>]adjust2]...[~]

書式 tr[value][,type]

書式 ts[coefficient]

発音開始位置の調整。指定された音長だけ発音開始位置の増減を行う。

先行指定が可能であり、指定方法は v コマンドに準じる。 同様に tr コマンド、ts コマンドの使用も可能である。

see c, n

v

書式 v[velocity][,[<length>]velocity2]...[~]

書式 vr[value][,type]

書式 vs[coefficient]

ベロシティ(1–127)を指定する。v127 が最大ベロシティとなる。

ノートオンごとの先行指定が可能で v90,,30,^20,^20 cdefg は それぞれ 90, 90, 30, 50, 70 のベロシティが適用される。 ベロシティの推移はノートオンの直後に実行されるので、v20,30,40 c{d}e のとき、c の ノートオンの時点で 30 になっているので、d にも 30 が適用され、 それぞれ 20, 30, 30 のベロシティとなる。 単に v とのみ記載すると、先行指定を解除することになり、v10,20,30,40 cdvef は それぞれ 10, 20, 30, 30 となる。同じことを v^0 などと書くこともできる。

先行指定の際にベロシティ値の前に <length> を付すと、 ノートオンごとではなく進んだステップ数により推移するようになる。 即ち v100,<2>50 は最初 100 で二分音符経過したら 50 になるの意味。 例えば v10,20,<4>30,40 l8 cdefg はそれぞれ 10, 20, 20, 30, 40 となる。 四分音符経過した次ではなく、四分音符目が既に新しいベロシティになる。

末尾にチルダ ~ を付けると先行指定の終端に達したら最初に巻き戻す。 なお、v^10~ とするとノートオンごとに 10 ずつベロシティが増加することになる。

接尾辞 r はランダム機能を表す。 従って vr はベロシティをランダムに変化させる。 vr10 でプラスマイナス10の範囲で、 ノートオンごとにベロシティに揺らぎが生じる。 ただし、c,120 のように音符に直接ベロシティが指定されている場合は機能しない。 vr0 または単に vr とすることで解除できる。

コンマに続けて変化のタイプを指定できる。標準は vr,1 である。 この数値を大きくするほど、ばらつきが大きくなる。 標準の vr,1 が最も中央付近に集中し 自然な演奏となり、vr,2 となると不安定となり、vr,3 になると 範囲内のばらつきが目立つようになる。

接尾辞 s はノートオンごとの一定変化を表す。 よって vs はノートオンごとにベロシティを指定値ずつ増減させることになる。 例えば v50vs5 cdefg ならそれぞれ 50, 55, 60, 65, 70 という具合になる。 反対に vs-5 なら 5 ずつ減る。 相対指定すると vs5 vs^3 は vs8 と同じ意味になるので要注意。 vs0 または単に vs で解除できる。

see (, ), c, n, w

w

書式 w[l][[<length>]ratio][,[<length2>]ratio2]...[~]

書式 wc

ノートオンごとのポリフォニック・キー・プレシャー(アフタータッチ)の設定を行う。 w<4>80,<8>50 c1 とすると c を発音してから四分音符経過すると、 ベロシティ比 80/100 でキー・プレシャーを送信し、 更に八分音符経過するとベロシティ比 50/100 で送信する。

ベロシティ比とは、v コマンドなどによって 音符に指定されたベロシティを 100 とした相対比率である。w80 c,120 の場合は 120*(80/100) つまり 96 が実ベロシティになる。あるいは w150 c,40 の場合は 60 となる。 なお、0 が指定された時は常に実ベロシティは 1 となる。

最初のベロシティ比に音長指定がないときは 0 の意味になる。 つまり w50 は w<0>50 を表す。 この場合、ノートオンと同時にプレシャーを設定するのではなく、 ノートオン時のベロシティそのものが半分になる。 なお、w<4>50 は w100,<4>50 と同じと考えることができる。

二番目以降のベロシティ比に音長指定がないときは l コマンドの長さとなる。 従って l8 w90,100,<4.>50,^20 は w<0>90,<8>100,<4.>50,<8>70 を意味する。

末尾にチルダ ~ を付けると指定終端に達した時点で最初に巻き戻す。 ただし、最初の指定に音長を指定しておくべきである。

また、w コマンドの替わりに wl コマンドを使用すると、 指定された離散数値を線形補間し、滑らかなベロシティ変化を生む。

w[l] コマンドは一旦指定すると、以後の全ての音符に有効となる。 一音符のみに効かせるには { l8 w40,30 c4. }& のように サブトラックに入れると良い。

解除するには wc 又は単に w と記載する。

see c, l, v, E, F

大文字系コマンド

B

書式 B[L][[<length>]pitch][,[<length2>]pitch2]...[~]

書式 BC

書式 FB[L][[<length>]pitch][,[<length2>]pitch2]...[~]

書式 FBC

ピッチベンド(-60–60)を指定する。B0 が原音どおり、B60 が最大に音を上げ(MIDIデータでは8191)、B-60 が最大に音を下げる(MIDIデータでは-8192)ことになる。 標準の状態であれば 60 が半音の幅を持っている。

先行指定が可能であり、指定方法は E コマンドに準じる。

FB コマンドでノートオンごとのエンベローブ変化を生む。 詳細は F コマンドを参照。 なお、FB コマンドの各数値は百分率ではなく単純に加減算される。

see E, F, \bend

C

コントロール・チェンジを送信する。 例えば C7,100 とするとボリュームを 100 にする。 ただし、ボリュームの変更は V コマンドを使うべきで、 このように他のコマンドで利用可能な コントローラならばそちらを優先して使用した方が良い。 要するに C コマンドでの変更はコンパイラが把握できない。

E

書式 E[L][[<length>]expression][,[<length2>]expression2]...[~]

書式 EC

書式 FE[L][[<length>]ratio][,[<length2>]ratio2]...[~]

書式 FEC

エクスプレッション(0–127)を指定する。 E100 でエクスプレッションを 100 にする。E127 が最大となり、E0 で無音となる。

先行指定が可能で、E100,<4>50,<8>80 とすると、 最初 100、四分音符経過後 50 に、更に八分音符経過したら 80 になる。 二番目以降の音長を省略した場合は l コマンドの値になるので、E100,50,80 は E100,<8>50,<8>80 を表す。 ただし、先頭のみ音長指定がないときは 0 の意味になるので、E100 は E<0>100 の意味になる。 なお、E100,,50 のように表記すると E100,^0,50 の意味となり、 要するに E100,100,50 と同じになる。

末尾に ~ を付けると、 指定終端に達した時点で最初に巻き戻す。 ただし、E<4>100,<4>50~ のように、 最初の指定に音長を指定しておくべきである。

E コマンドの替わりに EL コマンドを使用すると、 指定された離散数値を線形補間し、滑らかなエクスプレッション変化を生む。

先行指定をしている途中で EC とすると、 そこで指定を解除してエクスプレッションを固定する。 これは E^0 と同等の効果があり、単に E と書くこともできる。

FE コマンドでノートオンごとのエンベローブ変化を生む。 詳細は F コマンドを参照。

see l, v, w, F, V

F

書式 FE[L][[<length>]ratio][,[<length2>]ratio2]...[~]

書式 FM[L][[<length>]ratio][,[<length2>]ratio2]...[~]

書式 FV[L][[<length>]ratio][,[<length2>]ratio2]...[~]

書式 FB[L][[<length>]pitch][,[<length2>]pitch2]...[~]

書式 FP[L][[<length>]value][,[<length2>]value2]...[~]

書式 FEC/FMC/FVC/FBC/FPC

ノートオンごとのエンベローブ変化を生む。 FE, FM, FV, FB, FP がそれぞれ E, M, V, B, P コマンドに対応し、 エクスプレッション、モジュレーション、ボリューム、ピッチベンド、パンポット に対して動作する。

例えば FE<4>80,<8>50 c1 とすると c を発音してから四分音符経過すると、 比 80/100 でエクスプレッションを送信し、 更に八分音符経過すると比 50/100 で送信する。

この比は、E コマンドで指定されたエクスプレッションを 100 とした百分率である。 よって E120 FE80 の場合は 120*(80/100) つまり 96 になる。 あるいは E40 FE150 の場合は 60 となる。

先頭に音長指定がないときは 0 の意味になる。 つまり FE50 は FE<0>50 を表す。 二番目以降に音長指定がないときは l コマンドの長さとなる。 従って l8 FE90,100,<4.>50,^20 は FE<0>90,<8>100,<4.>50,<8>70 を意味する。

末尾にチルダ ~ を付けると指定終端に達した時点で最初に巻き戻す。 ただし、最初の指定に音長を指定しておくべきである。

FE コマンドの替わりに FEL コマンドを使用すると、 指定された離散数値を線形補間し、滑らかな変化を生む。

FE[L] コマンドは一旦指定すると、以後の全ての音符に有効となる。

解除するには FEC 又は単に FE と記載する。 ただし FE^0 は必ずしも同じではなく、 変化途中ならばその数値を保持したままで変化を停止させる。

FM 及び FV も FE と同様に百分率により指定するが、FB と FP は 各数値が単純に加減算される点が異なる。

see l, w, B, E, M, P, V

M

書式 M[L][[<length>]modulation][,[<length2>]modulation2]...[~]

書式 MC

書式 FM[L][[<length>]ratio][,[<length2>]ratio2]...[~]

書式 FMC

モジュレーション(0–127)を指定する。

先行指定が可能であり、指定方法は E コマンドに準じる。

FM コマンドでノートオンごとのエンベローブ変化を生む。 詳細は F コマンドを参照。

see E, F

P

書式 P[L][[<length>]position][,[<length2>]position2]...[~]

書式 PC

書式 FP[L][[<length>]value][,[<length2>]value2]...[~]

書式 FPC

パンポット(0–127)を指定する。P64 が中央、P0 が左端、P127 が右端になる。

先行指定が可能であり、指定方法は E コマンドに準じる。

FP コマンドでノートオンごとのエンベローブ変化を生む。 詳細は F コマンドを参照。 なお、FP コマンドの各数値は百分率ではなく単純に加減算される。

see E, F

T

テンポを指定する。例えば T120 で一分間に四分音符を百二十回演奏することになる。

V

書式 V[L][[<length>]volume][,[<length2>]volume2]...[~]

書式 VC

書式 FV[L][[<length>]ratio][,[<length2>]ratio2]...[~]

書式 FVC

ボリューム(0–127)を指定する。

先行指定が可能であり、指定方法は E コマンドに準じる。

FM コマンドでノートオンごとのエンベローブ変化を生む。 詳細は F コマンドを参照。

see v, w, E, F

\bank

バンク・チェンジを行う。 \bank{87,69} とすると MSB:87, LSB:69 でバンク・チェンジする。 これは C0,87 C32,69 と同等。 なお、\bank{13} は \bank{13,0} の略記。

see \program

\bend

ピッチ・ベンド・センシビリティを設定する。 B-60 から B60 までのベンド・レンジを半音単位で指定するので、 例えば \bend{2} としておいて B-60 とすると半音下がり、B60 とすると半音上がる。 詳細は音源に依存する。 なお、 \bend{2} は \rpn{0,0,2} と同じ意味になる。

see B

\channel

チャンネル(1–16)を指定する。\channel{1} とすると 以降の命令がMIDIチャンネル 1 に送信されるようになる。

see #track

\nrpn

NRPN を設定する。\nrpn{1,2,3,4} は C99,1 C98,2 C6,3 C38,4 と同等。

see \rpn

\program

プログラム・チェンジ(0–127)を行う。 例えばGM音源の場合、\program{0} でピアノになる。 プログラム番号は 0 以上 127 以下の数で指定するが、 \program_shift によりずらすことができる。

see \bank, \program_shift

\program_shift

\program における番号指定を加減する。 例えば \program_shift{1} としてから \program{10} とすると、 実際には 11 が送信される。 \program_shift{-1} ならば \program の指定が 1 以上 128 以下となり、 伝統的な指定方法と同一になる。 \program_shift{0} で解除されるが単に \program_shift{} と書いても良い。

see \program

\rpn

RPN を設定する。\rpn{1,2,3,4} は C101,1 C100,2 C6,3 C38,4 と同等。

see \nrpn

\sysex

システム・エクスクルーシブ・メッセージを送信する。 例えば \sysex{0x7e, 0x7f, 0x09, 0x01} で GM System On を送信する。 先頭の 0xf0 と終端の 0xf7 は必要ない。 引数に文字を指定可能で、\sysex{'a'} は \sysex{0x61} と同じことを表す。

Roland 式チェック・サムの自動計算が可能で、計算の範囲を ( と ) で囲むと、 閉じ括弧 ) の後ろにチェック・サム値が挿入される。

\swap

\swap{<>} コマンドは < と > の機能を入れ替える。 つまり、> でオクターブを上げるという伝統的な方法になる。 トグルスイッチなので再度指定すると元に戻る。 また、あくまでも当該トラックに対する指定であるので、 全トラックを変更したい場合は、*:\swap{<>} などと表記する必要がある。

\swap{<>} の指定の有無が分からない場面で 可搬性の高いコードを記述したい時は、< の代わりに o^1 で代用する。 勿論 o^1 と < は全く同じ動作ではなく、o^1 は先行指定の解除を伴う。

同様に \swap{()} コマンドは ( と ) の機能を入れ替える。 ただし、標準値の指定は常に (=20 のふりあいにし、)=20 とはならない。

see <, >, (, )


制作/創作田園地帯  2008/05/05初出
無断転載を禁じます。リンクはご自由にどうぞ。
Copyright © 2005-2008 Yoshinori SUDA. All rights reserved.