DuplicateSoundMem関数で読み込んだハンドルを再生できない音声があるようです。
その条件を調べてみました。
リファレンスのDuplicateSoundMem関数に載っているサンプルコードを以下のように、複製?されたサウンドハンドルのほうのみを再生するように変え、さらにこちらで用意した"test.wav"の音声の長さのみを変えていたら、
どうやら、だいたい3分以下の音声は再生でき、それ以上の長さの音声は再生されないという結果になりました。ちなみにフォーマットは22050Hz,8bit,モノラルの音声です。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
int SHandle, DupSHandle ;
if( DxLib_Init() == -1 ) return -1;
SHandle = LoadSoundMem( "test.wav" ) ;
DupSHandle = DuplicateSoundMem( SHandle ) ;
//PlaySoundMem( SHandle , DX_PLAYTYPE_NORMAL ) ;
PlaySoundMem( DupSHandle , DX_PLAYTYPE_BACK ) ;
WaitKey();
DxLib_End() ;
return 0 ;
}
リファレンスを読んだ感じでは、長い音声は扱えないという記述は見当たりませんでした。
これは、もともと仕様なのでしょうか?それとも私のPC環境が特殊なのでしょうか?
それから蛇足ですが、DuplicateSoundMem関数のリファレンスの戻り値が
0:成功 −1:エラー発生
と書いてありますが、これはLoadSoundMem関数と同じで
−1:エラー −1以外:サウンドハンドル
ではないでしょうか?