exponentialRampToValueAtTime 允许的最小浮点数是多少?
What's the smallest float allowable for exponentialRampToValueAtTime?
如果 value
为 0,exponentialRampToValueAtTime(value, time)
会触发错误,这是有道理的,因为 0 的日志未定义,但如果 value
太接近 0,显然也会触发错误1e-150
.
value 参数的最小数值是多少?
可能是 32 位浮点数的最小正常值,即 2 到 -126,或大约 1.18e-38。规范实际上并没有说它必须是正常值,但我不会乱用非正常值;它会降低性能(或在某些硬件上四舍五入为零)。
当然,1.18-38 是一个小得离谱的增益值,当样本被转换为整数并发送到声音硬件时,这样小的数字无论如何都会四舍五入为零。您也可以使用更大的值,例如 1/32768,除非您出于某种原因将其传递到稍后的高增益阶段。
但是
当您逐渐静音时,您可能无论如何都不应该使用 exponentialRampToValueAtTime。你应该使用 setTargetAtTime。这使您可以控制指数斜坡的速度。这也意味着您不必担心允许的最小目标值,因为您可以使用零作为目标。
value
为 0,exponentialRampToValueAtTime(value, time)
会触发错误,这是有道理的,因为 0 的日志未定义,但如果 value
太接近 0,显然也会触发错误1e-150
.
value 参数的最小数值是多少?
可能是 32 位浮点数的最小正常值,即 2 到 -126,或大约 1.18e-38。规范实际上并没有说它必须是正常值,但我不会乱用非正常值;它会降低性能(或在某些硬件上四舍五入为零)。
当然,1.18-38 是一个小得离谱的增益值,当样本被转换为整数并发送到声音硬件时,这样小的数字无论如何都会四舍五入为零。您也可以使用更大的值,例如 1/32768,除非您出于某种原因将其传递到稍后的高增益阶段。
但是
当您逐渐静音时,您可能无论如何都不应该使用 exponentialRampToValueAtTime。你应该使用 setTargetAtTime。这使您可以控制指数斜坡的速度。这也意味着您不必担心允许的最小目标值,因为您可以使用零作为目标。