我正在为Novocaine开发一个 DSP 类(obj-c++) ,但我的过滤器似乎只会对信号造成噪声/失真。
我在这里发布了我的完整代码和系数:https ://gist.github.com/2702844 但它基本上归结为:
// Deinterleaving...
// DSP'ing one channel:
NVDSP *handleDSP = [[NVDSP alloc] init];
[handleDSP setSamplingRate:audioManager.samplingRate];
float cornerFrequency = 6000.0f;
float Q = 0.5f;
[handleDSP setHPF:cornerFrequency Q:Q];
[handleDSP applyFilter:audioData length:numFrames];
// DSP other channel in the same way
// Interleaving and sending to audio output (Novocaine block)
有关完整代码/上下文,请参阅要点。
系数:
2012-05-15 17:54:18.858 nvdsp[700:16703] b0: 0.472029
2012-05-15 17:54:18.859 nvdsp[700:16703] b1: -0.944059
2012-05-15 17:54:18.860 nvdsp[700:16703] b2: 0.472029
2012-05-15 17:54:18.861 nvdsp[700:16703] a1: -0.748175
2012-05-15 17:54:18.861 nvdsp[700:16703] a2: 0.139942
(全部除以a0
)
由于我假设系数的顺序为:({ b0/a0, b1/a0, b2/a0, a1/a0, a2/a0 }
请参阅:IIR 用于峰值 EQ 的系数,如何将它们传递给 vDSP_deq22?)
是什么导致失真/噪音(过滤器不起作用)?