Удалить частоты с AVAudioUnitEQ - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь использовать 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

Я вижу, что у каждой полосы есть gain и bandwidth, но я неуверен, как их использовать.Было бы хорошо понять, как работают эти группы.Спасибо!

...