どうも。よろしくお願いします。
directsoundで音量調節したいのですが、(ちなみにIDirectSoundBuffer8::SetVolumeでやっています
うまくできません。
コードは次のとおりです
http://ideone.com/ZriyF
DSBufferDescのdwFlagにDSBCAPS_CTRLVOLUMEとしているので、大丈夫かなとおもったのですが
うまく反映されていませんでした。
位置とかも変えて見たのですが、うまくいきませんでした。
よろしければ、ヒントなどでもかまわないので教えていただけると幸いです。
DirectSoundの音量調節について
Re: DirectSoundの音量調節について
試してみたところ音量調節は機能していました。
ボリューム値が問題のようです。
-5000あたりでかすかに聞こえる程度でしたので-3000とかで試してみてください。
ボリューム値が問題のようです。
-5000あたりでかすかに聞こえる程度でしたので-3000とかで試してみてください。
Re: DirectSoundの音量調節について
試したところ、だめでした。-3000に設定しました。
なんででしょう・・・
ちなみに、環境は
Visual C++ 2008
DirectX9.0c
windows XP
です。
なんででしょう・・・
ちなみに、環境は
Visual C++ 2008
DirectX9.0c
windows XP
です。
Re: DirectSoundの音量調節について
機能していたのはWin7 (x64)とRealtek HD Audioの環境でした。
XPで試してみました。音量変化しませんね。
DirectXランタイムも最新版に更新しているのですが。
サンプルが少ないので仕様なのか不具合なのかも今のところ分からないです。すみません。
プライマリバッファのボリューム設定はできると思う(未確認)のですが、セカンダリバッファで個別にボリューム設定したいのですよね。
XPで試してみました。音量変化しませんね。
DirectXランタイムも最新版に更新しているのですが。
サンプルが少ないので仕様なのか不具合なのかも今のところ分からないです。すみません。
プライマリバッファのボリューム設定はできると思う(未確認)のですが、セカンダリバッファで個別にボリューム設定したいのですよね。
Re: DirectSoundの音量調節について
調べました。
アプリケーションがアクティブなときじゃないとSetVolumeメソッドが効かないようです。
ウインドウをクリックしたときに処理するようにしたらXPでも機能しました。
WM_ACTIVATE,WM_ACTIVATEAPP,WM_SETFOCUSのメッセージを受け取ったとき即座にボリューム設定するようにしても機能しませんでした。
DirectSound内部のプライマリバッファのリセット処理などで、アプリケーションウインドウがアクティブになるのと若干のタイムラグがあるようです。
アプリケーションがアクティブなときじゃないとSetVolumeメソッドが効かないようです。
ウインドウをクリックしたときに処理するようにしたらXPでも機能しました。
WM_ACTIVATE,WM_ACTIVATEAPP,WM_SETFOCUSのメッセージを受け取ったとき即座にボリューム設定するようにしても機能しませんでした。
DirectSound内部のプライマリバッファのリセット処理などで、アプリケーションウインドウがアクティブになるのと若干のタイムラグがあるようです。
Re: DirectSoundの音量調節について
なるほど・・・そうだったんですか。ありがとうございます。
一応、ISLeさんのおかげでどうにかなりそうですので、解決とさせていただきます。
本当にありがとうございました。
一応、ISLeさんのおかげでどうにかなりそうですので、解決とさせていただきます。
本当にありがとうございました。