这是我的问题,有人给了我一个功能,如果我理解的话,将一些声音样本放入arraylist。
我想创建一个包含此音轨的.wav文件,我真的不知道该怎么做。
以下是代码,因为我可能根本不理解它......
public class Track {
private ArrayList<Sample> sounds;
private AudioFormat audioFormat;
TargetDataLine targetDataLine;
public Track()
{
this.sounds = new ArrayList <Sample>();
}
/*** Sort the sample on the track by ascending start time ***/
public void sortTrack() {
Collections.sort(sounds);
}
/**
* Add a sample to the track.
* @param fic location to the audio file.
* @param sT set the start time in ms of the sound on the track.
*/
public void addSound(String fic, long sT) {
sounds.add(new Sample(fic, sT));
}
/**
* Delete a sample to the track.
* @param fic location to the audio file.
* @param sT set the start time in ms of the sound on the track.
*/
public void deleteSound(String fic, long sT) {
int i;
for ( i = 0; i < sounds.size() &&(
sounds.get(i).getAudioFile().getName() == fic &&
sounds.get(i).getStartTime() == sT); ++i) {}
if (i < sounds.size()) sounds.remove(i);
}
以下是在上面的代码中导入的示例。
public Sample (String fileLocation, long sT) {
try{
audioFile = new File(fileLocation);
istream = AudioSystem.getAudioInputStream(audioFile);
format = istream.getFormat();
startTime = sT;
timeLenght = (audioFile.length() / (format.getFrameSize() * format.getFrameRate() )) * 1000;
}
catch (UnsupportedAudioFileException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
在我看来,这不是一个好的Java源代码,因为有很多无用的操作可以使用一些特定的java工具自动化。
显然,你有一个巨大的课程,代表了一个特定专辑的独特轨道;当然,这张专辑细分为不同的样本。通过一些提示来详细描述方法,以改进您的代码: