欢迎来到记录不充分的 AVAudioEngine 世界。
不确定您是如何设置 AVAudioEngine 的,但作为快速浏览,我猜您会看到以下几行:
创建引擎let engine = AVAudioEngine()
创建效果节点var equalizer = AVAudioUnitEQ(numberOfBands: 1)
附加节点engine.attach(equalizer)
连接节点engine.connect(equalizer, to: engine.mainMixerNode, format: audioFormat)
准备并启动发动机。 engine.prepare();try engine.start();
您还将为您的音频样本附加并连接一个 playerNode。
至于你的问题。 AVAudioUnits 是效果节点用来让 AVAudioEngine 操纵音频的子类。您可以通过您操作的节点间接将这些与 AVAudioEngine 一起使用。
为了让 AVAudioEngine 操纵低通滤波器,您可以用一个波段(如上)实例化一个 AVAudioUnitEQ。然后使用改变滤波器频率的函数来操纵效果:
func setLowPassFilter(frequency: Float){
filter.bands[0].filterType = .lowPass
filter.bands[0].frequency = frequency
filter.bands[0].bypass = false
}
这些 AVAudioUnitEQ 效果的关键是设置 bypass = false,否则它会忽略你的效果。
我希望这会有所帮助。 AVAudioEngine 的世界很寂寞,所以我想向您指出这个免费的应用程序:Phonique
这是一款由真正的 AudioEngine 专业人士 - Chris Davis 创建的应用程序,可让您轻松试验 AVAudioEngine 以找到您的效果,然后检查他干净生成的代码以了解其连接方式。在this 帖子中,他解释了它是如何工作的。它并不总是为您自己的代码提供替代品,但它是查看应该如何连接的理想场所。祝你好运