我不确定这是编程问题还是数学问题,但是由于它是在我编写的javascript程序的上下文中,因此我将在此处发布。
我有一个表示PCM音频的0-255(UInt8Array
)字节值数组,我需要将其转换为从-1到1的浮点数组。这是因为Javascript Audio API缓冲区是Float32Array
个。但是问题可以概括为:如何将0-255的值转换为-1到1的值?
我当前使用的解决方案有效,但看起来很模糊:
var f = b / 127.5 - 1;
答案 0 :(得分:1)
您可以将其抽象为:
const mapRange = (fromStart, fromEnd) => (toStart, toEnd) => value =>
value / (fromEnd - fromStart) * (toEnd - toStart) - fromStart + toStart;
const encodeAudio = mapRange(0, 255)/*to*/(-1, 1);
console.log(encodeAudio(10));