Grupa: 332CC
Ce face?
Music visualizer-ul
reprezinta un dispozitiv prin care putem vedea exact frecventa/ritmul melodiei pe care o ascultam in momentul respectiv, prin intermediul jocului de lumini al matricei de led-uri. De asemenea, device-ul va avea si un vu-meter
care va arata printr-un lcd audio level-ul melodiei, in dBu.
Scopul
Scopul este, din punctul meu de vedere, unul estetic (mereu mi s-a parut interesant sa ma uit cum se misca luminile pe ritmul muzicii), dar si informativ (nivelul de db afisat).
Ideea + Utilitatea
Ideea mi-a venit de la boxele de tipul celei JBL Pulse, sau a programelor online prin care se poate vizualiza spectrul frecventelor atinse. Mereu mi-au atras atentia. Din punct de vedere estetic/decorativ mi se pare ca schimba toata experienta de a asculta muzica.
Odata ce placuta Arduino UNO R3 este econectata la alimentare, microfonul capteaza undele sonore din apropierea sa (nu merge de la distanta intrucat modulul audio nu este unul profesional). In acest timp, matricea de led-uri incepe sa se miste in functie de intensitatea muzicii. Pe ecranul LCD este afisat nivelul de dB, iar la apasarea butonului, LCD-ul va afisa nivelul de presiune al sunetului (SPL-ul).
LISTA DE PIESE:
Am realizat in Fritzing schema proiectului (varianta inainte de a fi pusa in cutie). Nu a fost nevoie sa folosesc rezistente sau capacitori pana la urma, iar microfonul am observat ca se comporta mai bine atunci cand e conectat la sursa de 3V3 a UNO-ului.
SCHEMA CIRCUIT:
Fisierul .fzz se va putea gasi in arhiva proiectului.
Initial am intentionat sa folosesc FFT (Fast Fourier Transform) pentru a interpreta input-ul audio. Dupa aporape doua saptamani de incercari si apelatul la asistentul de laborator, am concluzionat amandoi ca se misca mult prea greu si nu face ce trebuie niciuna din bibliotecile importate, cel putin in combinatie cu microfonul si toata configuratia mea. In aceste circusmtante, am convenit cu Bogdan sa interpretez in mod liber nivelul sonor captat de microfon si jocul de lumini generat de matrice.
Dupa multiple teste in care am pus o boxa langa microfon si am pus muzica la un volum divers (urmarind la Serial Monitor input-ul de la microfon) am dedus niste valori intre care pot incadra numarul de led-uri aprinse pe o coloana. Adaug random si niste valori diferite pentru a oferi un efect vizual mai placut, la o perioada tot random de timp. Toate acestea se intampla in functia displayLed.
In loop tratez apasarea de buton care imi schimba afisajul de pe LCD din dB Volts (cei uzuali) in dB SPL (Sound Pressure Level). Tratez si situatia de debounce, masurand timpul dintre apasarea actuala si cea anterioara, punand restrictia de a fi > 500ms. Fac un loop de dimensiunea inputWindow-ului pentru a capta muzica, afland minimul maximul si media. Urmeaza partea de calcule matematice pentru a obtine dB-ii. Codul este segmentat prin comentarii pentru lizibilitate.
Proiectul functioneaza cum trebuie (desi microfonul lasa de dorit, insa dupa achizitionarea a trei modele diferite mi-am acceptat soarta), cu restrictia ca sursa de muzica (boxa) trebuie pozitionata langa microfon. De asemenea, microfonul nu poate capta sonor mult prea puternic, volumul maxim la care poate ajunge fiind in jur de 86dB (o situatie de genul 3.6, not great not terrible, m-am adaptat la neajunsurile modulului sonor). Restul modulelor functioneaza foarte bine. O sa atasez
Link demo (before mutat in cutie) : https://youtube.com/shorts/3r7MCkrnHD8?feature=share
Link demo (pus ordonat in cutie) : https://youtube.com/shorts/7NgdvLogcIQ?feature=share
Pentru a sta compact si a arata mai bine, am pus proiectul intr-o cutie de plastic, in care am masurat, taiat, si prins in suruburi componentele (cu tata :), plasticul e mult mai tare decat pare). Am prins firele cu zip-ties si lipit in interiorul cutiei pnetru a sta ordonate. Probabil voi infasura cutia in banda adeziva pentru a nu mai fi transparenta, insa adaug poze cu ea in aceasta varianta semi-gata pentru a se vedea clar ce si cum:
Proiectul a fost captivant (nu si cele doua saptamani de frustrare pierdute incercand sa folosesc FFT :( ), iar rezultatul, mai ales fiind unul palpabil, chiar ofera o satisfactie puternica. Nu am ce sa zic, proiectul chiar a ajutat extrem de mult la intelegerea cu adevarat a conceptelor invatate la curs si laborator.
Resurse Software: