Tone Doubler用定義書式
Tone Doublerとは
アルゴリズム4番でマルチプルとデチューン2を併用し、任意の度数(半音単位)の2音を同時に出力する、hex125さんの開発された技術およびマクロです。詳細はダウンロードのページにて公開されているTone Doublerのアーカイブ内をぜひご覧ください。
NRTDRVのコンパイラにはTone Doublerの支援機能が搭載されていますので、マクロを使わなくても音階指定によって自動的にTone Doubler用のパラメータが展開(コンパイラ内でzコマンド相当に置換)されるようになっています。
初期値として「ALG=4、MUL=4、SR=0、DT1=0」を前提としたパラメータがあらかじめ20音ぶん(0〜19)設定されていますので、その限りでは特に再定義を行う必要はありませんが、任意のパラメータを設定したい場合は下記のような書式で定義する必要があります。
定義方法
@TD<num> {
@<inst>
Key, OP1-MUL, OP2-MUL, OP3-MUL, OP4-MUL,
OP1-DT2, OP2-DT2, OP3-DT2, OP4-DT2, KeyShift
:
Key, OP1-MUL, OP2-MUL, OP3-MUL, OP4-MUL,
OP1-DT2, OP2-DT2, OP3-DT2, OP4-DT2, KeyShift
}
<num>には定義番号が入ります。範囲は 0〜15です。
その次に@<inst>で元となる音色を選択します。このコマンドよりも前の行であらかじめ対象の音色を定義しておいてください。なお、実際にはここで指定した音色のSRとDT1がTone Doubler用のレジスタ値に加算されるだけなので、それ以外の影響はありません。
そして、次の行から下記のパラメータを順番に設定していきます。各音程のパラメータを1行で記述し、定義する音程ごとに改行してください。
- Key
- 定義する音程(鳴らす2音間の半音単位での距離)。たとえば「c0d」や「e0f+」なら「2」、「c0g」や「e0b」なら「7」となる。範囲は 0〜24。
- OP1-MUL 〜 OP4-MUL
- 各オペレータのMUL値。範囲は 0〜15。
- OP1-DT2 〜 OP4-DT2
- 各オペレータのDT2値。範囲は 0〜3。
- KeyShift
- 発音時のキーシフト量。0以外を設定すると、該当ノート発音時に半音単位でシフトを行う。範囲は -12〜12。
以上のパラメータを定義しておき、各トラック内で@TDコマンドを使って切り替えると、トラックごとに異なるパラメータを使用できます。
初期値
次の値が@TD0〜15にあらかじめ定義されています。
;音色番号は未設定です(SR=0、DT1=0になります)
;
; (Multiple) (Detune2)
;(Key) OP1 OP2 OP3 OP4 OP1 OP2 OP3 OP4 (KeyShift)
0, 4, 4, 4, 4, 0, 0, 0, 0, 0
1, 3, 3, 4, 4, 1, 1, 0, 0, 0
2, 4, 4, 5, 5, 1, 1, 0, 0, -4
3, 3, 3, 4, 4, 2, 2, 0, 0, 0
4, 5, 5, 4, 4, 0, 0, 0, 0, 0
5, 4, 4, 3, 3, 0, 0, 0, 0, 5
6, 4, 4, 4, 4, 1, 1, 0, 0, 0
7, 6, 6, 4, 4, 0, 0, 0, 0, 0
8, 4, 4, 4, 4, 2, 2, 0, 0, 0
9, 6, 6, 5, 5, 1, 1, 0, 0, -4
10, 5, 5, 4, 4, 1, 1, 0, 0, 0
11, 6, 6, 5, 5, 2, 2, 0, 0, -4
12, 8, 8, 4, 4, 0, 0, 0, 0, 0
13, 6, 6, 4, 4, 1, 1, 0, 0, 0
14, 8, 8, 5, 5, 1, 1, 0, 0, -4
15, 6, 6, 4, 4, 2, 2, 0, 0, 0
16, 10, 10, 4, 4, 0, 0, 0, 0, 0
17, 8, 8, 3, 3, 0, 0, 0, 0, 5
18, 8, 8, 4, 4, 1, 1, 0, 0, 0
19, 12, 12, 4, 4, 0, 0, 0, 0, 0