我正在使用 SDL2 生成 32 位浮点音频格式的 440Hz 正弦波。
我已阅读 else where 32 位浮点音频格式在 -1.0 和 +1.0 之间标准化。
通过该声明,我预计超出 -1 和 +1 的值会发生剪裁。
当我将正弦波的幅度增加到超过 -1.0 和 +1.0 时,音调变得很重(在 3000 幅度时非常响亮),并且似乎没有发生削波。
所以我的问题是:
幅度超过 -1.0/+1.0 时会发生什么情况以及为什么它不会削波?
32位浮点音频格式的最大幅度值是多少?
是否有任何地方定义了 -1/+1 标准化约定?
最佳答案
从整数格式转换为浮点时,SDL 映射到 [-1, 1],但是在混合时,它会在最大 float
处剪辑:[-3.402823466e+38F, 3.402823466e+38F] .
除此之外,SDL 似乎未经修改地将 float 音频数据直接传递到其许多音频设备实现,因此您的问题取决于操作系统/声卡。
就您的情况而言,您的信号可能在某个时刻已“对数化”,因此在 3000x 时缺乏削波。
关于audio - SDL2 浮点音频不剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33197761/