トップページ > 記事閲覧
DuplicateSoundMemのエラー
名前:MSK 日時: 2019/03/02 19:49

PlaySoundFileでは再生できるのに LoadSoundMemで読み込むと -1 が返ってくるWAVファイルがあります。(数十kB、1秒程度の効果音、無圧縮WAV) 調べると LoadSoundMem("xxxxx.wav"); つまりデフォルトのバッファ数 = 3で読み込むと -1 が返ります。 LoadSoundMem("xxxxx.wav", 1); にするとハンドルを取得でき、音も鳴るのですが、 このハンドルをDuplicateSoundMemすると -1 が返ります。 なお、DxLibのソースで DxSoundWin.cpp ---> SoundBuffer_Lock_PF() の if( Buffer->PF.DSBuffer->Lock( WritePos, WriteSize, LockPos1, LockSize1, LockPos2, LockSize2, 0 ) != D_DS_OK ) を if( Buffer->PF.DSBuffer->Lock( WritePos, WriteSize, LockPos1, LockSize1, LockPos2, LockSize2, 2 ) != D_DS_OK ) つまり 0 ---> DSBLOCK_ENTIREBUFFER にすればバッファ数 = 3でも読み込め、DuplicateSoundMemも使用できましたが、 (1 ... DSBLOCK_FROMWRITECURSOR ではエラー)
メンテ

Page: 1 |

Re: DuplicateSoundMemのエラー ( No.1 )
名前:管理人 日時:2019/03/03 15:40

メールを拝見しました 恐らくですが、wavファイルの情報で正しくない箇所があったのが原因だと思います 2チャンネル 16ビット の PCM の場合は波形のデータサイズは必ず 4で割り切れる 値となるはずなのですが、件の wav ファイルは 4で割ると2余るサイズとなっていました 正しくないと思われるサイズだった場合補正するように( 今回の場合は 4 で割り切れる 値に補正するように )したところエラーが発生しなくなりましたので、よろしければ その変更を加えたこちらのバージョンをお試しになってみてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.zip // Android版 ARM用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM64.zip // Android版 ARM64用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.zip // Android版 x86用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x64.zip // Android版 x64用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: DuplicateSoundMemのエラー ( No.2 )
名前:MSK(解決) 日時:2019/03/03 17:26

ご対応ありがとうございます。 無事、元の音も複製のどちらも音が鳴ることを確認しました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存