我有涉及的.wav文件的分析和輸出的程序。它的工作原理與CD或互聯網曲目完全正常,但我已經生成的用matlab分析純正弦波音序列,這是給我的標題所示的錯誤。 matlab文件在iTunes中運行良好,所以我不確定爲什麼我的程序遇到問題。程序返回「無法從輸入文件音頻輸入流」爲特定的.wav文件
public static void signalToFile(File f) throws IOException, UnsupportedAudioFileException
{
AudioInputStream inputStream = AudioSystem.getAudioInputStream(f);
int numBytes = inputStream.available();
byte[] buffer = new byte[numBytes];
inputStream.read(buffer, 0, numBytes);
String newFile = f.getName().replace(".wav", ".txt");
System.out.println("Beginning file write: " + newFile + " (soundUtilities)");
BufferedWriter fileOut = new BufferedWriter(new FileWriter(new File("src/examples/Media/" + newFile)));
System.out.println("Ending file write: " + newFile + " (soundUtilities)");
System.out.println(buffer.length);
ByteBuffer myBB = ByteBuffer.wrap(buffer);
myBB.order(ByteOrder.LITTLE_ENDIAN);
while(myBB.remaining() > 1)
{
short current = myBB.getShort();
fileOut.write(String.valueOf(current));
fileOut.newLine();
}
fileOut.flush();
fileOut.close();
inputStream.close();
}
此方法的第一行是什麼導致錯誤。該方法將文件的信號信息包含到txt文件中。任何幫助將不勝感激。
下面是MATLAB代碼的小部分我用來創建wav文件:
x13 = sin(2*pi*220*t1); % A3 long sample
x13envelope = [1:-1/length(x13):1/length(x13)];
x13full = x13.*x13envelope;
totalSound = [x1full x2full x3full x4full x5full x6full x7full x8full x9full x10full x11full x12full x13full]; % combines the notes
wavwrite(totalSound, fs, 32, 'TestTune');
的「totalSound」陣列中的條目中的每一個代表一個音符
@ 9000我會加我用來創建wav文件MATLAB代碼段,但我假設,如果我沒有做的wav文件頭那就不是在iTunes中播放? – Joneser 2011-04-23 13:48:56
iTunes可以足夠聰明地接受原始PCM。仍然用文件查看器打開一個好的.wav文件(或者在遠處或者mc處使用F3),看看它是否以'RIFF'開始。 – 9000 2011-04-23 14:00:07
@Joneser:「我猜想,如果我沒有做的wav文件頭那就不是在iTunes中播放?」這是一個輕率的假設。大多數玩家花費非常多的時間去分析無效的媒體文件。 – 2011-04-23 14:01:52