带有 AudioRenderCallback 和 AudioUnitRenderFlag 的复音

Posted

技术标签:

【中文标题】带有 AudioRenderCallback 和 AudioUnitRenderFlag 的复音【英文标题】:Polyphony with AudioRenderCallback and AudioUnitRenderFlag 【发布时间】:2011-04-07 02:25:40 【问题描述】:

我正在了解核心音频/音频单元,所以如果这不言自明,请原谅我。

如果我想允许五个声音,我需要混音器上的 5 个总线和至少 5 个缓冲区,如果我想要 5 个不同的声音。我已经找到了一种通过检查时间和使用开始时间来安排笔记的基本方法。我想我应该使用 ioActionFlags 来指示我何时呈现静音,但我不太明白如何。

我之所以问,是因为有 2 辆公共汽车,当一辆安静一段时间但另一辆在播放时,我会发出嗡嗡声。

【问题讨论】:

【参考方案1】:

如果您感到嗡嗡声,可能是所谓的“撒旦锯”,这是一种锯齿状的噪音,由一个未清除的缓冲区在频道中一遍又一遍地播放而产生。以这种方式重复出现的除了静音之外的任何声音都会听起来有点像锯齿波。

当您渲染静音时,您应该简单地将输出缓冲区中的所有样本清除到0.0f 以获取给定的声音。我认为没有办法阻止回调尝试获取您的样本,无论如何,这比摆弄系统的渲染设置更容易(且更便携)。

【讨论】:

我正在这样做,但使用的是 int。浮动似乎解决了这个问题。啊细节。

以上是关于带有 AudioRenderCallback 和 AudioUnitRenderFlag 的复音的主要内容,如果未能解决你的问题,请参考以下文章

带有和不带有聚合的 sql 查询

使用带有数据数组的 Yii2 和带有排序和过滤的 Gridview

带有滚动的 Div 和带有绝对位置的内容

访问控制允许带有和不带有 www 的来源

带有“new”的指针和带有“&variable”的指针有啥区别[重复]

带有和不带有 Equatable 的 Flutter bloc 导航