2 c++ math trigonometry audiounit
我想知道音频单元在缓冲区中期望的值.现在,当我在一个振幅为0.5的单一频率上计算正弦波的样本时,一切正常.
但是,当我想同时播放几个频率时,例如同时播放5个频率,我将样本混合在一起,将样本混合起来,样本值变高,声音不再干净.
所以我想知道在我开始收到脏声之前我的最大样本值是多少.
在OS X上
采样值通常在[-1.0...1.0)其中,其中最大值和最小值对应于0 dBFS.但是,您应该准备好处理更大的样本值.
许多使用浮点渲染/混合图的人习惯于在不考虑超过0 dBFS的情况下工作.只有在输出到硬件或音频文件时,它们才可以验证信号是否不超过0 dBFS.
如果你只有一个合成5个正弦的合成器,每个都是-6 dBFS,那么在正常情况下信号应该没有削波,即使你超过[-1 ... 1),因为你使用浮点数表示你的信号.
这有一些例外:
我通常会通过向它发送一个明显有效的信号来证明/反驳这一点.当然,选择使用整数进行处理的信号处理器/发生器可以(并且应该)留下大量的余量以避免削波(因为处理器不太可能使用小于32位的任何东西来处理音频).
在iOS上
由于iOS设备上的浮点处理速度要慢得多,因此AudioUnitSampleTypecanonic被指定为Q7.24固定点.
可在此处找到此格式的说明.另请参阅本主题的相关帖子.
因为这不是浮点,所以你必须更加小心你的增益阶段,以避免内部削波.
另请注意,可以float在iOS上配置32位图.在这种情况下,您应避免超出[-1.0...1.0)处理器的输出,因为很可能您的输出将很快转换为非浮点表示(与OS X相比),除非您当然可以直接控制在加工链下游的适当点获得分段,并适当调整这些点的振幅.
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |