logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

equalizer na FIR lub IIR

And! 31 Paź 2005 20:39 4451 5
  • #1 1944492
    And!
    Admin grupy Projektowanie
    Zwykle spotykam się z programami liczącymi współczynniki dla filtrów FIR lub IIR dolno,górno,lub pasmowo przepustowych.

    Cz jest sposób na takie dobieranie współczynników aby uzyskać equalizer ?
    Dodatkowy problem to liczenie współczynników na bierząco... dla ustaień EQ...
  • Pomocny post
    #2 1973890
    shg
    Poziom 35  
    dla eqalizera stosujesz filtry pasmowoprzepustowe.
    typowo zaczyna sie od 1khz i mnozy [w gore], lub dzieli [w dol] czestotliwosci kolejnych pasm przez ta sama liczbe. a liczba ta zalezy od pozadanej ilosci pasm. typowo [nawet jest na to jakas norma iso ;] stosuje sie odstepy pomiedzy czestotliwosciami 1 oktawa, czyli od 1khz w gore bedzie 2 khz, 4 khz, 8 khz i 16 khz, a w dol 500hz, 250 hz, 125 hz i 62.5hz
    1 oktawa sklada sie z 12 poltonow, kazdy polton w gore to pomnozenie czestotliwosci poprzedniego przez 2^(1/12), wobec tego dla odstepow oktawowych mnozysz [lub dzielisz] czestotliwosci przez 2^(12/12) [12 poltonow - cala kotawa]
    dla odstepow pol oktawy mnozysz/dzielisz przez 2^(6/12) [6 poltonow = 1/2 oktawy]
    dla equalizera z odstepami pol oktawy czestotliwosci wynosza 1khz, 1.41khz, 2khz, 2.83khz itd.

    drugi parametr to dobroc - dobiera sie ja tak, aby charakterystyki sasiednich pasm przecinaly sie w punktach, gdzie tlumienie wynosi 3db.
    nie pamietam dokladnie, jak to wygladalo, ale dla odstepow 1 oktawy dobroci wszystkich filtrow wynosza 0.5, dla odstepow 1/2 oktawy 0.25 itd.

    algorytmy wyliczania wspolczynnikow dla filtrow iir:
    http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

    o i jeszcze jedna wazna rzecz - dla najnizszej czestotliwosci ma byc filtr dolnoprzepustowy, a dla najwyzszej - gornoprzepustowy.

    a na fir jest powiedzmy prosciej, bo wystarczy [doslownie] narysowac charakterystyke czestotliwosciowa filtru i potraktowac ja odwrotna transformata fouriera. w efekcie otrzymasz odpowiedz impulsowa filtru, ktora nadaje sie do bezposredniego uzycia jako kernel fira.

    no i rownie wazne - pamietaj, zeby nie uwzgledniac filtru powiedzmy 16khz, jezeli czestotliwosc probkowania jest nizsza od 32 khz. w winampie zdaje sie o tym zapomnieli [albo co innego skaszanili] i mialem juz przypadki, ze z equalizera robil sie generator. zreszta ten winampowy equalizer jest fatalny i w zadnym wypadku nie mozna sie na nim wzorowac. poza tym, jezeli czestotliwosc probkowania ulegnie zmianie [np zmiana utworu], to wspolczynniki filtru nalezy oczywiiscie przeliczyc od nowa.

    sorki za brak duzych/polskich liter, ale z powodu awarii klawiatury nie da rady, a klawiatura ekranowa suxxx ;]
  • #3 1975965
    And!
    Admin grupy Projektowanie
    Dziękuję bardzo za podpowiedź.
    Zrobiłem następujący test:
    1. W tablicy 32-elementowej umieszczam wartości "prążków"
    2. Robię IDFT dla tej tablicy, otrzymane wartości traktuję jako współczynniki dla 32 ogniwowego filtru FIR.
    3. Przepuszczam WAV przez ten filtr,
    działa doskonale, tzn wpisując wartości na kolejnych pozycjach początkowej tabeli kształtuję wyjściowe widmo sygnału.

    Jedyne co pozostaje to wyczucie tych początkowych wartości aby nie było przesterowań (trzasków) , jednym słowem pozostaje skorelowanie skali zmian w tablicy z pożądanymi wartościami wyjściowymi.
  • Pomocny post
    #4 1999493
    shg
    Poziom 35  
    W zasadzie z przesterowaniem problemu nie ma, bo teoretycznie wystarczy zrobić tak, żeby najwyższy prążek miał amplitudę równą 1. Czyli zamiast wzmacniać jeden prążek należy tłumić pozostałe. No i to tyle teorii :] Trzeba jeszcze tylko zwrócić uwagę, na to, czy wartości po transformacie trzeba przeskalować, czy nie.

    Można też to zrobić nieco inaczej, ale to już będzie raczej mocno "przekombinowane". A chodzi o to, że widmo większości naturalnych sygnałów (w tym również muzyki, ale raczej nie elektronicznej, czy tekkno) z grubsza odpowiada widmu szumu różowego. Wynika stąd wniosek, że amplituda składowych o wyższych częstotliwościach jest niższa niż skłądowych o niskich częstotliwościach. Wydawać by się mogło, że wobec tego składowe te można "bezkarnie" wzmocnić, ale tak nie jest... Cały myk polega na tym, że można je wzmacniać tylko wtedy, gdy chwilowa amplituda składowych o niższych częstotliwościach jest niska tzn. w okolicy miejsc zerowych odpowiadających im funkcji falowych :]. No ale nie można ich wzmacniać w okolicach maksimów tych funkcji, bo będziemy mieli przesterowany sygnał. No to może by tak stłumić nieco te niższe częstotliwości? A no można... A żeby jeszcze bardziej skomplikować, to można zrobić dynamiczne tłumienie, tzn. po pojawieniu się składowej o niskiej częstotliwości nie tłumić jej przez chwilę i nie wzmacniać składowych o wyższych częstotliwościach. I jak tak jeszcze trochę zamieszamy, to dojdziemy do czegoś, co nie wiem, jak się nazywa, ale stanowi połączenie kompresora dynamiki i equalizera - taki equalizer z kompresorem w każdym pasmie, używają tego w stacjach radiowych. No ale nie ma co sobie tym głowy zawracać, bo to w sumie bardziej kompresor niż equalizer.

    Z equalizerami na FIR jest taki dość nieprzyjemny problem - obliczenie (nie narysowanie) kształtu widma jest nieco bardziej skomplikowane, bo nie ma tu takiej dowolności w wyborze częstotliwości jak w filtrach IIR.
    Ideałem było by "narysowanie" (obliczenie) transmitancji każdego z filtrów z osobna w domenie częstotliwości, najlepiej odrazu sumaryczną charakterystykę wszystkich. No ale to i tak nie zapewni możliwości dowolnego wyboru częstotliwości środkowych, a tylko jakieś lepsze przybliżenie charakterystyki "idealnego" equalizera.
    Oczywiście jest na to prosty sposób - zwiększyć długość kernela filtru, no ale moc obliczeniowa piechotą nie chodzi :P

    Rzecz numeros dos - filtr FIR jest nawet niezłym rozwiązaniem, bo jest bezwarunkowo stabilny i nie trzeba się martwić o konieczność nieuwzględniania wyższych częsotliwości (pasm) dla niższej częstotliwości próbkowania. A dla filtrów IIR z kolei trzeba zostawić jeszcze jakiś margines górnych częstotliwości, chodzi o to, że filtr górnoprzepustowy zaprojektowany powiedzmy na 16kHz przy częstotliwości próbkowania powiedzmy 32004Hz działać nie będzie (no właściwie to będzie, ale nie tak jak powinien :] ), taki dość ekstremalny przypadek to był, ale margines jest znacznie większy niż te 4Hz ;]. W zasadzie im dalej (w dół oczywiście ;]) od częstotliwości Nyquista, tym lepiej, niestety nie jestem w stanie powiedzieć jak duży margines trzeba zachować, ale można to stwierdzić eksperymentalnie.
  • #5 1999732
    And!
    Admin grupy Projektowanie
    Dzięki za wyczerpujące odpowiedzi.
    Niebawem eksperymentów ciąg dalszy.
    Pozostanę przy FIR ze względu na stabilność.
    Docelowo chcę połączyć FFT z FIR i:
    -wzmacniać częstotliwości w pasmach według wcześniej określonego modelu
    -robić FFT sygnału wejściowego i przy przekraczaniu przez pewne częstotliwości, wartości progowych mocy modyfikować współczynniki dla nich w FIR.
  • Pomocny post
    #6 2039338
    limerro
    Poziom 14  
    Algorytm designu konwencjonalnego graficznego equalizera:
    f1, f2 - czestotliwosci graniczne -3dB
    fs- czestotliwosc probkowania

    1. Wybierz liczbe oktaw projektowanego equalizera: np. N=1 oktawa. Oblicz czestotliwosci srodkowe ISO (ISO frequencies) z rownania f2=2^N*f1=2*f1 zaczynajac od 1 kHz. W ten sposob otrzymujemy: 31 Hz, 62 Hz, 125 Hz, 250 Hz, 500 Hz, 1 kHz, 2 kHz, 4 kHz, 8 kHz, 16 kHz.

    2. Wybierz wartosc Q equalizera z tabeli zaleznosci miedzy pasmem equalizera BW a parametrem Q:

    BW [oktawy]________Q
    2.0______________0.667
    1.0______________1.414
    2/3______________2.145
    1/2______________2.871
    1/3______________4.318
    1/6______________8.651
    1/10_____________14.424
    1/30_____________143.280

    Przy czym wartosci Q>4 nie sa zalecane dla filtrow audio. W naszym przypadku dla N=1 oktawy wartosc Q wynosi 1.414.

    3. Obliczamy czestotliwosci graniczne -3dB f1 i f2:
    f1=f0/Q(2^N-1) => f1=f0/Q=1000/1.414=707.21 Hz
    f2=f0/Q(1-1/2^N) => f2=2f0/Q=2*1000/1.414=1414.43 Hz

    4. Projektujesz filtr dla danych czestotliwosci - najlepiej IIR Butterwortha drugiego rzedu - analogia do tradycyjnych analogowych equalizerow.

    5. Wybierasz wartosc wzmocnienia i tlumienia w dB - typowo +-12dB.
REKLAMA