如何以编程方式将混响效果添加到 Java 中的声音文件



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

如果你的驱动程序不支持混响,但支持播放相互重叠的多个声音,则可以多次播放相同的声音,实例之间有短暂的延迟,并且每次都会降低音量。"适当的"混响也会对每次重复进行一些过滤,但这应该足够接近。

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

最新更新