Kategoria

quick_project

quick_project :: Fourier Transform

Dla niewtajemniczonych: na początku tego miesiąca zapowiedziałem coś co nazwałem „wyzwaniami wakacyjnymi”, „summer challenge”, w których miałem zajmować się przez krótszy okres czasu jakimś projektem (i tylko nim także nie macie co liczyć na wpisy ode mnie, chyba że wcześniej jakieś przygotowałem).

 

Opis projektu


Pierwszym projektem, a raczej zagadnieniem jakim się zajmę będzie Transformata Fouriera, którą chciałbym wykorzystać do wykrywania bitów i stworzenia czegoś analogicznego do tradycyjnego spektrum, lecz własnego.

Cel główny: generowanie „mojego” spektrum.

Cele poboczne:

  1. Jak najmniejsza ilość zewnętrznych bibliotek / gotowego kodu (przy jak największej wydajności).
  2. Generowanie tradycyjnego spektrum.
  3. Możliwość dużej customizacji generowanego spektrum.
  4. Podłączenie napisanej biblioteki pod Arduino (AWM).

 

Informacje o projekcie będę aktualizował codziennie (a przynajmniej taki jest plan) w tym wpisie poniżej (będę Was informował o aktualizacjach na Twitterze), na koniec zmontuję jakiś film opowiadający o tym co zrobiłem, jak działa, dlaczego etc. Później możecie spodziewać się artykułów dotyczących FFT, wykrywania bitów, itd (zobaczymy ile uda mi się zrobić).

Życzcie mi powodzenia…

@EDIT: Zmieniłem częściowo zasady i nie robię już tego na czas, a bardziej na luzie, niestety ciężko jest wygospodarować cały tydzień na jeden projekt. Dlatego będę się nim zajmował równolegle z innymi projektami.

Code ON!

 

Log


 

Dzień 1

Pierwsze 24h minęły mi na ujarzmianiu bibliotek do konwersji audio mp3, jak się okazało pierwotnie programiści nie mieli w zwyczaju zostawiać ładnych, czytelnych dokumentacji z przykładami, ba dobrze jeżeli jakaś dokumentacja w ogóle jest. Niestety muszę pracować na starszych bibliotekach jeżeli chcę pobawić się tym w c/c++ a ich użycie jest bardzo często niepotrzebnie skomplikowane (i ta wszechobecna miłość do wsadzania wszędzie wskaźników). Moje dzisiejsze największe osiągnięcie to wyciągnięcie informacji o danym audio (bitrate, ilość kanałów, etc) oraz odtworzenie go, jutro mam nadzieję ruszyć z większymi konkretami.

 

Dzień 2

Generalnie męczenie z biblioteką, dokumentacje są niezupełne, a jak są to często nieaktualne (nowa wersja nie jest kompatybilna wstecz), z tego powodu jeszcze próbowałem kombinować i częściowo poniosłem sukces, częściowo poległem.

 

Dzień 3

Zdecydowałem się na starszą wersję biblioteki i wbrew temu co pisali autorzy działa (nie wszystko poprawnie, ale to na czym najbardziej mi zależy działa względne poprawnie). Udało mi się wygenerować pierwsze spektrum, następnie cały kod z maina opakowałem w klasę. Postanowiłem do samej wizualizacji użyć SFML’a (tymczasowo).

Poniżej widzicie (nieznormalizowane) 64 sample wygenerowane przy użyciu okna Hamminga.

hamming
Hamming Window

 

Dzień 4

Dodanie do frameworka łatwej manipulacji okien jakie się pobiera, są dostępne: Rectangle, Triangle, Hamming, Hanning, Blackman, Blackman-Harris.