Anna Sun
squash for release
2485dd8
raw
history blame
486 Bytes
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;
}