Cuprins:

Sinestezie pian pian: 4 pași
Sinestezie pian pian: 4 pași

Video: Sinestezie pian pian: 4 pași

Video: Sinestezie pian pian: 4 pași
Video: "Синестезия" 4. Георгий Фёдоров - 'Слова' 2024, Iulie
Anonim
Image
Image
Sinestezie pian pian
Sinestezie pian pian
Sinestezie pian pian
Sinestezie pian pian

Acest pian player redă muzică folosind o roată color și un aparat foto! Imaginile sunt capturate de cameră, procesate și interpretate ca note muzicale. Chiar acum este programat să redea rime de pepinieră care pot fi schimbate încărcând o nouă schiță arduino care specifică ce note ar trebui redate (ce culori ar trebui să fie afișate camerei).

PC-ul Linux de la bord pornește un serviciu la pornire care face o fotografie cu o cameră, calculează o funcție a valorilor RGB din imagine și emite un sunet pe baza valorii returnate a funcției. Înainte de a reda sunetul, acesta trimite un semnal care îi spune unui Arduino să rotească un servo, prezentând culoarea corespunzătoare următoarei note care va fi redată. Apoi bucla începe din nou, se face o poză, roata de culoare este rotită și un sunet este redat la infinit.

Acest proiect este o modalitate distractivă de a integra muzică, programare modernă a sistemelor Linux, programare cu microcontrolere, doodling inkscape, tăiere cu laser și refacerea unor cutii de carton nedorite.

Toate codurile și inkscape SVG-urile sunt disponibile pe github la:

github.com/melvyniandrag/pyMusic

Materiale utilizate:

  1. Etichete albe goale
  2. Cutie de carton
  3. Cameră web
  4. Creioane
  5. Arduino
  6. Beagleboard-xM
  7. Fire
  8. Cablu serial
  9. Cunoștințe de bază despre procesarea imaginilor și muzică

Pasul 1: Lucrurile computerului

Lucrurile de computer
Lucrurile de computer
Lucrurile de computer
Lucrurile de computer
Lucrurile de computer
Lucrurile de computer

La bord veți avea nevoie de un computer mic capabil Linux, cum ar fi un Raspberry Pi. Am folosit un BeagleBoard-xM vechi, deoarece se întâmpla să-l așez și am avut deja un sistem de operare pe cardul SD. Puteți utiliza orice, atâta timp cât poate gestiona o cameră web, poate rula OpenCV (biblioteca de vizualizare computerizată utilizată pentru a prelua și procesa imagini ale roții de culori) și are o mufă de ieșire audio.

Am configurat sistemul de operare pentru a rula codul python care captează imagini la boot după un tutorial systemd. Pentru ca scriptul să ruleze, va trebui să sudo apt-get install python-pyaudio python-opencv pentru a obține bibliotecile indicate. De asemenea, va trebui să instalați pip numys pyserial pentru a obține acele biblioteci. pyaudio este folosit pentru a reda sunete, opencv este utilizat pentru preluarea și prelucrarea imaginilor, numpy este, de asemenea, utilizat pentru prelucrarea imaginilor și pyserial este necesar pentru comunicarea cu Arduino.

Arduino este folosit pentru rotirea servomotorului pe care este montată roata de culoare. Dacă ați avea un Raspberry Pi, ați putea folosi pinii GPIO de acolo și lăsați Arduino, dar ar trebui să modificați codul Python.

În imagini puteți vedea curajul tehnologic al operației și câteva fragmente de cod.

Pasul 2: Pianul

Pianul
Pianul
Pianul
Pianul
Pianul
Pianul

Am făcut pianul din carton din niște cutii vechi pe care le aveam. Am norocul de a trăi în apropierea unui spațiu creator care are un dispozitiv de tăiere cu laser. De un an întreg m-am întrebat la ce naiba ar vrea un tăietor cu laser și se pare că am găsit în cele din urmă o utilizare.

Am măsurat computerul, arduino și servo, așa că am știut cât de mult spațiu aveam nevoie, am desenat părțile pianului în interior și le-am tăiat pe tăietorul laser. (Editare: Am rămas fără carton pentru a face ca carcasa să țină computerul și arduino-ul și așa că nu le-am pus. Sunt în exteriorul carcasei. Nu contează, ar fi putut obține o altă cutie de undeva, dar nu nu contează în cele din urmă.)

Piesele au fost puse împreună cu epoxidic.

Pasul 3: Asamblare

Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare

Iată câteva imagini cu pianul asamblat și colorat. Imprimanta nu mai avea cerneală, așa că nu am putut imprima culorile pe etichetele albe așa cum plănuisem. Așa că am folosit creioanele fiicei mele. Și nu am putut găsi un cuțit xacto care să taie eticheta după forma cartonului, așa că am folosit doar un cuțit pentru friptură și am pus ceva de protecție pe blatul din bucătărie. Folosește ceea ce ai!

Pasul 4: Provocări tehnice și considerații viitoare

Provocări tehnice și considerații viitoare
Provocări tehnice și considerații viitoare
Provocări tehnice și considerații viitoare
Provocări tehnice și considerații viitoare

O parte dificilă a acestui proiect a fost obținerea valorilor RGB adecvate pentru a fi citite de cameră. Camera web pe care o am are câteva LED-uri incredibil de strălucitoare pe care nu știu cum să le opresc în Linux. Cred că există un driver Windows care vă permite să le activați și să le dezactivați. Am experimentat cu înregistrarea LED-urilor cu bandă electrică și lăsarea lor aprinsă. De asemenea, am testat software-ul pentru rezistență, arătând nu numai hârtie colorată, ci și scriind un mic site web care arată culori.

Sunetele produse de computer au uneori pop-up și crackling, iar acest lucru provine din faptul că am foarte puțină experiență în programarea audio Linux. Biblioteca pyaudio scuipă o mulțime de reclamații cu privire la faptul că JACK nu este instalat pe computer, dar în mod implicit JACK nu vrea să ruleze fără cap (fără un desktop gui și un monitor). Aceasta este o sarcină de programare pe care am crezut-o că este un rafinament, dar care nu era necesară pentru a exprima esența pianului pentru jucător pe care îl aveam în minte.

M-am gândit să folosesc o manivelă de mână pentru a schimba culorile și, probabil, pentru a le avea pe un știft, dar asta își introduce propriile complicații. Servo-ul este cam zgomotos, dar funcționează bine pentru moment.

Pianul pentru jucător este în prezent programat doar pentru a reda 4 note. Acest lucru se datorează faptului că servo se mișcă doar la 180 de grade, majoritatea rimelor de pepinieră pot fi redate cu doar 3-4 note și nu am vrut ca roata de culoare să se aglomereze cu regiunile de culoare, confuzând eventual camera. Deci, printr-o combinație de noroc muzical și constrângeri tehnice, 4 note sunt în regulă.

Recomandat: