Re: サウンドの再生について ( No.1 ) |
- 名前:管理人 日時:2016/02/15 03:36
はい、仕様です
リファレンスには載っていませんが、LoadSoundMem には『同時に再生できる音の数』を指定する為の
第二引数があって、デフォルトでは 3 となっていますので、3音より多い数を同時に再生すると、
古い音から再生が止まります
なので、例えば 6音まで同時に再生したい場合は
int SoundHandle ;
SoundHandle = LoadSoundMem( "ファイル名", 6 ) ;
というように、第二引数に 6 を渡してみてください
> また、現在は再生の毎にDuplicateSoundMem()で複製してから再生することで対応しているのですが、
> データを共有しているとはいえむやみにハンドルを増やしても問題ないのでしょうか?
問題ありませんが、DuplicateSoundMem で増やしたサウンドハンドルも通常のサウンドハンドルと
同じなので、不要になったら DeleteSoundMem で削除する必要があります
適切に DeleteSoundMem で削除されている限りは何回 DuplicateSoundMem でハンドルを増やしても
問題ありませんが、逆に複製して再生したまま削除しないで放置すると、どんどんサウンドハンドルが
溜まり、何れ DuplicateSoundMem が失敗するようになります
再生が完了するのを待って DeleteSoundMem を呼ぶのが面倒、という場合はこちらの
『再生が終了したら自動的にサウンドハンドルを削除してくれる』機能を使うと便利です
// サウンドハンドルの再生が終了したら自動的にハンドルを削除するかどうかを設定する
int SetPlayFinishDeleteSoundMem( int DeleteFlag, int SoundHandle ) ;
PlaySoundMem で再生を開始した後、この関数を呼んで再生終了後の削除を予約します
PlaySoundMem( SoundHandle, DX_PLAYTYPE_BACK ) ;
SetPlayFinishDeleteSoundMem( TRUE, SoundHandle ) ;
再生する前に SetPlayFinishDeleteSoundMem を呼んでしまうと、再生を開始する前に
サウンドハンドルが削除されてしまう可能性がありますので注意してください
|
Re: サウンドの再生について ( No.2 ) |
- 名前:丈槍由紀 日時:2016/02/16 21:33
返信遅れてすみません
今回はSetPlayFinishDeleteSoundMemで実装することにしました
画像ハンドルなどの認識もすこし取り違えていたようなので、勉強になりました。
これからはちゃんとdelete系の関数を利用しようと思います
しかし、手元で確認した以上、LoadSoundMemのバッファ数を増やす引数がうまく動作しませんでした
(再生中に2つめを再生し始めた時点で1つめの再生が止まり、同時に2つ以上再生されない様)
.NET版をC#で使っています
|
Re: サウンドの再生について ( No.3 ) |
- 名前:管理人 日時:2016/02/21 04:23
> しかし、手元で確認した以上、LoadSoundMemのバッファ数を増やす引数がうまく動作しませんでした
> (再生中に2つめを再生し始めた時点で1つめの再生が止まり、同時に2つ以上再生されない様)
バッファ数を増やしても同時に二つ以上再生されないという音は、
LoadSoundMem で読み込む前に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; などを実行して
ストリーミング再生タイプの音として読み込まれていますでしょうか?
バッファ数の指定によって同時に二つ以上再生できるようにするためには、ストリーミングタイプではない
SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMNOPRESS ) ; で読み込む必要がありますので、
もしそうでしたらストリーミングタイプではない SetCreateSoundDataType( DX_SOUNDDATATYPE_MEMNOPRESS ) ; で
読み込むことでバッファ数の指定通りに同時に二つ以上再生できるようになると思います
因みにストリーミング再生タイプは CPU 負荷が高く、効果音など沢山同時に再生される可能性のある音の
再生には不向きですので、もし効果音をストリーミングタイプで読み込まれていましたら、
非ストリーミングタイプの DX_SOUNDDATATYPE_MEMNOPRESS で読み込むようにしてみてください m(_ _)m
|
Re: サウンドの再生について ( No.4 ) |
- 名前:丈槍由紀 日時:2016/02/21 14:39
>バッファ数を増やしても同時に二つ以上再生されないという音は、
>LoadSoundMem で読み込む前に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; などを実行して
>ストリーミング再生タイプの音として読み込まれていますでしょうか?
特にそのようなことはないですね。。
確認用C#プロジェクトを用意しました
ソースコードや音声ファイル、Log.txtなども同梱してあります
お手数とは思いますが、ダウンロードして確認いただけると幸いです
パスはDxLibです
w×3 .dotup.org/uploda/w×3 .dotup.org748492.zip.html
(w×3を復元してお願いします)
|
Re: サウンドの再生について ( No.5 ) |
- 名前:管理人 日時:2016/02/22 01:42
|
Re: サウンドの再生について ( No.6 ) |
- 名前:丈槍由紀(解決) 日時:2016/02/24 20:10
修正ありがとうございました
無事動作を確認でき、すっきりしました
|