Добрый день.
Сразу попрошу сильно не пинать меня за мою возможную неграмотность. Я самоучка в сфере акустики и многого могу не знать/не понимать. Сам я программист.
Имеется у меня компьютер с 5.1 звуковой картой, которую я использую, как выход трёх полос стереосигнала, фильтрация сигналов происходит средствами LADSPA плагинов, подключенных к ALSA. Собственно возник интерес у меня написать свой простейший LADSPA плагин - кроссовер, работающий в роли КИХ фильтра по массиву коэффициентов. С расчётом самого фильтра из произвольных АЧХ я с горем пополам разобрался. Остался у меня вопрос собственно в стыковке фазы. Мой алгоритм рассчёта фильтров примерно такой:
1. Снять АЧХ с высоким разрешением раздельно для каждой отдельной полосы (снимать в допустимых диапазонах, что бы не убить головки).
2. Выбрать частоты раздела и построить "корректирующие" АЧХ, для выравнивания чувствительности головок и резкого обрезания до нуля в границах раздела частот.
3. Рассчитать КИХ фильтр для линейной фазы к полученным резким "корректирующим" АЧХ, применить к полученным массивам КИХ коэффициентов оконную функцию, например, Гаусса с каким-то значением девиации, и преобразовать коэффициенты в "корректирующие" АЧХ обратно. Полученные обратно АЧХ будут уже с плавными завалами и пересекаться границами полос.
4. Перебирая разные значения девиации для окна Гаусса подобрать допустимые для головок пересечения получившихся "корректирующих" АЧХ, но с максимальным пересечением. Простыми словами - подобрать такое окно, для которого эффект Гиббса будет наименее значительным, а завал АЧХ на стыках будет ещё допустим.
После расчёта КИХ фильтров для всех полос раздельно нужно состыковать смещения фаз в местах пересечения. Вот тут собственно и вопрос, как правильно измерить нестыковки фазы. Для себя я вижу только такую возможность - измерять звуковое давление в каждой точке пересечения полос для трёх случаев:
1. играет только одна полоса
2. играет только вторая полоса
3. играют обе полосы
и в случае расхождения суммы двух раздельных амплитуд с суммарной крутить фазу. Данный процесс возможно стоит автоматизировать, что бы посчитать фазу с довольно малым шагом.
Есть ли какие-то более простые способы стыковки фазы?
Социальные закладки