У меня есть программа, которая включает анализ и вывод .wav файлов.Он отлично работает с треками с компакт-дисков или из Интернета, но я сгенерировал последовательность чистых синусоидальных тонов, используя для анализа matlab, и это дает мне ошибку, показанную в названии.Файлы matlab отлично работают в iTunes, поэтому я не уверен, почему с моей программой возникают проблемы с этим.
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();
}
Первая строка этого метода - причина ошибки.Этот метод включает информацию о сигнале для файла в текстовый файл.Любая помощь будет принята с благодарностью.
Ниже приведен небольшой фрагмент кода 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" представляет собойпримечание