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 }
(参照:ピーキング EQ の IIR 係数、それらを vDSP_deq22 に渡す方法は? )
歪み/ノイズの原因 (フィルターが機能しない) は何ですか?