我想为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或通过操纵波形和/或该波形的回放?任何建议都将不胜感激。

最佳答案

如果您的驱动程序不支持混响,但确实支持播放彼此重叠的多种声音,则可以多次播放相同的声音,实例之间的延迟很短,并且每次减小音量。 “适当的”混响还会对每次重复进行一点过滤,但这应该足够接近。

如果驱动程序不允许您这样做,则可以尝试使用相同的方法对声音本身进行重新处理,以在播放之前添加混响。

10-08 08:18