控制Windows音量

问题描述 投票:2回答:3

我们的软件应该播放声音(不只是小噪音,而是声音等)。我想知道音量控制怎么样。 Windows Vista样式指南说明了在Windows混音器中定义特定于应用程序的音量控件。

但是Windows XP及以下版本呢?我认为没有办法让我们控制Windows混音器。但是你可以实现自己的音量控制,但是如果你不修改音频数据,它就不会比系统范围的音量(可能非常低甚至是静音)响亮。

问题是:应用程序是否应使用自己的音量控制或触发Windows音量控制?

问题是,基本用户甚至不知道在Windows中设置卷的位置。

windows audio volume audio-player
3个回答
4
投票

大多数音频渲染框架(您没有提到您使用的那个)允许用户控制从音频渲染框架传递到系统音频引擎的流的音频。例如,DirectSound有一个方法IDirectSoundBuffer,允许您设置该声音缓冲区的音量。

每个应用程序的音量控制(无论是否通过系统调音台曝光)对于客户来说都是比控制主音量的应用程序更好的体验。许多机器(例如,大多数当前的笔记本电脑)不提供硬件音量控制,并且依赖于用户将主音量设置为舒适的级别(这是高度用户特定的值)。如果您的应用程序操纵主卷,那么您将覆盖用户选择,并且他们可能会感到不安。

顺便说一句,要明确:我对MusiGenesis的选择也没有任何问题。对于他的应用程序的专业示例,这种选择是有道理的。 MusiGenesis的另一个类似例子是MIDI渲染应用程序。如果应用程序有时通过硬件MIDI(没有音量控制)并且有时通过软件MIDI(具有音量控制)进行渲染,则可能有意义的是不将音量控制暴露给用户以避免混淆。


3
投票

在我的应用程序(软件合成器/音乐合成工具)中,我实际上不接触系统音量,甚至不为我自己的应用程序提供音量控制。我的所有音频输出都被标准化为最大可能级别的大约95%,从那时起,用户可以通过Windows音量控制或扬声器上的音量控制来控制输出音量。

在我看来,这就是像这样的Windows音频应用程序应该如何运作,因为通常在使用软件合成器时它是唯一产生音频输出的应用程序,并且用户已经有另外两种控制音量的方法(Windows控件和扬声器)旋钮)。

对于像你这样的应用程序,它意味着在其他应用程序也可能产生噪音的环境中播放声音,我认为你的应用程序应该只提供一种降低自身音量的方法,而不会影响系统音量。大多数Windows用户已经知道系统音量控制的位置(右下角的工具箱),因此将此控件添加到您自己的应用程序中也是多余的。


2
投票

我们的应用程序也需要输出语音,并且相对于可能同时运行的其他应用程序也具有不同的音量设置。我们有一个用户可以在应用程序中更改的音量控制。

因此,在Windows 2000 / XP中,我们会在应用程序获得焦点时修改系统卷,并在失去焦点或应用程序关闭时将其设置回先前的设置。这确实很有效,并且似乎不会干扰同时运行的其他基于音频的应用程序的工作(例如对记录音量非常敏感的语音识别软件)。

这与Vista和Windows 7的行为完全相同,只是它们为每个应用程序执行维护单个卷级别的工作(在这种情况下,我们禁用了前面提到的代码)。

© www.soinside.com 2019 - 2024. All rights reserved.