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;
}