У вас есть БИХ-фильтр, и для большего контроля я бы предложил использовать КИХ-фильтр, для которого проще рассчитать коэффициенты.Я создаю оконную функцию:
y = sin (x * bandwidth) / (sin (x) * windowWidth)
, где windowWidth - это количество сэмплов ширины вашего окна, x колеблется от -2 * PI до 2 * PI и пропускная способность:
bandwidth = 2 * frequency * n / sampleRate;
Это создает массив чисел, который вы применяете к диапазону семплов, центрированных вокруг того, который вы хотите вывести.Вы повторяете это для каждого образца.
Я суммировал свой собственный код для этого, поскольку оригинальный код довольно грубый.