FIR фильтр

  • Автор темы Автор темы Guzik
  • Дата начала Дата начала

Guzik

Banned
5 Окт 2010
171
39
0
Беларусь, Ошмяны
Ребята, прочитал в обзоре существующих цифровых фильтров такую вещь:
FIR фильтры
От Finite Impulse Response - 'конечная отдача импульса'. Эти фильтры реализованы через процесс, называемый сверткой (convolution): есть таблица размера n, которая комбинирует (складывает) последние n точек функции в одну выходную точку, умножая каждую из них на определенное число - весовой коэффициент. Таблица свертки строится один раз в начале по требуемому частотному воздействию.
[На самом деле влоб делать свертку очень медленно. Применяется другой процесс, для больших сверток в сотни раз более быстрый, но полностью аналогичный этому - FFT, умножение в частотном пространстве, обратный синтез].
Эти фильтры обычно применяются в диалогах типа эквалайзера. Иногда каждому движку (регулятору усиления определенной частоты) соответствует свой фильтр, воздействующий на определенные частоты, иногда - синтезируется таблица свертки на основе всех движков сразу, то есть применяется один сложный фильтр.
FIR фильтры - то, ради чего стоило вообще придумывать цифровую фильтрацию. Это наиболее безопасный и надежный из всех процессов, имеющий лишь одно слабое место - трудно управляемые параметры фильтрации. Сделать фильтр именно до мелочей такой, какой нам нужно, особенно в области низких частот, может оказаться излишне трудоемким, что приведет к очень медленной обработке. Для этого придется использовать слишком большие размеры свертки, а это замедлит до трудно терпимой скорости даже в сотни раз ускоренный процесс. Однако сверхсильная точность не всегда нужна, а очень хорошую точность обработки за приемлемое время он всё же обеспечивает.

И задался целью найти плаг, который фильтрует именно так, с максимальным уважением к фазе и частоте. Но на запрос о таком типе фильтра применительно к обработке звука интернет молчит. Есть ну очень замечательный плаг от ReaPlugs, который так и называется reaFIR. Но в описании скзано, что работает он по принципу FFT. А FFT фильтры в том же обзоре называются самыми опасными и смертельными для звука в неумелых руках. Кто чего слышал о FIR ?
 
FIR - Finite Impulse Response - это фильтры работающие на "импульсах" (см. те же "импульсные" ревербераторы и т.д.) - т.е. на принципе "свертки" (convolution). Например, Windowed-Sinc - метод свертки применяемый для "коротких" импульсов. А в данном случае FFT - это всего лишь более быстрая альтернатива реализации FIR фильтра с очень "длинным" импульсом.
И то и другое - FIR. Поэтому альтернативой FFT может быть как свертка в лоб, так и с "окном" (т.е. Windowed-Sinc фильтр), когда "короткий" импульс для уменьшения артефактов еще и "сглаживается". Можно то же самое делать и с очень "длинными" импульсами, но через FFT все это делается намного быстрее.
Кстати, sinc фильтры тоже дают артефакты, что и описанные в той статье про FFT... Те же искажения в форме волны на "ступеньках" и т.д.
Даже при самой идеальной реализации - это врожденное их свойство. Так что... Производителям лучше знать что совать в свои эквалайзеры.
 
  • Like
Реакции: Guzik
Проще говоря, если EQ "с линейной фазой" и позволяет наворотить любую произвольную характеристику с узкими провалами и пиками - это FFT. А если всего-лишь несколько фильтров подряд с не слишком замысловатыми для каждого требованиями к полосам пропускания (и при этом в мануале гордо написано что-то про линейную фазу) - то скорее всего что-то из искомого вами.
 
А если всего-лишь несколько фильтров подряд с не слишком замысловатыми для каждого требованиями к полосам пропускания (и при этом в мануале гордо написано что-то про линейную фазу) - то скорее всего что-то из искомого вами.
LinEq Lowband - это он? Там ведь только три фильтра.
Еще вопрос- почему после LinEQ спектроанализатор показывает наличие вырезанных частот? Они как бы давятся, но не в ноль, а к примеру тот же ReaFIR убивает часть спектра начисто?
 
LinEq Lowband - скорее всего (на глаз), не проверял )))
По крайней мере в мануале сказано:
"The - Linear Phase EQ method is based on Finite Impulse Response filters." )))
Про наличие вырезанных частот - наверное потому что там Gain -12 либо -30dB максимум.
Чтобы убирать все начисто и бесповоротно, да еще и с крутым срезом и с высокой точностью- нужен FFT, либо импульс большой длительности.
 
Novation, а сам чем пользуешся, если не секрет? Какие плагины для фильтрации ходят в любимчиках? Или может быть в специализированных программах есть хорошо реализованные FIR фильтры?
 
Чтобы убирать все начисто и бесповоротно, да еще и с крутым срезом и с высокой точностью- нужен FFT, либо импульс большой длительности.
Абсолютно все равно.
Крутизна среза и ширина полосы пропускания также требует большого базиса для FFT (или размер "окна" как больше нравится), если взять небольшой базис, то и FFT даст плавные пики и пологие спады АЧХ.
Просто чем больше длина импульса/размер базиса — тем больше выгода от FFT алгоритма в плане производительности.
Да, прямой конволюцией точно также можно испортить звук, если плохо реализовать процесс, а при длинных импульсах конволюция больше грязи принесет, т.к. требует больше операций.
 
  • Like
Реакции: Novation
Alexey Lukin, вот выбираю я в опциях озона размер фильтра 16384, при этом крутизна среза на графике прям офигеть-офигеть. Что можно сказать о таком способе фильтрации? Корежит он звук или все нормально, просто процессор нагружает по полной? Почему после этого фильтра весь вырезанный диапазон продолжает жить пусть и задавленный по амплитуде? Для чего вообще в фильтрах существует регулировка крутизны среза? Ведь ослабить какой-либо диапазон- задача эквалайзера. Ведь мне в цифре для того, чтобы к примеру басовая нота прозвучала в миксе так же, как вне его, нужно, чтобы на частотах ее гармоник не было вообще ничего, а не то что пусть и задавленная, но все же волна именно этой частоты от другого инструмента и возможно в противофазе.
Фильтр ИМХО, если только это возможно без ущерба для остального спектра, должен рубить все нафиг от или до заданной частоты. На то он и фильтр. Или это просто не реализуемо?
Прошу прощения за сумбурное изложение, но вроде ж понятно выразился..:whistle3:
 
Или это просто не реализуемо?
Ну во-первых, шум квантизации будет всегда.
Во-вторых, реализуемо, ага, только звон у такого фильтра будет длиться бесконечно:man_in_love:

В третьих... Все-таки мне интересно, вот как вы представляете "чтобы к примеру басовая нота прозвучала в миксе так же, как вне его, нужно, чтобы на частотах ее гармоник не было вообще ничего"?
Т.е., допустим, бас и гитара вообще на одной ноте никогда не должны играть?

ЗЫ и
Корежит он звук или все нормально
Вы своим ушам не доверяете?
 
Фильтр ИМХО, если только это возможно без ущерба для остального спектра, должен рубить все нафиг от или до заданной частоты. На то он и фильтр.
Чем более резкие изменения имеются в АЧХ фильтра, тем сильнее фильтр "звенит". Читайте статью: "Цифровые эквалайзеры".
 
Для чего вообще в фильтрах существует регулировка крутизны среза? Ведь ослабить какой-либо диапазон- задача эквалайзера.
Фильтр и эквалайзер — это одно и то же. Только чуть разные области применения.
 
Все-таки мне интересно, вот как вы представляете

У меня такое впечатление, что стартер страдает юношеским максимализмом, полагая что чем круче спад АЧХ у фильтра, тем качественнее будет микс.
Великолепные записи делались и делаются на аналоговых консолях, где стоят фильтры не бог весть какого порядка, и ничего - работают.
 
  • Like
Реакции: Elle
У меня такое впечатление, что стартер страдает юношеским максимализмом
Может быть оно и так. Но мне кажется, что для качественной цифровой фонограммы нужно построить аранжировку так, чтобы одна и та же нота никогда не бралась несколькими инструментами одновременно. Иначе это ведь непременно приведет к искажению тембра всех одновременно звучащих инструментов. Но там, где все-таки необходимо звучание в унисон, мне кажется, нужно все равно разводить атаки звуков во времени хотя бы на несколько миллисекунд и плюс распихивать такие инструменты подальше по панараме.
Но как же сложно уследить за тем, чтобы гармоники к примеру гитарных аккордов не совпадали с басовыми. И вот в этом случае мне кажется лучше всего срезать гитару от определенной частоты начисто. Скажите мне, что я не прав- я ж не против, я буду только рад, если пойму, что заблуждался...
 
Нужны уши, хороший контроль и практический опыт, а вот от таких умозрительных построений толку мало.
 
  • Like
Реакции: Elle
Скажите мне, что я не прав
Вы неправы=)
Легче?

Я серьезно — берите проще.
Унисон между гитарой и басом это азбука рок-музыки! Наверное процентов 80, если не 90 басовых партий в роке так или иначе основываются на повторении основных тонов гитарной партии — совершенно без разницы пишете вы такую музыку в аналоге или цифре.
 
  • Like
Реакции: Elle
. Но мне кажется, что для качественной цифровой фонограммы нужно построить аранжировку так, чтобы одна и та же нота никогда не бралась несколькими инструментами одновременно.
Голосоведение и гармония никак не связаны с цифровой либо аналоговой техникой. Кстати, по этим наукам есть очень толстые учебники!

мне кажется, нужно все равно разводить атаки звуков во времени хотя бы на несколько миллисекунд
Где-то у нас на форуме уже был крупный теоретик композиции, утверждавший примерно то же самое. :yes3:
 
А кроме LinEQ от Waves и Озона какие плагины линейно-фазовых фильтров можете посоветовать?
Нужен фильтр, чтобы резать ниже 20 кГц. Lowband не очень устраивает.
Спасибо.
 
convex, спасибо! Если еще есть примочки, тоже шепните :)
В Lowband только две частоты среза - 11 и 21 кГц, возможности настройки минимальны, не очень наглядно. Хотелось бы чего покруче. И сравнить.

Еще такой вопрос: можно ли подобный фильтр (простите уж, не знаю, как точно - FIR или linear-fhase) применять несколько раз для большего подавления, не опасно это для полезного диапазона?
 
convex, Engineers Filter - не FIR, а IIR:
"Engineers Filter is a flter plugin that allows for extremely steep fltering. It achieves this by implementing
high order IIR flter design methods".
Это те же Баттерворт с Чебышевым.
 
Решение на FIR есть, пользуюсь третий год. На ИИР, или тем более, на пассивную сшивку полос переходить не думаю.
https://dephonica.com/
Кроме того, здесь есть не только FIR на основе FFT, как везде, но и т.н. "прямая свёртка" - STR FIR.
НО.
1. Нужен мощный комп. Именно много ядер.
2. Многоканальный ЦАП (текущая версия кроссовера 8 канальная)
3. много каналов хороших усилителей.
 
Нет. Я довольно глубоко копал эту тему.
Итак, по порядку.
1. Нужен очень мощный комп. А это и тепло (а тепло надо отводить тихо, т.е. пассивно), и много помех, от которых надо прятать ЦАП и усилители.
2. ЦАПы. При цифровом делении полос к ЦАПам повышенные требования по КНИ, С/Ш и ДД. Сами прикиньте. Например, мидбас и СЧ полосы расфильтрованы на 800 Гц третьими порядками, т.е. 18 дБ на октаву, что более чем типично. Т.е. на частоте 400 Гц СЧ ЦАП будет играть заметно тише, но слышно, как и мидбас ЦАП на 1600 - и не на пике своих цаповых возможностей, с потерей нескольких бит...
Поэтому, никаких мультибитников. Сам сейчас ищу подрядчика, кто бы сделал мне 10 канальный ЦАП на 10 шт АК4499. Покопал тему современных многоканальных студийных интерфейсов. Почему то ни в каких ценовых категориях нет топовых микросхем ЦАП. Есть ES9016, но нет ES9018. Есть АК4413 или 4414, но нет АК 4490, 4493, 4497, 4499.
Нет оптического входа, поддерживающего 10 каналов на верхних частотах сэмплирования.
Хотите в цифрокроссоверное царство - придётся отказаться от миниатюрных решений.
 

Вложения

  • АС + боковой ДШ.jpg
    АС + боковой ДШ.jpg
    221,7 KB · Просмотры: 150
  • АС.jpg
    АС.jpg
    232,8 KB · Просмотры: 163
  • Тыл.jpg
    Тыл.jpg
    225,7 KB · Просмотры: 142
  • усилители.jpg
    усилители.jpg
    429,7 KB · Просмотры: 146
Последнее редактирование:
  • Like
Реакции: wolfire
Если FIR написан в 64 битах и в виде прямой свёртки, т.е. без преобразования Фурье, то для 8 каналов 44100 на четырёхядерном I7 7700K, слегка разогнанном, тянется около 40 килотаппс, т.е. длина свёртки чуть менее 1 секунды, а надо бы больше... На 96000 около 27 килотапс, т.е. всего 280 мС... На 192000 совсем мало - 14 килотаппс, т.е. всего 60 мС...
Пока что STR FIR мне встречался только в Дефонике.

Интересно было бы что то типа Дефоники, т.е. 64 битное, с прямой свёрткой. Но под Линукс, с поддержкой видеокарт. Тогда можно задействовать мощный майнинговый комп, и ввалить длину свёртки.
 
Последнее редактирование:
@интэрмодулятор,
64 бит для фиров не нужно, это ж не рекурсия с накоплением ошибки.
и всё равно не нужен майнинговый комп:
на примере у человека 9500GT, это в пике 134 GFLOPS
для сравнения 1050 - в пике 2138 GFLOPS
 
В "Дефонике" перехожу с прямой свёртки на ФФТ, не меняя число таппс, - загрузка проца падает раз в 10...
Сколько таппс использует товарищ?
Сколько каналов?
Что за пресет, насколько мс он откручивает ГВЗ внизу?
Даже такие, казалось бы, профессиональные крепкие решения, как DEQX или Trinnоv, пока что несерьёзные, именно из-за малых вычислительных ресурсов и неспособности тянуть длинную свёртку без ФФТ.
 

Сейчас просматривают