STed2のRCPファイル部分のソースコードを電車の中で眺めていて気づいたのは、昔のPCはメモリ容量が少なかったのでデータ節約のための工夫をしているということ。
例えばステップタイム。私だと32ビットで、、、とか考えるけど、RCPでは8ビットしかない。例えば4/4拍子でタイムベースが96だったら96×4=384で全音符が表現できないじゃないかと一瞬思うのだが、RCPではこれを分割して表現する。ノートイベント2つ、つまり2バイトで(255と129)で表すのだ。全音符はそうそう出てこないので大抵の音符は1バイトで済む。もしステップタイムを32ビットにすると大抵の音符の3バイト分が余ってしまうのだ。
そのかわり1つの音符を2つ以上のイベントで表したりするので処理が多少ややこしくなる。表示データとメモリに格納されるデータの間で変換をしなくてはならないからだ。
ゲートタイムも同じような形式をとっている。昔の制約あるPCでできるかぎり多くデータを持たせるための工夫を見て少し感動したのであった。
まあでも64bitの現代では32ビットでいいよね、ステップタイムは。。