データの無駄を省く工夫

公開:2010-12-22 06:25
更新:2020-02-15 04:36
カテゴリ:windows,sted2,c++,audio

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ビットでいいよね、ステップタイムは。。