Patch(n){
define
}
P(n){
define
}
パッチ番号を指定します。
パッチ内容を定義します。
Table 1.の音域の定義コマンドにより、定義する音域の開始音程を指定します。
次に高い定義の音程の半音下までが、音域の範囲となります。
デフォルト(これらのコマンドが出現するまで)は、ノートナンバー0(オクターブ1のC)となります。
Command | Contens |
---|---|
nno | 定義する開始音程を、指定のノートナンバーで設定します。 o1cが、ノートナンバー 0 となります。 |
note(Accidentals)octave | 定義する開始音程を、音名及びオクターブで設定します。 note:音名
|
$name | マクロnameを呼び出します。 |
$$name | ローカルマクロnameを定義します。 |
Table 2.のコマンドにより、指定した音域に適用するコマンドを指定します。
MMLコンパイラは、シーケンス記述ブロックに指定された音域に応じて、これらのコマンドを自動で挿入します。
パッチ定義されなかったコマンドは、挿入しません。
※尚、指定数値が同じだった場合は、コマンドの自動挿入を省略します。
Command | Contens |
---|---|
_n | 移調を指定します。 |
qn | クオンタイズ(短くする値)を指定します。 |
un | クオンタイズ(実際の発音長)を指定します。 |
sn(,n) | 音源固有のパラメータ(sコマンド)を指定します。 |
@NSn(,n) | N16xの音色・サンプル長を指定します。 |
@n | 音色を指定します。音色エンベロープと同時に設定することはできません。 |
E@n | 音色エンベロープを指定します。音色と同時に設定することはできません。 |
Evn | 音量エンベロープを指定します。 |
Emn | 音程エンベロープを指定します。 |
Enn | ノートエンベロープを指定します。 |
Sn(,f) | 呼び出すサブルーチンを指定します。 n : サブルーチン番号 f : 最適化無効フラグ("1"で必ずサブルーチンを埋め込みます。) |
指定の音域毎に、音色やエンベロープを指定します。
この機能により、生楽器のような、音域毎の倍音成分の違いや、エンベロープの違いを表現可能です。
また、ノイズトラック(TR4)をドラムセット化し、シーケンス記述の簡素化が可能です。
パッチ定義に記述されたサブルーチンについては、
呼び出したサブルーチン番号を記憶しておき、呼び出すべきサブルーチンの番号が変化したときにだけ、サブルーチン呼び出しを行います。
シーケンス肥大化防止のため、常にサブルーチンの挿入は行わない旨、留意してください。
パッチ定義に_コマンドを定義した場合は、シーケンスに_コマンドを挿入するため、
それまでの_コマンド, __コマンドによる移調の値を上書きする旨、注意してください。
#Code "nsd_n163.bin"
//======================================================================
// Wave table for Piano
//======================================================================
//Sampling = o2a
N163(2){
8,11,14,12, 9, 9,10,10,14,15,13,10, 9,11, 7, 4,
2, 3, 1, 0, 3, 6, 5, 8,10, 7, 4, 2, 3, 6, 7, 5
}
//Sampling = o3a
N163(3){
9,10,10, 9,10,12,14,15,14,12,11, 9,10,10, 9, 8,
6, 4, 2, 1, 0, 1, 3, 5, 6, 5, 4, 3, 5, 7, 8, 7
}
//Sampling = o4a
N163(4){
8, 9,10,11,11,11,12,13,14,15,15,15,14,12,10, 8,
6, 4, 3, 2, 1, 0, 0, 1, 2, 4, 5, 6, 6, 7, 7, 8
}
//Sampling = o5a
N163(15){
8,10,11,13,15,14,13,14,13,11, 9, 6, 2, 0, 1, 4,
}
//Sampling = o6a
N163(16){
8,11,13,14,15,14,15,13,11, 8, 5, 3, 1, 0, 2, 4,
}
//======================================================================
// Envelope for Piano
//======================================================================
E( 0){ (15,12,6),(12,6,255) L 6 R (6,0, 72) L 0 } // o1c -
E( 1){ (15,12,6),(12,5,225) L 5 R (5,0, 64) L 0 } // o1a -
E( 2){ (15,12,5),(12,5,196) L 5 R (5,0, 56) L 0 } // o2e -
E( 3){ (15,12,5),(12,5,169) L 5 R (5,0, 49) L 0 } // o2a -
E( 4){ (15,12,5),(12,4,144) L 4 R (4,0, 42) L 0 } // o3e -
E( 5){ (15,12,4),(12,4,121) L 4 R (4,0, 36) L 0 } // o3a -
E( 6){ (15,12,4),(12,4,100) L 4 R (4,0, 30) L 0 } // o4e -
E( 7){ (15,12,4),(12,3, 81) L 3 R (3,0, 25) L 0 } // o4a -
E( 8){ (15,12,3),(12,3, 64) L 3 R (3,0, 20) L 0 } // o5e -
E( 9){ (15,12,3),(12,3, 49) L 3 R (3,0, 16) L 0 } // o5a -
E(10){ (15,12,3),(12,2, 36) L 2 R (2,0, 12) L 0 } // o6e -
E(11){ (15,12,2),(12,2, 25) L 2 R (2,0, 9) L 0 } // o6a -
E(12){ (15,12,2),(12,2, 16) L 2 R (2,0, 6) L 0 } // o7e -
E(13){ (15,12,1),(12,1, 9) L 1 R (1,0, 4) L 0 } // o7a -
E(14){ (15,12,1),(12,1, 4) L 1 R (1,0, 2) L 0 } // o8e -
E(15){ (15,12,1),(12,1, 1) L 1 R (1,0, 1) L 0 } // o8a -
//======================================================================
// Patch
//======================================================================
Patch(10){
@NS 0,32 _+36 Ev0 //Range = c1 - g#1
a1 @NS 0,32 _+36 Ev1 //Range = a1 - d#2
e2 @NS 0,32 _+36 Ev2 //Range = e2 - g#2
a2 @NS 0,32 _+36 Ev3 //Range = a2 - d#3
e3 @NS 32,32 _+36 Ev4 //Range = e3 - g#3
a3 @NS 32,32 _+36 Ev5 //Range = a3 - d#4
e4 @NS 64,32 _+36 Ev6 //Range = e4 - g#4
a4 @NS 64,32 _+36 Ev7 //Range = a4 - d#5
e5 @NS 96,16 _+24 Ev8 //Range = e5 - g#5
a5 @NS 96,16 _+24 Ev9 //Range = a5 - d#6
e6 @NS112,16 _+24 Ev10 //Range = e6 - g#6
a6 @NS112,16 _+24 Ev11 //Range = a6 - d#7
e7 @NS112,16 _+24 Ev12 //Range = e7 - g#7
a7 @NS112,16 _+24 Ev13 //Range = a7 - d#8
e8 @NS112,16 _+24 Ev14 //Range = e8 - g#8
a8 @NS112,16 _+24 Ev15 //Range = a8 - d#9
}
//======================================================================
// Sequence
//======================================================================
bgm(0)
{
t96
NC8 @NL 0, 2
@NL 32, 3
@NL 64, 4
@NL 96,15
@NL112,16 //n16x への転送はここで済ます。
TR6,7,8,9,10,11,12,13 @P10
TR6 l4 o4 cdefgab>c1
}