使用Java Sound (javax.sound.sampled)控制剪辑的音量

5

我正在使用Java音频库的Clip.start()方法播放多个音频样本。

在此情况下,最好的控制播放音量的方式是什么?

特别地,我非常希望解决方案可以在各种平台上可靠地工作。

2个回答

12
FloatControl volume = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue(gainAmount);

只需用代表增益(以分贝为单位)的浮点数替换gainAmount即可。可以是正数也可以是负数。


负值代表什么?o.O - T_01
5
@T_01中的-3表示比原来少了2倍,-6表示少了4倍,-10表示少了10倍等(对数刻度)。详见维基百科。 - Demurgos

0
将该金额添加到您的总量中:
FloatControl volume = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue(volume.getValue()+gainAmount)

将音量设置为从-80.0到6.0206的特定数值。
FloatControl volume = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue(gainAmount);

1
目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

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