AudioInputStream does not work properly
Hello,
I'm trying to read a WAV-file using the AudioInputStream, which I get
using AudioSystem.getAudioInputStream(File).
I can play the Stream with a SourceDataLine and that stuff, but I need
the samples in an int[]. So I tried to use
AudioSystem.getInputStream(AudioFormat, AudioInputStream) with an
appropriate format and read from it, but I get some really weird data
which is definitely not the sinus tone which is in the WAV-file.
The code I'm using looks like this:
public int[] getIntBuffer()
throws UnsupportedAudioFileException, IOException {
AudioInputStream stream = getStream();
int[] buffer = null;
try {
AudioFormat tmpFormat =
new AudioFormat(
Encoding.PCM_SIGNED,
stream.getFormat().getSampleRate(),
stream.getFormat().getSampleSizeInBits(),
1,
stream.getFormat().getFrameSize(),
stream.getFormat().getSampleRate(),
false);
AudioInputStream tmpStream =
AudioSystem.getAudioInputStream(tmpFormat, stream);
byte[] buf = new byte[tmpFormat.getFrameSize()];
buffer = new int[(int) tmpStream.getFrameLength()];
if (tmpFormat.getFrameSize() > 1) {
for (int i = 0; i < buffer.length; i++) {
tmpStream.read(buf);
buffer[i] = (int) (buf[0]) | (int) (buf[1])<<8;
}
} else {
for (int i = 0; i < buffer.length; i++) {
tmpStream.read(buf);
buffer[i] = (int) (buf[0]);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return buffer;
}