データの構造
コナミドライバの興味深かった点はデータの形式が大きく分けて3種類あったことでした。
- 音名音長形式
-
一番MMLに近いデータ形式です。
音名で周波数を指定でき、ビブラートやエンベロープなどを組み合わせて掛けることができます。
一方で中途半端な周波数などは指定困難でハードウェアエンベロープも使用できません。
- 直接指定形式
-
音量と周波数を直接指定します。SEに向いたデータ形式です。
音長で長さを制御するというより、クロック値で長さを制御します。
- 音長指定直接変化形式
-
音名音長形式で直接指定形式をくるんだような形式です。
長さは音名音長形式を使い、ビブラートやエンベロープのような規定の変化ではなくSEのような自由な音の変化にしたい場合の形式です。
PSGドラム用途が主になっています(一部SCCもあり)。
規定のデータがテーブルに組み込まれていてそれを選択する形です。
この3種類のデータは音符などの、発音を伴うデータとなります。
これとは別に、オクターブを指定したり音量を指定したりというような操作を行う、コマンドデータがあります。
こういったデータは、データのサイズと処理速度が相反することが多いです。
処理速度を上げたい場合、データが大きくなりがちですし、データサイズを小さくすると処理に時間が掛かったりします。
コナミのドライバはデータサイズ優先になっているように感じました。
圧縮など特殊な処理は無いようですが、データ構造だけで上手くサイズが小さくなるように考えられています。