[PL] DSP 2017 – Ocean dźwięku

Czy kiedykolwiek zastanawialiście się jaki kolor ma Twoja ulubiona piosenka? Jak wygląda Twój głos kiedy ją sobie nucisz pod nosem? Z lekcji fizyki możecie pamiętać, że dźwięk jest falą, która rozchodzi się w powietrzu, a że takich fal jest wokół nas sporo, możemy powiedzieć, że jesteśmy zanurzeni w oceanie – oceanie dźwięku.

Okej, dość tego enigmatycznego wstępu, przejdźmy do konkretów! Ocean dźwięku to mój pomysł na tegoroczną edycję konkursu Daj się poznać. O co w tym wszystkim chodzi? Przez najbliższe 10 tygodni, będę tu opisywać swoją pracę nad projektem (minimum dwa posty tygodniowo), więc będzie się działo! Na tym blogu znajdziecie również projekt Pawła – Aggregator. W skrócie: ekipa Polarbits zamienia się w full time blogerów i przejmuje internet 😉

Kim jestem?

Cześć! Z tej strony Maciek Korsan i jeśli wierzyć mojej biografii na twitterze to jestem 29-letnim frontend developerem z głową pełną pomysłów oraz właścicielem Sokoła Millenium (na razie z Lego…). Na codzień współtworzę białostocką firmę polarbits (na której to blogu jesteś właśnie gościem), po godzinach udzielam się w lokalnych społecznościach programistycznych jako fotograf oraz czasem występuję w roli prelegenta.

Czym jest Ocean dźwięku?

Mój projekt będzie analizować w czasie rzeczywistym dźwięk z mikrofonu i wyświetlać odpowiednią wizualizację za pomocą projektora. Oprócz analizy wysokości dźwięku chciałbym w swoim programie wykorzystać algorytm wykrywania emocji, dzięki czemu otrzymany wynik będzie bardziej atrakcyjny. Możliwe, że brzmi to dość banalnie, jednak moje przeczucie i pierwszy research podpowiadają mi, że szykuję się niezła przeprawa. Całość mam zamiar oprzeć na początku o Pythona oraz OpenGL. Maszyną docelową ma być Raspberry Pi, ale na ten moment nie wiem, czy wystarczy mojej płytce wystarczająco mocy obliczeniowej, więc zacznę budowanie na swoim sześcioletnim macbooku pro 😉

Plan działania

Wychodzę z założenia, że każdy projekt warto dobrze zaplanować. Poniżej znajdziecie mój wstępny plan działania na najbliższe tygodnie.

  1. Szkielet aplikacji
  2. Wyświetlanie obrazu za pomocą OpenGL (kolory)
  3. Dynamiczne generowanie brył w OpenGL
  4. Analiza dźwięku w Pythonie
  5. Połączenie dźwięku z obrazem
  6. Implementacja algorytmu wykrywającego emocję (np. EmoVoice)
  7. Stworzenie atrakcyjnej wizualizacji
  8. Próba przeniesienia programu na Raspberry Pi
  9. Serwo-generator fal *
  10. Budowa namiotu oraz stworzenie wideo *

Trzymajcie kciuki – będzie się działo!




  • Muszę przyznać że pomysł pobudza wyobraźnię, taką normalną, programistyczno-algorytmiczną 😉 Przypominają mi się wizualizacje do Winampa sprzed lat. Ciekawe czy mniej więcej tego typu efekt próbujesz osiągnąć, czy masz na myśli coś jeszcze innego. W każdym razie powodzenia i fajnie będzie projekt zobaczyć w działaniu.

    • Maciej Korsan

      będzie można i zobaczyć, i odpalić u siebie 😉

  • Jakub Skałecki

    A nie myślałeś żeby spróbować zrobić to w WebGL? Biblioteka Three.js jest super do takich zastosowań, a mógłbyś uruchomić to od razu na stronie.

    • Maciej Korsan

      znam WebGL i three.js 🙂 Problem jest taki, że analizę dźwięku będę wykonywać na źródle rzeczywistym (mikrofonie), więc nie chciałbym robić tego w przeglądarce. Na codzień siedzę w webowych technologiach, chciałem zrobić coś bardziej desktopowego + odpalenie tego na raspberry pi wymaga ode mnie oszczędzania zasobów, a żeby odpalić coś w three.js muszę uruchomić przeglądarkę, która ledwo dawała sobie rade z prostymi cssowymi transformacjami 🙂

      • Jakub Skałecki

        Ok, w takim razie rzeczywiście webGL nie ma sensu 🙂

        • Maciej Korsan

          ale kto wie, może to później przeportuję 😉