V3MMLmanual

2.14.5 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

KEY00start_key + 0半音のPSG分周比
KEY01start_key + 1半音のPSG分周比
KEY02start_key + 2半音のPSG分周比
KEY03start_key + 3半音のPSG分周比
KEY04start_key + 4半音のPSG分周比
KEY05start_key + 5半音のPSG分周比
KEY06start_key + 6半音のPSG分周比
KEY07start_key + 7半音のPSG分周比
KEY08start_key + 8半音のPSG分周比
KEY09start_key + 9半音のPSG分周比
KEY10start_key + 10半音のPSG分周比
KEY11start_key + 11半音のPSG分周比


【備考】周波数計算は次の要領で行われます。

fTONE = fm/(fp*(Tp+ofs))