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

HELP--Stworzenie aplikacji do filtracji dzwieku

zgubek 08 Sty 2005 14:51 3093 11
  • #1 1120486
    zgubek
    Poziom 11  
    Witam.Potrzebuje stworzyc aplikacje pokazujaca zastosowanie filtrow cyfrowych w filtracji dzwieku.
    Plan stworzenia takiej aplikacji mniej wiecej mialby wygladac nastepujaco:

    -stworzenie części umożliwiającej pracę z plikami typu WAV, tzn. wczytywanie i odtwarzanie
    -dodanie wykresu przebiegów czasowych
    -dodanie możliwości wyświetlenia widma sygnału
    -dodanie części realizującej liniowe filtry cyfrowe typu ARMA
    -dodanie modułu do projektowania wybranych filtrów np. dolnoprzepustowego, górno przepustowego, pasmowo przepustowego lub zaporowego

    Czy ktos ma moze cos podobnego, co moglo by mi posluzyc za baze, najlepiej w C++, a jesli nie to czy ktos wie jak stworzyc cos takiego najlepiej wlasnie w C++, oczywiscie nie za dziekuje.

    Pozdrawiam.
    Nie używaj dużych liter w tytule - REGULAMIN. [h]
  • Pomocny post
    #2 1121606
    h-doc
    Poziom 27  
    ho ho ho! Poważne zadanie! Moje sugestie i rady:
    - Czytanie wave'a z pliku jest stosunkowo proste, z tym nie będziesz miał większych problemów
    - Wyświetlanie jest już nieco bardziej złożonym zagadnieniem, choć jeśli API Windows nie ma przed Tobą tajemnic, to sprawa nie jest trudna
    - Aby wyświetlić widmo musisz je najpierw obliczyć. Tutaj już się trzeba trochę namęczyć. A bo to trzeba najpierw przyciąć sygnał, potem zokienkować no i w końcu obliczyć FFT. Na koniec zmienić współrzędne z prostokątnych na biegunowe i wyświetlić
    - Filtracja sama w sobie nie jest skomplikowana, również implementacja nie jest trudna (chociaż nie wiem co to filtry ARMA)
    - Moduł projektanta - no, z tym to też jest trochę zabawy. Widziałem projektanty pisany pod MathCadem i proste to to nie było.

    zacznij od przeczytania tego postu:
    https://www.elektroda.pl/rtvforum/topic71549.html

    a potem pisz z czym masz problemy.

    pozdro.
  • #3 1122231
    zgubek
    Poziom 11  
    No wlasnie czesc wczytujaca i odtwarzajaca pliki wave zrobilem, ale nie mam zielonego pojecia jak sie zabrac do czesci realizujacej filtry cyfrowe. :(
    Przekopalem od rana neta w poszukiwaniu jakiejs aplikacji bazowej, na podstawie ktorej moglbym to zrobic, ale niestety nic nie znalazlem i chyba bede musial sie wziac za napisanie tego od podstaw :|

    Post ktory mi podlinkowales niestety konczy sie w najciekawszym jak dla mnie momencie :roll:

    Moze ktos robil kiedys podobna aplikacje i ma na dysku?

    A moze w MathCadzie byla by prostsza sprawa z wykonaniem czegos takiego?Nie widzialem nigdy tego na oczy, ale czytalem ze sluzy on wlasnie do projektowania filtrow,tylko problem w tym ze nie znam tego ani wcale, wiec pozostaje tylko C++.

    Pozdrowa.
  • #4 1123522
    sieniaw
    Poziom 12  
    W Matchcadzie? to raczej nie możliwe. W matlabie tak i to nawet całkiem prosto. Większość z rzeczy o których mówiłeś jest zaimplementowana jako gotowe funkcje, nie musisz się martwić o przydzielanie i zwalnianie pamięci oraz, o to, czy funkcja dobrze oblicza. Wystarczy jedynie stworzyć interfejs GUI i skorzystać z gotowych funkcji: wavread, fft, plot, jeśli chodzi o filtry masz tutaj całą masę możliwości od prostych butter, elip, cheby1,2, do bardziej rozwiniętych fir2, yulewalk, prony, lpc ect.

    Jeśli nie masz podstawowej wiedzy na temat programowania i DSP, odpuściłbym sobie jakiekolwiek próby z C++. Po prostu, może Cię to przerosnąć.
  • #5 1123603
    zgubek
    Poziom 11  
    Chyba mnie przekonales, jednak i sprobuje sie zabrac do zrobienia tego w matlabie.
    W C++ jednak bedzie z tym duuuuuzo roboty, a jesli tam sa juz gotowe funkcje to roboty jest troche mniej.
    Szukam w takim razie matlaba do sciagniecia i zobacze jak to srodowisko w ogole wyglada.
    Pozdrowka.
  • #6 1124626
    tmpat
    Poziom 15  
    Nie chce powielać tematu dlatego dołączam się tutaj...

    Od jakiegoś czasu chodzi mi po głowie program do DFT sygnału z wejścia karty dźwiękowej lub z pliku WAV. O ile same obliczenia i przedstawienie wyników nie sprawi mi problemu to jest coś co nie daje mi spokoju.

    Chciałbym, żeby odgrywany plik, bądź przechwytywany sygnał z wejścia karty dźwiękowej w czasie rzeczywistym był analizowany a wszystko wyświetlane. I tu jest problem, jak to wszystko ze sobą połączyć, jak dokładnie pobierać te dane które aktualnie sa przechwytywane/odtwarzane??

    Zacząłem szukać wiadomości na temat DirectSound i może tędy drogą...

    Jeżeli ktoś ma jakieś sugestie to będę wdzięczny.

    POZDRAWIAM,
    patryk
  • #7 1124775
    h-doc
    Poziom 27  
    zgubek - filtracja raczej nie jest bardzo skomplikowaną procedurą. Zarówno filtry FIR jak i IIR daje się w prosty sposób zaimplementować w C++. Również bardziej skomplikowane filtracje, np. filtracja polifazowa, nie jest specjalnie skomplikowana. Zapodaj jakieś wzory to znajdziemy rozwiązanie.

    sieniaw - a niby czemu w MathCad to niemożliwe? Zrobiłem kodek MPEG audio pod MathCad, przy którym filtracja to banał.

    tmpat - trop jest dobry - użyj DirectX.
  • #8 1125397
    zgubek
    Poziom 11  
    Oki postaram sie wieczorkiem wrzucic wzorki.W sumie do tego to jest glowny wzor na przkeksztalcenie biliniowe, wieczorkiem postaram sie wrzucic wzorki, dzieki za zainteresowanie, kurcze jedni pisza ze w C++ ciezko, inni ze latwo, kurcze zglupiec mozna :lol:
    Pozdrowka.
  • #9 1125533
    sieniaw
    Poziom 12  
    Rzeczywiście mój błąd, nawet nie byem świadom, że do Mathcada wydano dodatek signal procesing :(

    Czyli, to jest kolejne narzędzi, które można wykorzystać, link do możliwości Mathcada tutaj http://www.mathcad.pl/signal.html
  • #10 1463063
    andrzej3210
    Poziom 11  
    witam
    mam podobny problem musze napisać program w języku Matlab filtrujący zadanym filtrem sygnał dźwiękowy (plik wawa) .Program powinien wyświetlać widmo sygnału przed i po filtracji.
    Niemam zielonego pojęcia jak się do tego zabrać , może zgromadziłeś jakieś ciekawe materiały którymi chciałbyś się podzielić zemną a może znasz kogoś kto by mi napisał taki program oczywiście nie za darmo.

    andrzej3210(_at_)tlen.pl
  • #11 1472628
    zgubek
    Poziom 11  
    Witam, ale ja to robie w C++, a to chyba inaczej ma sie do Matlaba, szczerze to nawet nigdy tego programu nie widzialem.Zrobilem zczytywanie danych z naglowka pliku wave i rysowanie przebiegu fali dzwiekowej, teraz biore sie za implementacje filtrow, ale filtracja w sumie nie jest jakims skomplikowanym zadaniem trzeba podstawic do wzorow parametry "wyciagniete" z pliku wave i wymnozyc przez okreslone we wzorze parametry.Jak chcesz to moge Ci wyslac klase, za pomoca ktorej zczytuje "dane" z pliku, ale nie wiem czy to Ci sie przyda, jak masz to zrobic w zupelnie innym programie, ale wydaje mi sie ze gdzies na forum byly wrzucone cale kody do Matlaba.
    Pozdrawiam.
  • #12 1475871
    kafar
    Poziom 15  
    Jezeli nie chcesz sie nameczyc to tylko Matlab z pakietem Simulink, praktycznie wszystko czego potrzebujesz tam jest, w dodatku w Matlabie rowniez mozna pisac w C. Szczegolnie w Visualu moga byc problemy z interfejsem wykresu
REKLAMA