使用AVAudioUnitEQ删除频率

时间:2018-11-21 20:51:30

标签: swift avfoundation avaudioengine

我正在尝试使用AVAudioEngine脱机删除音频文件中的某些频率。我只想保持100到150赫兹之间的频率。

在JavaScript中,我这样做:

var lowpass = offlineContext.createBiquadFilter();
lowpass.type = "lowpass";
lowpass.frequency.setValueAtTime(150, 0);
lowpass.Q.setValueAtTime(1, 0);

var highpass = offlineContext.createBiquadFilter();
highpass.type = "highpass";
highpass.frequency.setValueAtTime(100, 0);
highpass.Q.setValueAtTime(1, 0);

结果音频中的某些频率确实没有受到影响:

enter image description here

在Swift中,我正在尝试:

let eq = AVAudioUnitEQ(numberOfBands: 2)
engine.attach(eq)

let lowPass = eq.bands[0]
lowPass.filterType = .lowPass
lowPass.frequency = 150.0
lowPass.bypass = false

let highPass = eq.bands[1]
highPass.filterType = .highPass
highPass.frequency = 100.0
highPass.bypass = false

但是看起来压缩应用于所有频率。峰与其余峰之间的差异较小。

enter image description here

我可以看到每个频段都有gainbandwidth,但是我不确定如何使用它们。很高兴了解这些乐队的工作方式。谢谢!

0 个答案:

没有答案