思考錯誤しているものです。
DLLに渡す構造体についての質問です。
DLLのリバーブをかける関数に次のような構造体へのポインタを渡したいと思っています。
構造体のメンバは全部で27個、int, float, float [] のいずれかなので
typedef struct { int Instance; int Environment; float EnvSize; float EnvDiffusion; int Room; int RoomHF; int RoomLF; float DecayTime; float DecayHFRatio; float DecayLFRatio; int Reflections; float ReflectionsDelay; float ReflectionsPan[3]; (以下略)
HSPでは次のように書いてみました。
tofloat()はhttp://sprocket.babyblue.jp/html/hsp_koneta3.htm#tofloatを使っています。
関数にはvarptr(myEffect)で渡してみたところ、DLLからの戻り値は正常終了です。
dim zero, 3 : zero = tofloat(0.0f), tofloat(0.0f), tofloat(0.0f) dim myEffect, 27 myEffect(0) = 0, 3, tofloat(1.4f), tofloat(1.00f), -1000 myEffect(5) = -1200, 0, tofloat(1.49f), tofloat(0.54f), tofloat(1.0f) myEffect(10) = -370, tofloat(0.007f), varptr(zero), 1030, tofloat(0.011f) (以下略)
が、実際にCでこの関数を使ってみたときとは違って、HSPから渡すと雑音が混じる感じです。
何かがおかしいのですが私にはそれがわかりません。
どなたか何かお気づきの点はありませんか?
完全なソースは下記にアップしています。
http://cid-907bc41f33448098.skydrive.live.com/self.aspx/.Public/fmod-test.zip
長文失礼しました。