Я пытаюсь использовать 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);
И некоторые частоты в получающемся аудио выглядят действительно не затронутыми:
В 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
Но похоже, что сжатие применяется ко всем частотам.Разница между пиками и остальными меньше.
Я вижу, что у каждой полосы есть gain
и bandwidth
, но я неуверен, как их использовать.Было бы хорошо понять, как работают эти группы.Спасибо!