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

时间:2014-02-23 17:00:26

标签: java signal-processing playback javasound

我想为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或通过操纵波形和/或那个波形的回放?任何建议都将得到应有的赞赏。

1 个答案:

答案 0 :(得分:0)

如果您的驱动程序不支持混响,但支持播放多个彼此重叠的声音,则可以在实例之间短暂延迟和每次减小音量时多次播放相同的声音。 “正确的”混响也会对每次重复进行一些过滤,但这应该足够接近。

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