导入和连接波形文件

时间:2017-02-15 20:31:39

标签: java eclipse audio wav eclipse-neon

如果已经回答了这个特定/简单的事情,我真的很抱歉,我似乎无法解决我遇到的这个问题。

目前,我正在尝试为我的高级独立研究编程语言课编写一个程序,该课程涉及.wav文件的 lot 。我正在使用Eclipse Neon,而且我正在使用Java。我目前的问题是正确导入.wav文件,然后是将几个连接在一起的正确方法。

这是使用这些文件的类的代码。请随意批评我的方法,我完全失去了。

private ArrayList<String> paths;

public audioGen(){
    paths = new ArrayList<String>();
}

public ArrayList<String> formList(int l, String type) {
    Random a = new Random();
    int b;
    if(type.equals("A")){
            for(int x=0; x<l;x++){
                b = a.nextInt(14);
                paths.add("/res/"+Integer.toString(b)+".wav");
            }
    }
    return paths;
}

@SuppressWarnings("resource")

public void soundAppend(ArrayList<String> pathList) throws IOException, UnsupportedAudioFileException {
        AudioInputStream clip1 = null;
        for(String path1 : pathList){
            if (clip1 == null){
                clip1 = AudioSystem.getAudioInputStream(new File (path1));
                continue;
            }
            AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(path1));
            AudioInputStream appendFiles = new AudioInputStream(new SequenceInputStream(clip1, clip2), clip1.getFormat(), clip1.getFrameLength() + clip2.getFrameLength());
            clip1 = appendFiles;
        }
    AudioSystem.write(clip1, AudioFileFormat.Type.WAVE, new File("src\\audio\\completed.wav"));
    clip1.close();
}

public void readList(ArrayList<String> l){
    for(String s : l)
        System.out.println(s);
}

我设置了文件夹,以便/ res /是包AUDIOWORK下的构建路径,以及com / rade / gen /下的源文件。这是一个问题,他们没有足够接近访问,或者我需要创建audioInputStreams来使用它们;如果是这样,我将如何从那里连接它们。

非常感谢高级,如果在其他地方得到了解答,请再次对不起。我花了两周的时间试图弄清楚这是如何工作无济于事的。 :/

编辑:我想指出这是我近三年前匆匆忙忙的一个项目的重写,所以我有很多东西,我目前还没有刷新 - 特别是代码对于soundAppend方法。

1 个答案:

答案 0 :(得分:0)

问题在于获取文件的正确路径。由于您提到已将资源文件夹添加到类路径中,因此应该可以:

public ArrayList<String> formList(int l, String type) {
    Random a = new Random();
    int b;
    if(type.equals("A")){
        for(int x=0; x<l;x++){
            b = a.nextInt(14);
            Url url = this.getClass().getResource(Integer.toString(b)+".wav");
            paths.add(url.toString());
        }
    }
    return paths;
}