16ビットPCM形式のWaveファイルがあります。生データbyte[]
とサンプルを抽出する方法があり、フロート形式、つまりfloat[]
フーリエ変換を行うためにそれらが必要です。これが私のコードです、これは正しく見えますか?私はAndroidで作業しているので、javax.sound.sampled
などは利用できません。
private static short getSample(byte[] buffer, int position) {
return (short) (((buffer[position + 1] & 0xff) << 8) | (buffer[position] & 0xff));
}
...
float[] samples = new float[samplesLength];
for (int i = 0;i<input.length/2;i+=2){
samples[i/2] = (float)getSample(input,i) / (float)Short.MAX_VALUE;
}