logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.
REKLAMA
  • #1 4007774
    wasyl85
    Poziom 1  
    Witam drogich forumowiczów:)
    Wlasnie jestem w trakcie robienia equalizera w C++ do plikow *.wav. Oto co juz mam i dziala:
    1. czytanie z wejscia liniowego dzwieku
    2. wyswietlanie na ekran przebiegu w czasie
    3. zapisywanie do bufora
    4. wyrzucanie na wyjscie

    Do zrobnienia equalizera zaczalem myslec o fft:
    1
    a) mam bufor probek 1024
    b) licze fft o rozdzielczosci tez 1024 i otrzymuje 1024 prazki czyli dwie tablice: jedna to czesc rzeczywista, druga urojona
    c) licze sobie amplitude i faze z tych liczb, mam informacje o poszczegolnych prazkach i skladowych
    d) wybieram sobie przedzial powiedzmy od 10 do 20 prazka, biore amplitudy z tego przedzialu i je podwyzszam(wymnazam przez jakis wspolczynnik)
    e) za pomoca tak otrzymanej amplitudy i fazy spowrotem wyliczam czesc rzeczywista i urojona
    f) licze odwrotne fft z calosci
    g) wyrzucam na wyjscie
    Czy dobrze to rozumiem, moze pominalem jakas kwestie?
    ogolnie rzecz biorac powiedzmy ze to jakos dziala, ale pojawiaja sie male trzaski, przerwy w dzwieku, takie jakby "cykanie". Czy to jest spowodowane duzo iloscia obliczen? Moze powininem uzyc jakis f-cji okienkujacych? Tylko jak je zaimplementowac?


    2. Moze zamiast zabawy w fft, zastosowac filtry FIR, o ktorych juz tutaj troche czytalem, ale nasuwa sie kolejne pytanie. Jak w takim razie przepuscic takie probki przez filtr. Załóżmy, ze mam jakis filtr gornoprzepustowy o danej transmitancji: H(z). W jaki sposob to zaimplemetowac, mam mnozyc probki przez transmitancje?

    pozdrawiam i z gory dziekuje za wszelka pomoc:)
  • REKLAMA
  • #2 4008441
    Xitami
    Poziom 29  
    Tak w dwu słowach odpowiedzieć się nie da.
    Od strony matematyki (prostej) i algorytmów DSP (też w końcu dość prostych) odpowiedzi na swoje pytania znajdziesz np. w www.dspguide.com, jest już tłumaczenie (Nadachowski). Doskonała pozycja na początek.
    Pojawią się jeszcze problem z implementacją (gadanie ze sprzętem, ciągłość w czasie), pewnie nie zrobisz tego lepiej niż to, co można znaleźć w sieci, jakieś gotowce, które załatwią wszystkie problemy i ukryją szczegóły. Uważam jednak, że pobawienie się z tym samemu będzie dobrą szkołą. Na początek nie w czasie rzeczywistym, pliki *.wav mają prostą budowę (no nie do końca), prostą gdy wybierzesz jaki konkretny wariant, np. taki w którym zapisywał będzie rejestrator dźwięków (upewnij się że będą to gołe, nie kompresowane nijak próbki), najlepiej MONO.
    Problemów jest jak widzisz wiele (w końcu to rynek zastosowań wart jest miliardy dolarów :-)
    Pomniejsze trudności łatwo opanować w parę dni, po to by zająć się konkretami DSP.
    Uważam, że bez odrobiny matematyki, napisania iluś tam pętelek FOR (choćby i w Basic'u) nie da się problemu zrozumieć, wykorzystać i zadawać "mądre" pytania.

    To nie reklama, ale pierwszy link który znalazłem:
    CYFROWE PRZETWARZANIE SYGNAŁÓW.
    Praktyczny poradnik dla inżynierów i naukowców - Steven W. Smith

    (no dobra, reklama, ale nie wydawnictwa tylko książki)

    Dobry "gotowiec" to chyba BASS.
REKLAMA