トップページ > 記事閲覧
音のループ再生の停止について
名前:焼き鯖 日時: 2022/06/10 14:15

ご無沙汰しております 音のループ再生で停止する際に、現状だとStopSoundMem関数で即時止めることしかできないと認識しているのですが、その回を最後まで再生してから止めることはできないのでしょうか?
メンテ

Page: 1 |

Re: 音のループ再生の停止について ( No.1 )
名前:管理人 日時:2022/06/12 08:50

はい、現状ではその回を最後まで再生してから止めるという機能は無かったので そのような機能を追加してみました よろしければ機能を追加したこちらのバージョンをダウンロードしてください 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.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) StopSoundMem に第二引数を追加しました // サウンドハンドルの再生を停止する // IsNextLoopEnd を TRUE にすると次回のループ終了のタイミングで音を止める( ストリーム再生サウンドの場合のみ ) int StopSoundMem( int SoundHandle, int IsNextLoopEnd = FALSE ) ; 引数の意味は注釈の通り、TRUE にするとループの最後まで再生してから止めることができます よろしければお試しください m(_ _)m
メンテ
Re: 音のループ再生の停止について ( No.2 )
名前:焼き鯖 日時:2022/06/13 11:00

ごめんなさい、伝え方が悪かったかもです…… 「その回」というのは次回ではなく現在の回のことで、現在のループの終了のタイミングで音を止めたいというものです……(リンク先に現状の説明の画像をあげています) ttps://drive.google.com/file/d/1-ALaPz8MTC7Xz1InNQf5bdFMhdPTTqJv/view?usp=sharing あとこの引数ではストリーム再生サウンドのみ対応とのことですが、それ以外の種類のサウンドでの対応は厳しいでしょうか?
メンテ
Re: 音のループ再生の停止について ( No.3 )
名前:管理人 日時:2022/06/14 02:18

> ごめんなさい、伝え方が悪かったかもです…… > 「その回」というのは次回ではなく現在の回のことで、現在のループの終了のタイミングで音を止めたいというものです……(リンク先に現状の説明の画像をあげています) はい、理解しています わかりにくくてすみません、注釈の説明にある『次回のループ終了のタイミング』というのは、 『今回のループではなく、次のループが終了する時』という意味ではなく 『現時点から次にループ終了の所まで再生した時』なので、焼き鯖さんが意図されたものと同じです > あとこの引数ではストリーム再生サウンドのみ対応とのことですが、それ以外の種類のサウンドでの対応は厳しいでしょうか? ストリーム再生のサウンド以外ですと、ちょっと試してみないと分かりませんが、ループ再生しているサウンドハンドルに対して StopSoundMem( SoundHandle ); PlaySoundMem( SoundHandle, DX_PLAYTYPE_BACK, FALSE ); ↑ こちらを実行するだけで『次のループ終了タイミングで音が止む』が実現できるかもしれません ( 第3引数を FALSE にすることで、音を止めたところから再生が再開されます )
メンテ
Re: 音のループ再生の停止について ( No.4 )
名前:焼き鯖 日時:2022/06/14 12:14

> 『現時点から次にループ終了の所まで再生した時』なので、焼き鯖さんが意図されたものと同じです ということは、あげてくださった関数には実行してから止まるまで想定より1ループ分遅れるバグがあると思われます… > こちらを実行するだけで『次のループ終了タイミングで音が止む』が実現できるかもしれません 試してみましたが、停止時と再開時に音割れ(?)のような現象が起きて、あまり使える手ではなさそうです…
メンテ
Re: 音のループ再生の停止について ( No.5 )
名前:管理人 日時:2022/06/15 01:24

> ということは、あげてくださった関数には実行してから止まるまで想定より1ループ分遅れるバグがあると思われます… すみません、再度手元で確認しても1ループ分遅れることは無かったのですが、一つ失念していたことがありました ストリーム再生サウンドの場合は再生より1/5秒先行してサウンドデータを処理しているため、 ループ地点から1/5秒以上手前で StopSoundMem を使用しないと、サウンドが止まるのが次回のループ終了時になってしまうのでした… つまり『ループする直前(1/5秒前より後)に StopSoundMem を呼んだ場合は音が止まるのは次回のループ終了時になる』 ということなので、ループするタイミングより十分手前のタイミング(1/5秒以上前のタイミング)で StopSoundMem を 呼ぶようにしてください m(_ _;m > 試してみましたが、停止時と再開時に音割れ(?)のような現象が起きて、あまり使える手ではなさそうです… すみません、駄目でしたか… DirectSound や XAudio を使用していない場合のみ、ストリーム再生サウンドではなくても『ループ終了時に音を止める』が できるようにしてみましたので、よろしければお試しください 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.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: 音のループ再生の停止について ( No.6 )
名前:焼き鯖 日時:2022/06/15 12:51

> ループ地点から1/5秒以上手前で StopSoundMem を使用しないと、サウンドが止まるのが次回のループ終了時になってしまうのでした… サウンドを鳴らした直後にStopSoundMemを使っても1ループ分遅れていたのでずっと疑問でしたが、そういうことでしたか… 鳴らしていたサウンドが短かったので別の長めのサウンドにしたところ、確かに正常に動作しました。ありがとうございます! > DirectSound や XAudio を使用していない場合のみ、ストリーム再生サウンドではなくても『ループ終了時に音を止める』ができるようにしてみました 実は使いたい環境がXAudioで3Dサウンドを使用している環境なのですが、厚かましいお願いではありますが、XAudioに対応していただくことは難しいでしょうか? (通常環境ではしっかりと動作しておりました)
メンテ
Re: 音のループ再生の停止について ( No.7 )
名前:管理人 日時:2022/06/16 02:06

ご確認ありがとうございます 正常に機能していたようで何よりです > 実は使いたい環境がXAudioで3Dサウンドを使用している環境なのですが、厚かましいお願いではありますが、XAudioに対応していただくことは難しいでしょうか? なるほど、了解です XAudio でも少しのコードの変更で対応できましたので、よろしければお試しください 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.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: 音のループ再生の停止について ( No.8 )
名前:焼き鯖(解決済み) 日時:2022/06/16 15:44

試したところ正常に動作しました、ありがとうございます!
メンテ

Page: 1 |

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

   クッキー保存