固定小数点演算はどうか

公開:2011-11-09 20:33
更新:2017-09-18 05:24
カテゴリ:wasapi,c++,dawもどきの作成,windows,audio,windows api

理屈も正確に把握していないのに何だが、サンプルレート変換(リサンプル)は重い処理のようである。リアルタイムで処理することは今時のCPUでは問題ないようだ。それでも10~20%位はCPU負荷をかけるようだ。まあそれくらいならいいかもしれないけれど。Secret Rabbit Codeがリサンプルのクォリティを選べるようになっていることからも、処理の重さが裏付けられる。

私はSecret Rabbit Codeを利用しようとしているけれど、このコードでは処理はfloatで行われる。なのでWAVファイルデータを一旦floatに変換してリサンプルし、更にfloatを整数値に変換してWASAPIに渡さなくてはいけない。なんかこのfloat<-->整数の変換が冗長で変換誤差を生みそうな処理のように思う。

64bit環境限定で作っているのだから整数部32ビット、小数部32bitの固定小数点で行えばどうだろうか。これだけビット数があれば小数部は「0.00000000023283064365386962890625」の精度となる。十分ではないだろうか。でも固定小数点にすると数学関数は全部作り直しになるし、Secret Rabbit Codeの利用はできなくなるな。これは面倒だ。そのかわり整数部はサンプルデータをそのまま扱えるので変換誤差は低く抑えられそうな気がする。