2007年3月21日水曜日

C#版WAVEファイル読み出しライブラリ作成

そろそろ研究用のプログラムを作っていかないとまずいという事実に気がついてしまったため、固定小数ライブラリはひとまず置いておくことに。
昨日のポストで「符号部1bit、整数部11bit、小数部12bit」を目指す、としていたんですが、これは大きな勘違いでした。少なくとも、今の実装(32bit整数型を小数として扱う)では乗算でほぼ間違いなくオーバーフローしちゃいますね・・・。これじゃ誤差どころの話じゃなくなっちゃう;;
乗算でもそれなりの精度を保持したいなら、整数部と小数部で別々に計算して加算し、外向きには固定小数に見せかけるとかの方法がありますが・・・、また内部ロジックを考え直さないと行けないので後回しですね。
つーわけで今日は以前C++で作成したWAVEファイル読みだしライブラリをC#へ移植しました。
の、つもりでしたが、全面的に書き換えちゃいました(てへっ
まぁANSI C++ってのと.NETのC#ってのではバイナリファイルの扱い方とかに差が出ますからねぇ。ANSIにない便利機能は使っていきたいところですし。 C++版にも逆移植はするつもりですが。
とりあえず読み出しは完成したので明日以降はいよいよロジック部分ですね。とりあえずは畳み込みかな。これをもっとスマートに書きたいんだよなぁ・・・。実機移植を考えないなら間違いなくサイクルバッファを実装するんだけど・・・、昔実装したものをもう一度見て書き直すか。あの頃に比べたらC#もだいぶ分かってきたし。
ま、サイクルバッファだろうと見た目ただの配列として使えた方がいいからなぁ。プロパティは必須か。探せばありそうではあるけれど、軽く探して見つからなかったら己で実装かな。教授の春巡業が終わるまでにシミュレータは完成させたいのぅ。