6

iOS 上的唯一效果 AudioUnit 是“iTunes EQ”,它只允许您使用 EQ 预设。我想在我的音频图中使用自定义的 eq

我在这个主题上遇到了这个问题,并看到了一个建议在渲染回调中使用这个 DSP 代码的答案。这看起来很有希望,人们似乎在各种平台上有效地使用它。但是,即使使用平坦的 eq,我的实现也会产生大量噪音。

这是我与 Apple 的“MixerHost”示例应用程序的“MixerHostAudio”类的 20 行集成(一次提交):

https://github.com/tassock/mixerhost/commit/4b8b87028bfffe352ed67609f747858059a3e89b

关于如何让这个工作的任何想法?还有其他整合情商的策略吗?

编辑:这是我遇到的失真示例(使用 eq flat): http ://www.youtube.com/watch?v=W_6JaNUvUjA

4

2 回答 2

0

在 中的代码中EQ3Band.c,使用滤波器系数而不进行初始化。该init_3band_state方法仅初始化增益和频率,但系数本身 -es->f1p0等未初始化,因此包含一些垃圾值。这可能是输出不好的原因。

于 2011-03-20T11:30:30.213 回答
0

这段代码似乎不止一种方式是错误的。

数字滤波器通常由恒定的滤波器系数、滤波器内部状态历史(因为在大多数情况下输出取决于历史)和滤波器拓扑(用于计算给定输入的输出的算法)和过滤器(系数 + 状态历史)。在大多数情况下,当然在过滤音频数据时,如果您将 0 输入到输入端,您希望在输出端得到 0。

您链接到的代码中的问题:

  • 每次调用处理方法时都会更改滤波器系数:

    es->f1p0 += (es->lf * (sample - es->f1p0)) + vsa;

  • 输入样本通常乘以滤波器系数,而不是相加。它没有任何物理意义——样本和滤波器系数甚至没有相同的物理单位。

  • 如果你输入 0,你不会在输出中得到 0,只是一些没有任何意义的值。

我建议你寻找另一个代码 - 另一个选项是调试它,它会更难。

此外,您将从阅读有关数字滤波器的信息中受益:

http://en.wikipedia.org/wiki/Digital_filter

https://ccrma.stanford.edu/~jos/filters/

于 2011-03-21T09:13:24.073 回答