ページ 11

DirectSoundの音量調節について

Posted: 2011年5月05日(木) 23:47
by Suikaba
どうも。よろしくお願いします。
directsoundで音量調節したいのですが、(ちなみにIDirectSoundBuffer8::SetVolumeでやっています
うまくできません。
コードは次のとおりです

http://ideone.com/ZriyF

DSBufferDescのdwFlagにDSBCAPS_CTRLVOLUMEとしているので、大丈夫かなとおもったのですが
うまく反映されていませんでした。
位置とかも変えて見たのですが、うまくいきませんでした。

よろしければ、ヒントなどでもかまわないので教えていただけると幸いです。

Re: DirectSoundの音量調節について

Posted: 2011年5月06日(金) 18:16
by ISLe
試してみたところ音量調節は機能していました。
ボリューム値が問題のようです。
-5000あたりでかすかに聞こえる程度でしたので-3000とかで試してみてください。

Re: DirectSoundの音量調節について

Posted: 2011年5月06日(金) 21:17
by Suikaba
>> ISLeさん

本当ですか!?ちょっと確認してみます。

Re: DirectSoundの音量調節について

Posted: 2011年5月06日(金) 21:28
by Suikaba
試したところ、だめでした。-3000に設定しました。
なんででしょう・・・

ちなみに、環境は
Visual C++ 2008
DirectX9.0c
windows XP
です。

Re: DirectSoundの音量調節について

Posted: 2011年5月07日(土) 18:39
by ISLe
機能していたのはWin7 (x64)とRealtek HD Audioの環境でした。

XPで試してみました。音量変化しませんね。
DirectXランタイムも最新版に更新しているのですが。
サンプルが少ないので仕様なのか不具合なのかも今のところ分からないです。すみません。

プライマリバッファのボリューム設定はできると思う(未確認)のですが、セカンダリバッファで個別にボリューム設定したいのですよね。

Re: DirectSoundの音量調節について

Posted: 2011年5月07日(土) 22:14
by ISLe
調べました。
アプリケーションがアクティブなときじゃないとSetVolumeメソッドが効かないようです。
ウインドウをクリックしたときに処理するようにしたらXPでも機能しました。

WM_ACTIVATE,WM_ACTIVATEAPP,WM_SETFOCUSのメッセージを受け取ったとき即座にボリューム設定するようにしても機能しませんでした。
DirectSound内部のプライマリバッファのリセット処理などで、アプリケーションウインドウがアクティブになるのと若干のタイムラグがあるようです。

Re: DirectSoundの音量調節について

Posted: 2011年5月07日(土) 22:43
by Suikaba
なるほど・・・そうだったんですか。ありがとうございます。
一応、ISLeさんのおかげでどうにかなりそうですので、解決とさせていただきます。
本当にありがとうございました。

Re: DirectSoundの音量調節について

Posted: 2011年5月07日(土) 22:49
by Suikaba
解決つけわすれてました。すいません(これで何回目だろう・・・orz