2

私たちのソフトウェアは音を再生する必要があります(小さなノイズだけでなく、音声など)。ボリュームコントロールはどうだろうか。Windows Vistaスタイルガイドラインでは、Windowsミキサーでアプリケーション固有のボリュームコントロールを定義するように指示されています。

しかし、Windows XP以下はどうですか?Windowsミキサーにコントロールを取り込む方法はないと思います。ただし、独自のボリュームコントロールを実装することはできますが、オーディオデータを変更しないと、システム全体のボリュームよりも大きくなることはありません(非常に小さいか、ミュートになっている可能性があります)。

問題は、アプリケーションが独自のボリュームコントロールを使用するか、Windowsボリュームコントロールをトリガーするかです。

問題は、基本的なユーザーがWindowsでボリュームを設定する場所さえ知らないということです。

4

3 に答える 3

4

ほとんどのオーディオ レンダリング フレームワーク (使用するフレームワークについては言及しません) では、オーディオ レンダリング フレームワークからシステム オーディオ エンジンに渡されるストリームのオーディオをユーザーが制御できます。たとえば、DirectSound には、そのサウンド バッファーの音量を設定できる IDirectSoundBuffer メソッドがあります。

アプリケーションごとのボリューム コントロール (システム ミキサーを介して公開されているかどうかに関係なく) は、アプリケーションがマスター ボリュームを制御するよりも、顧客にとって劇的に優れたエクスペリエンスです。多くのマシン (最新のラップトップなど) は、ハードウェアのボリューム コントロールを提供せず、ユーザーがマスター ボリュームを快適なレベル (非常にユーザー固有の値) に設定することに依存しています。アプリケーションがマスター ボリュームを操作すると、ユーザーの選択が上書きされ、動揺する可能性があります。

はっきりさせておきますが、MusiGenesis の選択にも問題はありません。彼のアプリケーションの特殊な例では、その選択は理にかなっています。MusiGenesis の例に似たもう 1 つの例は、MIDI レンダリング アプリケーションです。アプリケーションがハードウェア MIDI (ボリューム コントロールなし) を介してレンダリングすることもあれば、ソフトウェア MIDI (ボリューム コントロールあり) を介してレンダリングすることもある場合、混乱を避けるためにボリューム コントロールをユーザーに公開しない方がよい場合があります。

于 2009-09-19T03:00:51.277 に答える
3

私のアプリケーション (ソフトウェア シンセサイザー/作曲ツール) では、実際にはシステム ボリュームに触れたり、独自のアプリケーションにボリューム コントロールを提供したりしません。私のすべてのオーディオ出力は、最大可能レベルの約 95% に正規化されており、その時点から、ユーザーは Windows ボリューム コントロールまたはスピーカーのボリューム コントロールのいずれかを使用して出力ボリュームを制御できます。

私の意見では、これがこのような Windows オーディオ アプリケーションの動作方法です通常、ソフトウェア シンセサイザーが使用される場合、オーディオ出力を生成する唯一のアプリケーションであり、ユーザーは既に 2 つの方法でボリュームを制御できます (Windows コントロールとスピーカー)。つまみ)。

あなたのようなアプリケーションの場合、他のアプリケーションもノイズを発生させる可能性がある環境でサウンドを再生することを意図していますが、アプリケーションは、システムの音量に影響を与えずに、独自の音量を下げる方法のみを提供する必要があると思います。ほとんどの Windows ユーザーは、システム ボリューム コントロール (右下のツールボックス) がどこにあるかを既に知っているため、このコントロールを独自のアプリケーションにも追加する必要はありません。

于 2009-09-18T17:34:45.377 に答える
2

私たちのアプリケーションは音声も出力する必要があり、同時に実行されている可能性のある他のアプリケーションとは異なる音量設定も必要です。ユーザーがアプリケーション内から変更できる音量コントロールがあります。

そのため、Windows 2000/XP では、アプリケーションがフォーカスを得たときにシステム ボリュームを変更し、フォーカスを失ったときやアプリケーションがシャットダウンしたときに以前の設定に戻します。これはうまく機能し、同時に実行されている他のオーディオベースのアプリケーション (たとえば、録音ボリュームに非常に敏感な音声認識ソフトウェアなど) の動作を妨げないようです。

これは、Vista および Windows 7 とまったく同じ動作ですが、アプリケーションごとに個別の音量レベルを維持する作業を行う点が異なります (この場合、前述のコードを無効にします)。

于 2009-09-18T14:18:46.800 に答える