riffwave.js 的这些公式的 (128 + 127 *) 部分是什么?
What is this (128 + 127 *) part of these formulas for riffwave.js?
我正在尝试在浏览器中做一些 javascript 音乐合成器,我遇到了 riffwave.js。从这个问题 here 中,答案给出了如何使用 riffwave.js.
的提示
我稍微研究了一下,弄明白了一些东西,比如多音,我几乎都能理解,但我不知道为什么会有128 + 127 *
。
它也出现在这个演示页面中 here。
任何人都可以提供解释或告诉我如何使用该部分来修改程序吗?
谢谢。
您引用的示例显示了以下形式的等式:
A=128 + 127 * Sin(...)
由于 Sin
函数可以在 -1 到 +1 之间变化,所以上面等式的结果是 1-255。因此,加上常数 128
并乘以系数 127
,这基本上是一个 sin
函数,其输出在 1 到 255 之间变化,这很方便,因为它可以使用 8 位存储(或 1 个字节)。
就像 mti2935 所说的那样,这是一种将 -1 到 1 之间变化的数字映射到 1 到 255 之间变化的整数的便捷方法,这非常适合一个字节。特别是,riffwave 似乎在内部以 8 位 .wav 格式表示声音,因此这会将浮点数转换为实际播放声音所需的 8 位整数格式。
我正在尝试在浏览器中做一些 javascript 音乐合成器,我遇到了 riffwave.js。从这个问题 here 中,答案给出了如何使用 riffwave.js.
的提示我稍微研究了一下,弄明白了一些东西,比如多音,我几乎都能理解,但我不知道为什么会有128 + 127 *
。
它也出现在这个演示页面中 here。
任何人都可以提供解释或告诉我如何使用该部分来修改程序吗?
谢谢。
您引用的示例显示了以下形式的等式:
A=128 + 127 * Sin(...)
由于 Sin
函数可以在 -1 到 +1 之间变化,所以上面等式的结果是 1-255。因此,加上常数 128
并乘以系数 127
,这基本上是一个 sin
函数,其输出在 1 到 255 之间变化,这很方便,因为它可以使用 8 位存储(或 1 个字节)。
就像 mti2935 所说的那样,这是一种将 -1 到 1 之间变化的数字映射到 1 到 255 之间变化的整数的便捷方法,这非常适合一个字节。特别是,riffwave 似乎在内部以 8 位 .wav 格式表示声音,因此这会将浮点数转换为实际播放声音所需的 8 位整数格式。