音声の再生に関して質問です。
DX_SOUNDDATATYPE_MEMNOPRESSの状態でLoadSoundMemで読み込んだ音声を、PlaySoundMemで再生するとき、
特定の音だけ、3回に1回、音が鳴りません。
似たような質問が既にあったので、DXライブラリのバージョンを3.06aに上げたのですが、
一時的に改善されたものの、しばらくして再びこの症状に陥りました。
以降、直ったりこの症状に陥ったりを繰り返しています。
なお、開発ソフトやコンパイラは導入していないものの、それ以外の環境が近いパソコンがもう一台あるため、
この症状が発生している時に、コンパイル済みのまったく同じゲームプログラムをそちらにコピーして実行したところ、
この症状はひとまず発生しませんでした。
しかし、開発している方のパソコンから、もう一台のパソコンにコピーしたゲームプログラムを、
LAN越しにプレイしたところ、やはりこの症状が発生しました。
二つのパソコンの環境は両方とも次のとおりです。
WindowsXP Home Edition SP3
DirectX9.0c
また、開発環境はVisual C++ 2008 Express Editionです。
DXライブラリのバージョンは3.06aで、導入後のリビルドもおこなっています。
以下にコードを記載しておきます。
音声ロード部(起動時に一回だけ実行)
SetCreateSoundDataType(DX_SOUNDDATATYPE_MEMNOPRESS);
Sound[0] =LoadSoundMem("dat/se/t_tetrimino.ogg");
Sound[1] =LoadSoundMem("dat/se/j_tetrimino.ogg");
Sound[2] =LoadSoundMem("dat/se/l_tetrimino.ogg");
Sound[3] =LoadSoundMem("dat/se/z_tetrimino.ogg");
Sound[4] =LoadSoundMem("dat/se/s_tetrimino.ogg");
Sound[5] =LoadSoundMem("dat/se/i_tetrimino.ogg");
Sound[6] =LoadSoundMem("dat/se/o_tetrimino.ogg");
Sound[7] =LoadSoundMem("dat/se/lockdown.ogg");
Sound[8] =LoadSoundMem("dat/se/hold.ogg");
〜〜〜〜以下略〜〜〜〜
3回に1回鳴らないのは、このSound[7]の「lockdown.ogg」です。
音声再生部(毎フレーム実行)
void PlaySE(){
int i;
for(i=0;i<50;i++){
if(SeFlag[i]){
PlaySoundMem(Sound[i],DX_PLAYTYPE_BACK);
SeFlag[i]=0;
}
}
}
「lockdown.ogg」を鳴らすとき、SeFlag[7]に1を代入しています。
他の音も同様の方式ですが、他の音は常に正常に鳴ります。
私のミスなのか、あるいはDXライブラリのバグなのか分かりませんが、どうかご教授ご助言をよろしくお願いします。