Я не могу заставить AVAudioUnitEQ
работать.
Вот фрагмент кода, который должен отфильтровать все, кроме 659,255 Гц +/-0,05 октавы:
// Create Audio Engine
var audioEngine = AVAudioEngine()
// Create Equalizer Node
var equalizerNode = AVAudioUnitEQ(numberOfBands: 1)
var epualizerParameters: AVAudioUnitEQFilterParameters = equalizerNode.bands.first as AVAudioUnitEQFilterParameters
epualizerParameters.filterType = .BandPass
epualizerParameters.frequency = 659.255
epualizerParameters.bandwidth = 0.05
epualizerParameters.bypass = false
audioEngine.attachNode(equalizerNode)
// Configure Audio Engine
var format = audioEngine.inputNode.inputFormatForBus(0)
audioEngine.connect(audioEngine.inputNode, to: equalizerNode, format: format)
audioEngine.connect(equalizerNode, to: audioEngine.outputNode, format: format)
// Start Audio Engine
var error:NSError?
audioEngine.startAndReturnError(&error)
Однако, когда я запускаю его, надеваю наушники и пою в микрофон, я слышу себя громко и четко.
Теперь, согласно Википедии, полосовой фильтр:
... устройство, которое пропускает частоты в пределах определенного диапазона и подавляет (ослабляет) частоты вне этого диапазона.
Что я делаю не так? Я хочу отфильтровать все, кроме заданного диапазона частот.