一般的な機能
半音変化
音符コマンドにおいて、音名の直後に+を追記すると半音上がり(シャープ)、-を追記すると半音下がります(フラット)。また、!を追記することで元の音に戻せます(ナチュラル)。これらは同時に複数指定することもできます。
(注: 一般的なMMLでは # での半音上げもできるものが多いが、DualMusikでは使えない)
#0 :0 V127 U100
EF+G+AB<C+D+E
ただし、楽譜の臨時記号とは違い、有効範囲は当該音符のみです。必要に応じてその都度記述していく必要があります。
調号などで恒久的に半音変化を設定したい場合は S コマンドを使うと便利です。これは S の後ろに、 C~Bに対応させた7文字の半音変化記号を続けて記述することで表現します。
以下の例は、上の例と等価です。
#0 :0 V127 U100 S++!++!!
EFGAB<CDE
ヴェロシティ
DualMusikのヴェロシティは、ノートオン毎ではなく U コマンドなどで事前に設定したものが以降のノートオンに対して使われるというものです。
以下の例では、全ての音がヴェロシティ=100で再生されます。
#0 :0 V127 U100
CDEFGAB<C
ヴェロシティを途中で変えたい場合は、変えたい音符の前に再設定すればOKです。
#0 :0 V127 U100
CU90DU^3EU^-5FU!G_3AUBU!^5<C
CD 間の U90 は、単純にヴェロシティを 90 に書き換えます。
DE 間の U^3 は相対指定で、前回値に 3 を加算して 93 になります。
EF 間の U^-5 も同様、前回値から 5 を減算して 88 になります。
FG 間の U! は、前回の絶対指定値である 90 に戻します。
GA 間の _3 は別の相対指定法で、 U^-3 と等価。ヴェロシティは 87 になります。
(因みに、_ の代わりに ~ を使うと相対加算となります)
AB 間の U は、現在値を絶対指定値として再定義します。ヴェロシティの値自体は変わりません。
B<C 間の U!^5 は、U! と U^5 の合成。前回の絶対指定値である 87 に戻した後、5 を加算して 92 になります。
この他、拡張コントロールを使用した特殊なヴェロシティ操作も可能です。この場合、変化する値は常に絶対指定値として再定義されることに注意してください。
ゲートタイム
DualMusikには、2種類のゲートタイム指定ができます。
#0 :0 V127 U100 L4
Q512 CDEFGFEDC1 Q1024
Q^-8 CDEFGFEDC1 Q^*0
2行目( Q コマンド)がレート指定、3行目( Q コマンドに ^ を付加)がステップ指定です。
レート指定の場合は1024を100%とした割合で指定し、ステップ指定の場合は数値を音長と解釈して元の音長からの加算量を指定します。
この例では、4分音符で再生する CDEFGFED の部分がどちらも半分の長さで自動的にノートオフされます。1分音符で再生する最後の C1 は、前者が半分の長さ,後者が8分音符ぶん短くなります。
また、これら2つの指定方法は別計算であり、両方が反映されます。片方を使わないときは、それを無効にする設定を明示する必要があります。レート指定では Q1024 ,ステップ指定では Q^*0 となります。
(何故そうなのかは音長の解説を参照)
因みに、ゲートタイムは100%を超えた値を設定することも可能です。
スラー
複数の音符コマンドを & で繋ぐことで、(擬似的に)スラーを表現します。
#0 :0 V127 U100 Y101,0Y100,0Y6,12
L8 C&D&E&FG&F&E&DC1
実際はピッチベンドを使って表現しますので、事前にRPNでベンドレンジを設定しておく必要があります。ベンドレンジは ` コマンドの設定により1オクターヴか2オクターヴであることを想定していますので、これに合わせて設定してください。上の例では Y101,0Y100,0Y6,12 で1オクターヴに設定しています。
スラー中に何か他のコマンドを挟みたい場合は、& の後ろに記述してください。& は音符コマンドの付加記述子であるため、音符コマンドと & の間に他のコマンドを書くとエラーの原因となります。
注: スラーやポルタメントで変化させたピッチベンドは、ノートオフ後も解除されません。
次回のノートオン時に解除されるようになっていますが、必要であれば () コマンドで明示的にリセットしてください。
ポルタメント
() 内に2つか3つの音符を記述することで、(擬似的に)ポルタメントを表現します。
#0 :0 V127 U100 Y101,0Y100,0Y6,12
L2 (CG)(G>G<C)&C1
上の例で、(CG) は CG 間を直線で補間し、(G>G<C) は G>G<C を通る曲線で補間します。
ポルタメントもある程度他の音符コマンドと同じような使い方が可能で、これらをスラーで繋ぐこともできます。
注: スラーやポルタメントで変化させたピッチベンドは、ノートオフ後も解除されません。
次回のノートオン時に解除されるようになっていますが、必要であれば () コマンドで明示的にリセットしてください。
和音
'' 内に複数の音符を記述することで、和音を表現します。
#0 :0 V127 U100
L2 'CEG''CFA''DGB''CEG<C'1,32
上の例では、 CEG CFA DGB を2分音符の長さで再生した後、 CEG<C を1分音符の長さで再生します。また、音長指定の後にある ,32 は追加パラメータで、アルペジオ設定です。まず C だけ再生し、32分音符ぶん待ってからEを再生、以下同様にして G <C と
続けていきます(止めるときは同時に止まります)。
和音コマンド中では、O < > U ~ _ Q コマンドが使えます。ここで設定したものは和音コマンド内のみ有効で、以降は和音コマンド前の状態に戻ります。ただ、アルペジオの設定だけは別で、設定値が以降の和音コマンドにも引き継がれます。これを解除したい場合は *0 を設定してください。
なお、和音はスラーやポルタメントと共存できません。
ループ
DualMusikでは各トラック毎にループの設定ができ、それぞれ最大16重までネスト(ループの中に別のループを埋め込む)可能です。
MMLを [] で括ると、[ の直後に記述された回数(省略時は2,0を記述した場合は無限)ループします。また、 | を記述すると残りループ数が1のときにループ終端に脱出します。
#0 :0 V127 U100
[CDE] r1 / CDECDE と再生される
[3CD|E]F r1 / CDECDECDF と再生される
[[3C|D]|E]F r1 / CDCDCECDCDCF と再生される
O4[CDEF<C]C r1 / O4CDEF<C(O4)CDEF<C(O5)C と再生される
[0CDEFGAB<C>BAGFED] / CDEFGAB<C>BAGFED をひたすらループ
ループでジャンプが発生したときのパラメータの扱いは不定。法則としては、DUMの展開で処理するもの(U コマンド等)はジャンプ直前の状態が保持され、DMSからのコンパイルで処理するもの(O コマンド等)はループに関係なく直前に記述してあるものが使われる。
具体的に何がどちらかは、機能が多すぎて説明しきれないので経験で何とかしてとか手抜きしてみるテスト。
[表紙] [前] [次]