すべてのSLABを使う人たちのために

今日の目標は聴覚ソフトウェアのSLABを地下のバーチャルスタジオのプログラムに統合すること。

地下のマシンを立ち上げて、4階の研究室からリモートログインで作業。


わけあってVisual Studio2003でのプログラムを余儀なくされ、
かつDドライブに乗っけるというはめになり、

今まで動いていた設定ではうまく動かないというまさかの展開。




まずはとりあえず前回同様ASIO SDKをSLABのディレクトリにおいて、パスを通す。
ここまではいつもどおり。

NASA -- SLAB.v5.8.1
      -- apps -- asio

で、本来ならこれで通るはず、、、
だったんだけど、なぜかコンパイルエラーが山のように出る。
エラーによると、dsound系のファイルでセミコロンが云々とのこと。


途方に暮れていたところ、F助教授のおかげで、PCが古いせいで古いほうのDirect Xのライブラリを読みに行っていたらしいことが判明。

で、そこはインクルードファイルの設定を変えて解決。
ようやくコンパイルが通ったー、って思ってたら、今度は実行でのエラー。


constructor, HRTF not found in registry 云々。


む、今度は頭部伝達関数のファイルが取得できてないとのこと。



これにはさすがにお手上げで、
とりあえずブレークポイントを仕込みまくってどこで消えてるのかなーって思ったら、一番最初のコンストラクタのところですでに呼ばれていないという悲劇。

もう意味が不明すぎて半ばお手上げ状態でしたが、
ドクターの人が見て一言、
「あぁ、これReleaseモードになってるから。Debugモードにしないと。」

Releaseモードなら最適化云々の関係でうまくコンストラクタが呼ばれてなかったらしい。

あぁ、なんてつまらないところで、と思って、それを直したら、とりあえず無事にコンストラクタは呼ばれることに。



よかったよかった、と思っていたのに、バグは結局治っていない。


やっぱりデフォルトの頭部伝達関数を読みに行くところのパスがおかしいのかなーって、もう一度さきのドクターの人に聞いてみたら、
おもむろにregedit.exeを実行して、レジストリエディタを開き、
「あぁ、ここでインストール失敗してる」

うまくいっているほうのノートPCのほうのレジストリエディタと比べてみたら、SLAB関連のものがごっそり抜けおちていることが発覚。

結局ノートPCからコピーしてきて、
かつそのパスをDドライブに書き換えて、ようやく解決。


あとはリモートではDirect X系列の動作がうまくいかないので、
地下にもぐって走らせてみて、

成功!


なんかもう何度も諦めかけましたが、
ドクターのおかげでなんとかうまくいけて一安心。


まぁ、結局ミーティングの資料はまったくできてないんですけど。



とりあえず、日本に何人いるかわからないSLABを使う人の中でも、
さらにレアなケースのバグについてメモってみました。