トップページ > 記事閲覧
効果音の再生について
名前:チップ 日時: 2017/02/02 10:09

すみません。サウンドの重複呼び出し処理について教えてください。 int PlaySoundMem( int SoundHandle , int PlayType , int TopPositionFlag ) ; で効果音をコールして、その音が鳴り終わらないうちに何度も同じSoundHandleの効果音をコールすると 前回のSoundHandleで鳴っていた音がリセットされてしまうのですが(最後に呼んだ一音分しか鳴らない)これの回避方法を教えてください。 連続で同じ音を重ねて呼びたい場合もあるかと思うのですがこういう場合はどう対処したらよいのでしょうか? まさかSoundHandle番号を変えるためだけにメモリに同じデータをいくつもダブらせて置いておくわけにもいかず、どうしたものかと困っています。 よろしくお願い致します。
メンテ

Page: 1 |

Re: 効果音の再生について ( No.1 )
名前:チップ 日時:2017/02/02 10:19

できれば PlaySoundMem にSoundHandle番号とは別の個別引数が追加された関数があって 同じSoundHandle番号でコールされてもそちらの番号が重複していない場合は新しい音が前回コールされたSoundHandle番号の音と 平行してコールされるようになっていたりすると大変ありがたいのですが・・・。 というか皆さんはどう解決しているのでしょうか? 攻撃音やダメージ音、環境音など同じ音を重ねて鳴らしたいケースは多いと思うのですが。
メンテ
Re: 効果音の再生について ( No.2 )
名前:管理人 日時:2017/02/03 00:43

> 連続で同じ音を重ねて呼びたい場合もあるかと思うのですがこういう場合はどう対処したらよいのでしょうか? LoadSoundMem で読み込んだサウンドハンドルは、デフォルトの状態でも 3音まで重ねて再生されるようになっています ただ、LoadSoundMem の前に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ); などを実行してストリーミング再生をする サウンドハンドルとなっていた場合は重ねて再生されませんので、重ねて再生したい効果音用のサウンドファイルを読み込む際は LoadSoundMem の前に SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMNOPRESS ); を実行してストリーミング再生ではない 普通の再生を行うサウンドハンドルとして読み込むようにしてみてください 因みに重ねて再生される数を 3音以上にしたい場合は LoadSoundMem の第二引数に重ねて再生したい数を渡してください( 現時点では最大数は 8 です ) // 6音まで重ねて再生されるようにして読み込む int SoundHandle = LoadSoundMem( "TestSound.wav", 6 ) ; よろしければお試しください m(_ _)m
メンテ
Re: 効果音の再生について ( No.3 )
名前:チップ 日時:2017/02/03 21:11

ご教授ありがとうございます。 LoadSoundMemByMemImage を使用する場合は第三引数に重ねたい再生数を渡すという認識でよろしいでしょうか?
メンテ
Re: 効果音の再生について ( No.4 )
名前:チップ 日時:2017/02/03 21:25

すみません。どうもそもそものデフォルト状態で LoadSoundMemを使用した場合はたしかに3音重なって音が鳴るのですが、 LoadSoundMemByMemImageを使用した場合は重複で同じハンドル番号の音が鳴らずに新しいコールで前の音が消されてしまうようです。 何か心当たりはございますでしょうか? LoadSoundMemByMemImageを使っていた箇所をそのままLoadSoundMemに変えたら不具合はなくなったので関数内部の処理が原因ではないかなと。
メンテ
Re: 効果音の再生について ( No.5 )
名前:管理人 日時:2017/02/05 13:04

> LoadSoundMemByMemImage を使用する場合は第三引数に重ねたい再生数を渡すという認識でよろしいでしょうか? いえ、LoadSoundMemByMemImage の第三引数は重複再生の数ではありません ( LoadSoundMemByMemImage に重複再生の数を指定するための引数はありません ) LoadSoundMemByMemImage では重複再生の数が 1 で固定となっていましたので、 LoadSoundMemByMemImage の第三引数も重複再生の数を指定するためのものに変更しました ( 元々あった第三引数はライブラリ内部の処理でしか使用されないようなものだったので… ) こちらに変更したバージョンをアップしましたので、よろしければお試しください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい)
メンテ
Re: 効果音の再生について ( No.6 )
名前:チップ(解決) 日時:2017/02/05 14:33

迅速なご対応ありがとうございます! 本当に助かりました!
メンテ

Page: 1 |

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

   クッキー保存