Prosty wizualizer muzyczny

Dziś długo oczekiwany wizualizer bez MSGEQ7. Jak? Zapraszam do lektury!

Nie będę opowiadał wam całej historii, czemu ten post pojawia się tak późno, lepiej wyjaśni to mój FB oraz wpisy na Wykopowym mirko. No więc, przejdźmy do samej konstrukcji!

Do jej wykonania potrzebujemy:

  • 3x MOSFET N-Kanałowy (ja użyłem IRFZ44N)
  • 5x rezystor 100k
  • 3x rezystor 75R
  • 1x rezystor 10k
  • 2x żeńskie złącze miniJack (u mnie jedno jest ostro improwizowane, ale jest)
  • 1x taśma LED RGB ze wspólną anodą (może być i wspólna katoda, tylko wtedy podłączenie jest delikatnie inne)
  • Jakiś zasilacz 12V
  • Oczywiście Arduino 😀

Sam układ wygląda tak, jak na tym schemacie (nie bijcie, wiem że można to zrobić lepiej):

Untitled Sketch_bb

Prostota w nim zawarta mówi raczej sama za siebie, ale i tak wytłumaczę,o co tu chodzi:

Czerwone LEDy zastępują tu trzy katody taśmy led, której w Frizingu znaleźć nie mogłem. Podpinamy je do drenu trzech MOSFETów. Power Jack po prawej reprezentuje zasilanie 12 V. Lewy miniJack jest miniJackiem wejściowym, a prawy wyjściowym. Rezystory 100k są wykorzystywane do podciągania do masy/napięcia, a rezystory 75R ograniczają prąd bramek MOSFETów. Wydaje mi się, że wszystko. Proste, no nie?

Najważniejszy jest tu sam kod, który na podstawie sygnału audio generuje zmiany koloru taśmy:

Algorytm stojący za kodem jest prosty: bierzemy sygnał z pinu A0. Przez pierwsze 50 milisekund pobieramy górną i dolną granicę sygnału. Potem, w zmiennej peekToPeek zapisujemy średnią amplitudę sygnału. Jeżeli największa wartość średniej amplitudy (maxPeak) jest mniejsza od aktualnej, wtedy zwiększamy ją o 10%. Nazwałem tą operację poziomowaniem w górę, analogicznie do poziomowania w dół: kolejna instrukcja if liczy tak zwane małePróbki, czyli wszystkie średnie amplitudy, które są mniejsze niż 60% maxPeak. Gdy takich małych próbek jest więcej niż połowa wszystkich próbek, wtedy poziomujemy w dół, ustawiając maxPeak na 50% jej wartości. Dalej jest prosto, w zależności od średniej amplitudy próbki ustawiamy kolor paska, i całość powtarza się w nieskończoność.

P1010296

Tak, to tyle! W ten sposób udowodniłem, że jest możliwe zrobienie prostego wizualizera muzycznego bez wykorzystania specjalistycznych układów dzielących dźwięk na pasma częstotliwości. Co myślicie o projekcie? Wypowiedzcie się w komentarzach!

 

Dziękuję Frankowi Bednarczykowi (https://www.instagram.com/xblack_frank/) za zdjęcia do posta. Jesteś wielki!
  • Gdzie jakiś filmik z efektem końcowym? 🙁

    • Na wykopie napisałem, jak miałbym nagrywać ziemniakiem to wyszło by… słabo :/
      Próbowałem, ale nie wychodzi zbyt dobrze, lepiej to wygląda na żywo 😛

  • Achym

    Poprosimy o jakiś filmik z prezentacją działania 😉

    • Tak jak napisałem – lepiej zobaczyć to na własne oczy. Postaram się wstawić filmik z efektem na FB, ale nie będzie porażająco, przydała by się kamera przynajmniej 720p, 60fps 😛

  • Pingback: Prosty wizualizer muzyczny – wideo – Programistyczne piekło()