我想为Java中的音频文件或至少这些音频文件的回放添加混响效果。 Java程序是一个桌面应用程序,因此我无法使用android库。我尝试使用Java Sound API在端口上使用控件,但是在我的测试计算机上却无法使用。 (我的测试表明,所有端口都不支持混响控制)。
Port line = null;
if (AudioSystem.isLineSupported(Port.Info.SPEAKER)) {
try {
line = (Port) AudioSystem.getLine(
Port.Info.SPEAKER);
}
catch(Exception ex){
ex.printStackTrace();
return;
}
}
EnumControl reverb = (EnumControl)line.getControl(EnumControl.Type.REVERB);
System.out.println(Arrays.toString(reverb.getValues()));
上面的代码无效。有没有办法我可以手动添加混响效果?也许通过一些被忽略的api或通过操纵波形和/或该波形的回放?任何建议都将不胜感激。
最佳答案
如果您的驱动程序不支持混响,但确实支持播放彼此重叠的多种声音,则可以多次播放相同的声音,实例之间的延迟很短,并且每次减小音量。 “适当的”混响还会对每次重复进行一点过滤,但这应该足够接近。
如果驱动程序不允许您这样做,则可以尝试使用相同的方法对声音本身进行重新处理,以在播放之前添加混响。