MML reference: Patch define block

定義(Define)

Patch(n){
	define
}

P(n){
	define
}

引数(Inputs)

n

パッチ番号を指定します。

define

パッチ内容を定義します。

Table 1.の音域の定義コマンドにより、定義する音域の開始音程を指定します。
次に高い定義の音程の半音下までが、音域の範囲となります。
デフォルト(これらのコマンドが出現するまで)は、ノートナンバー0(オクターブ1のC)となります。

Table 1.音域の定義
CommandContens
nno 定義する開始音程を、指定のノートナンバーで設定します。
o1cが、ノートナンバー 0 となります。
note(Accidentals)octave 定義する開始音程を、音名及びオクターブで設定します。
note:音名
a …
A, La, ラ
b …
H, Si, シ
c …
C, Do, ド
d …
D, Re, レ
e …
E, Mi, ミ
f …
F, Fa, ファ
g …
G, Sol, ソ
Accidentals:臨時記号(省略可)
+ …
♯ Sharp
# …
♯ Sharp
- …
♭ Flat
octave:オクターブ
$name マクロnameを呼び出します。
$$name ローカルマクロnameを定義します。

Table 2.のコマンドにより、指定した音域に適用するコマンドを指定します。
MMLコンパイラは、シーケンス記述ブロックに指定された音域に応じて、これらのコマンドを自動で挿入します。
パッチ定義されなかったコマンドは、挿入しません。
※尚、指定数値が同じだった場合は、コマンドの自動挿入を省略します。

Table 2.音域毎のコマンド定義
CommandContens
_n 移調を指定します。
qn クオンタイズ(短くする値)を指定します。
un クオンタイズ(実際の発音長)を指定します。
sn(,n) 音源固有のパラメータ(sコマンド)を指定します。
@NSn(,n) N16xの音色・サンプル長を指定します。
@n 音色を指定します。音色エンベロープと同時に設定することはできません。
E@n 音色エンベロープを指定します。音色と同時に設定することはできません。
Evn 音量エンベロープを指定します。
Emn 音程エンベロープを指定します。
Enn ノートエンベロープを指定します。
Sn(,f) 呼び出すサブルーチンを指定します。
n : サブルーチン番号
f : 最適化無効フラグ("1"で必ずサブルーチンを埋め込みます。)

内容(Contents)

指定の音域毎に、音色やエンベロープを指定します。
この機能により、生楽器のような、音域毎の倍音成分の違いや、エンベロープの違いを表現可能です。

また、ノイズトラック(TR4)をドラムセット化し、シーケンス記述の簡素化が可能です。

注意(Notes)

パッチ定義に記述されたサブルーチンについては、 呼び出したサブルーチン番号を記憶しておき、呼び出すべきサブルーチンの番号が変化したときにだけ、サブルーチン呼び出しを行います。
シーケンス肥大化防止のため、常にサブルーチンの挿入は行わない旨、留意してください。

パッチ定義に_コマンドを定義した場合は、シーケンスに_コマンドを挿入するため、 それまでの_コマンド, __コマンドによる移調の値を上書きする旨、注意してください。

音域の判定は、_コマンドによる移調を計算に含めません。
尚、kコマンドによる移調は、計算に含めます。

例(Sample)

#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

}