Projektowanie filtrów FIR - FIR Designer (cz. IV)

2019-07-23
Projektowanie filtrów FIR - FIR Designer (cz. IV)

W listopadowym numerze z ubiegłego roku (LSI 11/2018) omawialiśmy jak zaprojektować filtr FIR za pomocą darmowego oprogramowania rePhase. Obiecałem wtedy, że przyjrzymy się też innym narzędziom służącym do tego, a obietnic trzeba dotrzymywać. Dlatego też w tym numerze omówimy sobie – oczywiście w skrócie – jak wygląda projektowanie filtrów FIR za pomocą, niestety już nie darmowego, oprogramowania

FIR DESIGNER

Jak pracuje się z programem FIR Designer prześledzimy na przykładzie „poprawienia” charakterystyki przykładowego dwudrożnego zestawu głośnikowego z przetwornikiem 12-calowym. Tak jak to miało miejsce w programie rePhase, gdy tam próbowaliśmy „naprawić” charakterystykę zestawu głośnikowego, w pierwszym kroku musimy tę charakterystykę zaimportować do programu (zakładamy, że już ją mamy, wcześniej dokonując odpowiedniego pomiaru). I tu już ujawnia się pierwsza wyższość FIR Designera nad rePhase – w tym drugim charakterystykę możemy zaimportować tylko z pliku tekstowego (.txt) lub o rozszerzeniu .frd. Natomiast FIR Designer dopuszcza załadowanie charakterystyki w kilku (konkretnie 10) formatach – od tekstowego poczynając, poprzez własne formaty programów m.in. SMAART, EASERA, SusTune, na pliku .wav kończąc (czyli po prostu charakterystyce impulsowej, z której program oblicza charakterystykę amplitudową i fazową).

Charakterystykę wczytujemy korzystając z zakładki

IMPORT

wciskając znajdujący się po lewej stronie przycisk Load. Generalnie zakładka Import służy do załadowania pomiaru i dostosowania jego opóźnienia czasowego, wynikającego z różnic czasu dotarcia sygnału zbieranego przez mikrofon pomiarowy i bezpośrednio „po kablu”, w celu uzyskania maksymalnie płaskiej fazy. Wczytany pomiar nie jest bowiem wyrównany w czasie, więc na górnym wykresie zobaczymy znaczące zawinięcia fazowe (faza w kolorze czerwonym, amplituda na granatowo – ilustracja 1).

(rys. 1)

Aby skompensować to opóźnienie czasowe wystarczy wcisnąć znajdujący się z lewej strony u dołu przycisk „Find Peak”. Program znajdzie najwyższą wartość (peak) na charakterystyce impulsowej i ustawi go w pozycji t=0. Dzięki temu charakterystyka fazowa zacznie wyglądać znacznie bardziej czytelnie (ilustracja 2). W naszym przypadku widać też (na charakterystyce impulsowej, czyli dolnej), że driver jest przesunięty w stosunku do woofera niskotonowego (co wynika z większej głębokości tuby niż kosza przetwornika niskotonowego), a to powoduje różnice w czasie dotarcia do mikrofonu sygnału niskotonowego (mała „rozlazła” górka) i wysokotonowego (ostry „zygzak”). Po wyrównaniu do wartości szczytowej (czyli najwyższej wartości „zygzaka”), pomiar ma większą część charakterystyki fazowej w okolicy 180 stopni. Mamy dwie opcje jak uczynić naszą charakterystykę bardziej użyteczną.

(rys. 2)

Po pierwsze możemy użyć suwaka „Delay” lub znajdujących się pod nim przycisków „+” i „–”, by przesunąć odpowiedź impulsową tak, aby szczyt pierwszej „górki” (tej rozlazłej) znalazł się na osi czasu w punkcie 0. To wyrównuje odpowiedź impulsową do górnego zakresu częstotliwości przetwornika LF, jednak opóźnienie sygnału drivera HF i wynikające z tego zawijanie fazy są trudne do skorygowania filtrem FIR (ilustracja 3).

(rys. 3)

Druga metoda – znacznie prostsza – polega na odwróceniu polaryzacji sygnału (klikamy w małe okienko obok „Flip polarity”), a następnie wciśnięciu przycisku „Find Peak” (ilustracja 4).

(rys. 4)

W kolejnym kroku przechodzimy do zakładki

TARGET

Tutaj możemy określić przebieg amplitudy i fazy, jaką chcielibyśmy, aby miał korygowany za pomocą filtru FIR głośnik. Przebieg naszej docelowej charakterystyki możemy uzyskać na 4 sposoby (4 zakładki z lewej strony obok górnego wykresu – ilustracja 5). Pierwszy, domyślny, to kształt krzywej docelowej (zakładka „Curve”), tworzonej za pomocą półkowego filtru niskich częstotliwości (możemy podbić lub stłumić zakres najniższych częstotliwości) oraz dowolnej liczby punktów, od których krzywa „zagina” się (w górę lub w dół) z zadanym nachyleniem (w dB/okt). W tej zakładce założeniem jest, że faza będzie płaska.

(rys. 5)

Drugi sposób to stworzenie tejże krzywej za pomocą znanych z korektorów filtrów – parametrycznych pasmowo-przepustowych, półkowych, górno- i dolnoprzepustowych (różnego typu) – o regulowanej częstotliwości, szerokości pasma i podbiciu/stłumieniu. Przy czym filtry te mogą być minimalnofazowe, o liniowej fazie i o fazie będącej odwrotnością minimalnofazowych (maksymalnofazowych). To samo tyczy się charakterystyki fazowej, którą z kolei możemy kształtować za pomocą filtrów wszechprzepustowych 1., 2. lub 4. rzędu, z regulacją częstotliwości i szerokości pasma.

Wreszcie czwarty sposób polega na wczytaniu charakterystyki (w różnych formatach, jak w zakładce „Import”) urządzenia głośnikowego, którą chcemy użyć jako nasz „target”, czyli – mówiąc krótko – urządzenia, do którego chcemy brzmieniowo upodobnić korygowany przez nas zestaw głośnikowy. Wszystkich tych czterech sposobów można użyć równocześnie (ale też można skorzystać tylko z jednego), z czego uzyskujemy wynikową charakterystykę docelową, która jest prezentowana na dolnym wykresie.  
Kolejny krok wymaga wybrania zakładki

MAGNITUDE ADJUST

W tym miejscu możemy wykorzystać popularne typy filtrów, takie jak parametryczne pasmowo-przepustowe, półkowe oraz dolno- i górnoprzepustowe (znów kilku rodzajów), aby ukształtować charakterystykę amplitudową głośnika. Niebieska linia na górnym wykresie (ilustracja 6) jest odwróconą (odbitą względem osi X) charakterystyką głośnika z zakładki „Import”, z dodaną charakterystyką docelową (z zakładki „Target”). Naszym celem jest – korzystając z dowolnej liczby wirtualnych filtrów po lewej stronie – takie ukształtowanie charakterystyki filtru korekcyjnego FIR (linia zielona), aby była ona jak najbardziej zbliżona do jasnoniebieskiej linii. Żeby łatwiej było dopasować te dwie krzywe, można wykres przesuwać w górę lub w dół za pomocą suwaka z prawej strony (w naszym przypadku, jak widać, musieliśmy z nim zjechać co nieco w dół).

(rys. 6)

W przykładzie zostały użyte tylko trzy filtry, aby „zbliżyć” do siebie obie charakterystyki. Można oczywiście skorzystać z większej liczby filtrów, ale wyrównywanie mniejszych „górek” i „dołków” zostawimy sobie na później (skorzystamy z zakładki „FIR: Auto Mag”). Dwie czerwone linie na dolnym wykresie pokazują fazę głośnika, przed (cienka) i po zastosowaniu filtru korekcyjnego FIR (gruba linia). Filtry, z których korzystamy do kształtowania charakterystyki amplitudowej naszego FIR-a mogą być filtrami minimalnofazowymi (jak w zwykłych filtrach analogowych lub cyfrowych typu IIR), z fazą liniową lub fazą maksymalną. Warto zauważyć wpływ wyboru rodzaju filtru na fazę (dolny wykres), co powoduje, że krzywa fazy dąży do fazy docelowej. W tym przykładzie faza docelowa jest płaska.

PHASE ADJUST

Kiedy już „z grubsza” dopracujemy przebieg charakterystyki amplitudowej, możemy zabrać się za fazę. W tym celu w zakładce „Phase Adjust” możemy wykorzystać wirtualne filtry wszechprzepustowe (all-pass) do kształtowania fazy głośnika (ilustracja 7). Cienka czerwona linia na górnym wykresie to faza głośnika, po przefiltrowaniu za pomocą filtrów z poprzedniej zakładki, a następnie odwróceniu i dodaniu fazy docelowej (pamiętajmy, że w tym przykładzie faza docelowa – z zakładki „Target” – jest płaska).

(rys. 7)

W naszym przykładzie widzimy obrócenie fazy o 360 stopni, za co odpowiada zwrotnica. Naszym celem jest, korzystając z wirtualnych filtrów fazowych po lewej stronie, stworzenie filtru FIR (linia zielona), który będzie miał „z grubsza” taki przebieg, jak krzywa  czerwona. W naszym przykładzie użyto czterech filtrów, aby w przybliżeniu dopasować górny wykres pomiędzy 100 Hz i 10 kHz, a zatem przesunąć fazę bliżej fazy docelowej. Bardziej dokładnego „wyprostowania” fazy dokonamy później w zakładce „FIR: Auto Phase”. Najpierw jednak zabierzemy się za „prostowanie” charakterystyki amplitudowej, w tym celu przechodzimy do zakładki

FIR: AUTO MAG

Ponownie jasnoniebieska linia na górnym wykresie jest charakterystyką głośnika po przefiltrowaniu w poprzednich zakładkach, a następnie odwróceniu i dodaniu odpowiedzi docelowej. W tej zakładce FIR Designer może obliczyć złożony filtr FIR, aby automatycznie podążał za jasnoniebieską linią w wybranym zakresie częstotliwości. Trzeba przesunąć wirtualny suwak „Zero Adjust”, aby zbliżyć jasnoniebieską linię do 0 dB, przy około 60 Hz i 16 kHz. Następnie wybieramy ile pasm będzie analizowane niezależnie i z jakim wygładzaniem (ilustracja 8). W przypadku mniejszych, mniej gwałtownych „zawirowań” na charakterystyce można to zrobić za pomocą jednego filtru na całe pasmo (oczywiście sensownie dobrane, raczej nie 20 Hz-20 kHz), lepiej jednak podzielić jest go na co najmniej dwa podpasma – jedno dla zakresu niskich częstotliwości, z mniejszym wygładzeniem (co jest dość istotne, zwłaszcza w przypadku filtrów o mniejszej liczbie współczynników, które – jak wiemy z poprzednich odcinków – w zakresie najniższych częstotliwości mają małą rozdzielczość).

(rys. 8)

Tak też jest w naszym przykładzie, gdzie pasmo zostało podzielone na dwie części – pierwsze od ok. 60 Hz (gdzie wykres przecina 0) do 300 Hz, powyżej którego pojawiają się już bardziej gwałtowne zmiany charakterystyki, wymagające dokładniejszego wygładzania, niż 1/3, jakie wybraliśmy dla pierwszego pasma. Efekt działania takiego filtru można zaobserwować na dolnym wykresie (linia granatowa) – w postaci wynikowego przebiegu charakterystyki amplitudowej naszego zestawu głośnikowego. Teraz czas na zlinearyzowanie charakterystyki fazowej, czego dokonujemy w zakładce

FIR: AUTO PHASE

Cienka jasnoczerwona linia na górnym wykresie jest fazą głośnika, po odfiltrowaniu we wszystkich poprzednich zakładkach, a następnie odwróceniu i dodaniu fazy docelowej. Tutaj projektant FIR może stworzyć filtr fazowy, aby automatycznie podążał za jasnoczerwoną linią w wybranym zakresie częstotliwości. Tutaj również możemy wybrać kilka pasm, o różnym wygładzaniu (ilustracja 9).

(rys. 9)

W naszym przypadku – z uwagi na to, że charakterystyka fazowa jest stosunkowo wolnozmienna – wystarczy jedno pasmo, w zakresie od 75 Hz do 20 kHz (ewentualnie można ograniczyć się do 10 kHz, czyli do punktu, gdzie charakterystyka przecina oś 0). Jak widać efekt jest więcej niż zadowalający, co pokazuje grubsza czerwona linia na wykresie dolnym. W kolejnej zakładce – FIR: Voicing – możemy jeszcze dokonać finalnej korekcji, mającej np. na celu dostosowanie charakterystyki zestawu do konkretnego zastosowania, czy też warunków akustycznych nagłaśnianego obiektu. Dokonujemy tego za pomocą zestawu znanych już wirtualnych filtrów różnorakiego typu, znajdujących się na lewo od charakterystyki.

Wreszcie nadszedł czas na to, aby nasz filtr stał się faktem dokonanym. W tym celu musimy przejść do zakładki

EXPORT

Górny wykres w tej zakładce pokazuje filtr FIR na dwa sposoby. Ciemnozielona linia to wykres rzeczywistych współczynników, które zostaną wyeksportowane lub zapisane do pliku. Jaśniejsza zielona linia pokazuje bezwzględną wielkość tych współczynników, w dB. Idealny filtr, którego długość jest nieskończona, musi zostać przycięty za pomocą okna czasowego, aby był praktycznie użyteczny w procesorze. To okno pokazuje wykres narysowany cienką czerwoną linią (ilustracja 10).

(rys. 10)

Niższy wykres pokazuje zarówno filtr idealny (bez okna czasowego – linią cieńszą), jak i okienkowany (grubsza linia). Kolorem niebieskim pokazana jest charakterystyka amplitudowa, zaś czerwoną fazowa. W naszym przykładzie, przy domyślnym opóźnieniu wnoszonym przez filtr (u samej góry okna – Filter delay (samples)) wynoszącym 200 próbek i długości filtru (obok), czyli liczbie ogniw filtru (Filter lenght (samples)) wynoszącym 400 próbek istnieją duże różnice między filtrem idealnym i obciętym przez okno czasowe, zwłaszcza w pobliżu 100 Hz. Zmniejszenie różnic można uzyskać zwiększając długość filtru (a więc i opóźnienie) i/lub ewentualnie zmieniając rodzaj okna. Pomocny w tym może być ostatni, najniższy wykres (Total Error), który pokazuje rozbieżność, wyrażoną w dB, między charakterystyką idealną (nieokienkowaną), a obciętą oknem czasowym – osobno dla charakterystyki amplitudowej (tradycyjnie niebieska), osobno dla fazowej (czerwona). Im bardziej obie krzywe odbiegają od linii prostej, tym większa rozbieżność. Przykładowo zwiększając opóźnienie do 400 próbek i długość filtru do 1.600 próbek widzimy, że rozbieżności nie przekraczają 1 dB i 10 stopni (ilustracja 11).

(rys. 11)

Górny wykres może również pokazywać odpowiedź impulsową głośnika przed i po zastosowaniu zaprojektowanego filtru FIR (musimy zaznaczyć okienko „Show filtered speaker – Imp R” – ilustracja 12). Ponieważ w tym projekcie skupiono się na uzyskaniu płaskiego przebiegu fazy, większość energii powinna się skupić w jednym punkcie, aby uzyskać ostrzejszy impuls – co faktycznie widzimy na ilustracji 12 (linia zielona).

(rys. 12)

W przypadku naszego przykładu, zanim zapiszemy zaprojektowany filtr, musimy pamiętać, że w celu uzyskania przebiegu fazy w okolicy 0 stopni dokonaliśmy odwrócenia polaryzacji charakterystyki impulsowej (w zakładce „Import”). Musimy więc w zakładce „Export” zaznaczyć okienko „Invert filter polarity when saving” (ilustracja 13), a następnie w polu rozwijanym „Format” wybieramy żądany format pliku wyjściowego i klikamy „Save FIR”. Plik ten może być zapisany w kilku formatach, poczynając od tekstowego (z różnym rozkładem danych), poprzez CVS, binarny (16-, 24- i 32-bitowych stałoprzecinkowych i 32-bitowym zmiennoprzecinkowym), WAV (16-, 24- i 32-bitowych stałoprzecinkowych) na formatach własnych firm EV i Dynacorda (.gkf) oraz Linea Research (.sfi) kończąc.

(rys. 13)

W tym przykładzie zastosowano domyślną częstotliwość próbkowania projektu („Design sample rate”, u góry w lewym rogu) wynoszącą 48 kHz, jednak częstotliwość próbkowania można zmienić w dowolnym momencie. Zaimportowane pomiary i charakterystyki docelowe są przechowywane w ich natywnej częstości próbkowania i ponownie przepróbkowane (resample) do częstotliwości próbkowania projektu.  W naszym przypadku korekcji fazy dokonywaliśmy tylko w tym zakresie, który nie wymagał zbyt radykalnych działań. Duże przesunięcie fazy, w zasadzie obrócenie o 360 stopni, w okolicy 30 Hz również można zlinearyzować, za pomocą kombinacji filtrów w zakładce „FIR: Phase Adjust” i „FIR: Auto Phase”. Będzie to jednak wymagać większych ustawień długości (Filter lenght) i opóźnienia filtru (Filter delay).

To z grubsza tyle, ale nie koniec jeśli chodzi o program FIR Designer. W kolejnym odcinku zajmiemy się projektowaniem filtrów FIR, za pomocą tego oprogramowania, „od zera”.

Live Sound & Instalation Newsletter
Krótko i na temat, zawsze najświeższe informacje