type=f_number_t のとき(F-Number)#MB:PITCH_SCALE ps=10 {
type = f_number_t,
master_clock = 4000000.0,
prescale = 72.0,
start_key = 0,
| //f_number key00...key11,key12(limit)
0x0269,
0x028E,
0x02B4,
0x02DE,
0x0309,
0x0337,
0x0368,
0x039C,
0x03D3,
0x040E,
0x044B,
0x048D,
0x04D1
}
フォーマットは次の通りです。
#MB:PITCH_SCALE ps=定義番号 {
type=f_number_t,
master_clock=[],
prescale=[],
start_key=[],
|
KEY00, KEY01, KEY02, KEY03, KEY04, KEY05,
KEY06, KEY07, KEY08, KEY09, KEY10, KEY11, KEY12,
}
(KEY00〜KEY12群の直前で、| 記号で区切ること)
type=f_number_t では、変化の大きいピッチLFOを掛けた場合に、内部のF-Number値へのピッチ加算結果が、KEY00〜KEY12の値の範囲で円環状になることです(繰り上がり・繰り下がりでオクターブ変化)。
このことにより、オクターブを超える変化でも破綻せずに使用できます。
ただし、最低音程 o0c を下回るピッチ加算は最低音程に制限され、最高音程(およそo8c)を上回るピッチ加算は最高音程に制限されます。
master_clock:F-Number 計算のもとになるマスタークロックを指定します。小数以下の指定も受け付けます。例えば、4000000.0 などになります。
prescale:F-Number 計算のもとになるプリスケール値を指定します。小数以下の指定も受け付けます。
これはサンプリング周波数を得るためのプリスケール値になるため、OPNのプリスケーラーそのものではなく、12倍済みの、例えば 72.0 などになります。
start_key:KEY00〜KEY12にて指定する F-Number値 は、Block(オクターブ)が0である前提です。その上で KEY00 に割り当てる音程番号を、-24 〜 24 で指定します。
0 の時、KEY00 は オクターブ0の c と見なされます。
1増えるごとに半音上がり、1下がるごとに半音下がります。通常 0 を利用します。
KEY00〜KEY12:KEY00: start_key + 0半音 のF-Number
KEY01: start_key + 1半音 のF-Number
KEY02: start_key + 2半音 のF-Number
KEY03: start_key + 3半音 のF-Number
KEY04: start_key + 4半音 のF-Number
KEY05: start_key + 5半音 のF-Number
KEY06: start_key + 6半音 のF-Number
KEY07: start_key + 7半音 のF-Number
KEY08: start_key + 8半音 のF-Number
KEY09: start_key + 9半音 のF-Number
KEY10: start_key + 10半音 のF-Number
KEY11: start_key + 11半音 のF-Number
KEY12: start_key + 12半音 のF-Number
KEY00〜KEY12の各F-Numberは整数11ビットで指定します。ただし、0は使用できません。KEY00 から順に、数値は大きくなるように設定する必要があります。0x」をつけて16進数で記述することもできます。fMUS = (F-Number*(2^(b-1))*fSAM)/(2^20)