У меня есть волновой файл в 16-битной форме PCM. У меня есть необработанные данные в 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;
}