type=divrate_octavelast のとき(PSG分周比)#MB:PITCH_SCALE ps=11 {
type = divrate_octavelast,
master_clock = 3993600.0,
prescale = 32.0,
divrate_mask = 0x0FFF,
divrate_offset = 0,
start_key = 0,
| //divrate KEY00...KEY11
0x0EE8,
0x0E12,
0x0D48,
0x0C89,
0x0BD5,
0x0B2B,
0x0A8A,
0x09F3,
0x0964,
0x08DD,
0x085E,
0x07E6
}
フォーマットは次の通りです。
#MB:PITCH_SCALE ps=定義番号 {
type=divrate_octavelast,
master_clock=[],
prescale=[],
divrate_mask=[],
divrate_offset=[],
start_key=[],
|
KEY00, KEY01, KEY02, KEY03, KEY04, KEY05,
KEY06, KEY07, KEY08, KEY09, KEY10, KEY11,
}
(KEY00〜KEY11群の直前で、| 記号で区切ること)
master_clock:PSG分周比計算のもとになるマスタークロックを指定します。小数以下の指定も受け付けます。例えば、3993600.0 などになります。
prescale:PSG分周比計算のもとになるプリスケール値を指定します。小数以下の指定も受け付けます。
これはマスタークロックへのプリスケール値になるため、PSGのプリスケーラーそのものではなく、8倍済みの、例えば 32.0 などになります。
divrate_mask:PSG分周比による周波数計算を行う場合に有効なビット幅を決定する、AND演算に使用するマスク値を整数で指定します。10進数でも指定できますが、接頭辞「0x」をつけて16進数で記述することもできます。
PSGでは通常、分周比は12ビットですので、0x0FFFのように指定します。
DCSGでは通常10ビットですので、0x03FFのように指定します。
divrate_offset:PSG分周比に対する加算値(オフセット)を整数で指定します。通常は0を指定します。MSX-SCC など、オフセットが必要な場合などに利用します。
start_key:KEY00〜KEY11にて指定する PSG分周比 について、KEY00 の PSG分周比が、どの音程番号に相当するかを指定します。
設定範囲は 0 〜 108 です。
0 の時、オクターブ0の c の分周比が定義されていると解釈します。1増えるごとに半音上がります。通常は 0 を利用します。
KEY00〜KEY11:KEY00: start_key + 0半音のPSG分周比
KEY01: start_key + 1半音のPSG分周比
KEY02: start_key + 2半音のPSG分周比
KEY03: start_key + 3半音のPSG分周比
KEY04: start_key + 4半音のPSG分周比
KEY05: start_key + 5半音のPSG分周比
KEY06: start_key + 6半音のPSG分周比
KEY07: start_key + 7半音のPSG分周比
KEY08: start_key + 8半音のPSG分周比
KEY09: start_key + 9半音のPSG分周比
KEY10: start_key + 10半音のPSG分周比
KEY11: start_key + 11半音のPSG分周比
KEY00〜KEY11の各PSG分周比は整数31ビット以下で指定します。ただし、0は使用できません。KEY00から順に、数値は小さくなるように設定する必要があります。0x」をつけて16進数で記述することもできます。fTONE = fm/(fp*(Tp+ofs))