File size: 486 Bytes
2485dd8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
export default function float32To16BitPCM(
float32Arr: Float32Array,
): Int16Array {
const pcm16bit = new Int16Array(float32Arr.length);
for (let i = 0; i < float32Arr.length; ++i) {
// force number in [-1,1]
const s = Math.max(-1, Math.min(1, float32Arr[i]));
/**
* convert 32 bit float to 16 bit int pcm audio
* 0x8000 = minimum int16 value, 0x7fff = maximum int16 value
*/
pcm16bit[i] = s < 0 ? s * 0x8000 : s * 0x7fff;
}
return pcm16bit;
}
|