トップページ > 過去ログ > 記事閲覧
DuplicateSoundMem関数で扱える音声の秒数制限
名前:B/B 日時: 2010/12/27 17:00

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以外:サウンドハンドル ではないでしょうか?

Page: 1 |

Re: DuplicateSoundMem関数で扱える音声の秒数制限 ( No.1 )
名前:いっち 日時:2010/12/29 18:38

おそらく仕様です。 DuplicateSoundMem は DX_SOUNDDATATYPE_MEMNOPRESS の設定で読み込まれたサウンドハンドルしか扱えません。 そして、再生時間が3分を超えるデータは DX_SOUNDDATATYPE_MEMNOPRESS で読み込まれません。 > ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1694 おそらく DupSHandle にはエラーを示す -1 が返ってきているのではないでしょうか。
Re: DuplicateSoundMem関数で扱える音声の秒数制限 ( No.2 )
名前:B/B(解決) 日時:2011/01/01 14:16

いっちさん返信ありがとうございます。 実際に3分異常の音声をDX_SOUNDDATATYPE_MEMNOPRESS で読み込む予定は無かったのですが、 ためしに長いwavファイルを読み込ませたら、再生されなかったので 気になって質問させていただきました。
Re: DuplicateSoundMem関数で扱える音声の秒数制限 ( No.3 )
名前:管理人 日時:2011/01/03 22:02

ご指摘ありがとうございます いっちさんのご返答の通り 3分を超えるサウンドデータは自動的に DX_SOUNDDATATYPE_MEMPRESS に なるので、DuplicateSoundMem の引数として渡すことができません( その旨の注釈を加えておきました ) あと、戻り値の説明も修正しておきました

Page: 1 |