使用Java设置音量

10

你好!

我正在开发一个播放 MIDI 的应用程序。它可以正常播放,但经常会收到类似于“没有声音”的错误报告。答案总是进入音量控制器并打开合成器声音(取消静音)。

我的问题是 - 如何通过软件自动更改它?到目前为止,我只能更改主音量,而我确实找不到如何仅更改“波形”、“SW 合成器”等的方法...

我通常寻找平台无关的解决方案(纯 Java),但仅适用于 Windows(所有类型的 Windows)的解决方案也受欢迎 ;) 先谢谢了!

编辑:看到回答后,我意识到我应该更好地说明我的问题。我附上了一张图片。绿色选中的控件是我已经可以做到的(即像 Cliff 链接的那样),但是我需要在红色控件上进行操作(我情况下最重要的是从左边数第三个合成器音量)。该图像来自 WinXP,但其他操作系统(包括 Linux)也有类似的控件。Java 必须具备这种可能性。 alt text


重复的问题?https://dev59.com/SnNA5IYBdhLWcg3wdtld - Jim Tough
我希望它被复制了;/ 人们知道如何更改主音量,但几乎总是将合成器音量静音 - 正如我编辑的主要问题;/ - parvuselephantus
3个回答

1

我在Ubuntu、Fedora和Windows中查找过,这些操作系统唯一的共同点是主音量和警报(或Windows上的“哔哔声”)音量。这让我相信没有平台无关的方法来做到这一点,也就是说没有标准的Java方法。

话虽如此,对于所有这些操作系统,很可能都有API(可能不同),允许您控制这些更细粒度的设置。如果是这样,几乎肯定需要单独的Java库来与每个平台上的这些API进行交互。

很抱歉我不能为您指明正确的方向,但我希望至少能帮助您排除使用标准化方法执行此功能的可能性。祝你好运!


那是有价值的信息,非常感谢你的工作! - parvuselephantus

0

尝试使用Sysinternal的Process Monitor偷窥调整波形/合成器级别时工具在后台发生的情况,然后让您的Java代码执行相同的本机系统/DLL调用。


0
你是在使用某种接口还是使用系统默认的Mixer?你所说的控制级别是什么?不幸的是,我也在学习这个API,但我的第一个想法是每个都是不同的线路,对吗?你尝试过获取所有系统线路并在每条线路上使用MASTER_GAIN吗?就像上面的人说的那样,我相信有API可以做到这一点,但如果我要为了教育目的或其他目的在自己的代码中执行它,那就是我开始的地方。说到API,有一个控制API可以操作音频数据本身,但据我所知,它不会影响硬件的音量控制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接