Cuprins:

Mănușă de dans: 9 pași
Mănușă de dans: 9 pași

Video: Mănușă de dans: 9 pași

Video: Mănușă de dans: 9 pași
Video: CUM SĂ DANSEZI POPULARĂ (hora, sârba, bătuta, brâul, sârba studenților) 2024, Noiembrie
Anonim
Mănușă de dans
Mănușă de dans

În acest tutorial, vă voi ghida prin proiectarea unei mănuși care vă permite să interacționați cu muzica prin dans. Veți construi o mănușă activată pentru accelerometru, veți proiecta o compoziție în Ableton și apoi le veți conecta pe cele două într-un mod atât de complex sau simplu cum doriți!

Provizii

  • Ableton (sau încercare gratuită)
  • Un Arduino
  • Cabluri jumper
  • Ciocan de lipit
  • Carton
  • Pistol de lipit fierbinte
  • Multă imaginație

Pasul 1: Concept

Acest proiect este conceput pentru a fi distractiv. Dacă modul în care funcționează proiectul de exemplu din acest tutorial nu este distractiv pentru dvs., reproiectați-l!

Vă recomand să puneți câteva dintre melodiile dvs. preferate, să vă mișcați mâinile spre ele și să vedeți ce se întâmplă. Vă mișcați mâinile în sus și în jos? Side-to-side? Încet sau repede? Ce aspecte ale muzicii te fac să îți dorești să-ți miști mâinile? Dacă aveți o listă cu acestea scrise, probabil veți putea afla câteva modalități de a încorpora mișcările de care vă bucurați în eventualii algoritmi.

Iată mișcările pe care le-am folosit:

  • O mișcare rapidă în sus și în jos declanșează începutul melodiei, tobei sau basului. (Acestea se întâmplă în diferite puncte ale cântecului, nu neapărat simultan!)
  • O mișcare lentă, înclinată, dintr-o parte în alta, declanșează un sunet mai ecou și puternic.
  • La o anumită secțiune a melodiei, înclinarea mâinii în sus face ca muzica să se liniștească - așa că am „prins-o” în pumnul închis.

Folosește-le sau fă-ți propriile!

(Vă rugăm să rețineți: acest tutorial nu acoperă cum să generați muzică sau melodii live în Ableton! Dacă respectați aceste instrucțiuni, veți putea crește / micșora doar volumul pieselor sau aplicarea efectelor audio.)

Pasul 2: Pregătiți accelerometrul

Pregătiți accelerometrul
Pregătiți accelerometrul

Mai întâi, află ce tip de accelerometru ai. L-am folosit pe acesta; orice accelerometru cu trei axe va face. (Sau încercați un alt tip de senzor dacă doriți să vă descurcați.) Asigurați-vă că știți cum să citiți datele accelerometrului de pe Arduino. Poate fi necesar să descărcați o bibliotecă pentru accelerometru dacă folosește ceva mai complex decât intrarea analogică.

După ce l-ați testat cu o placă de măsurare, lipiți firele scurte codate în culori în pinii accelerometrului. Puneți un fir roșu în pinul de alimentare, un fir negru în pinul de masă și orice alte fire necesare pentru comunicarea accelerometrului. (Dacă aveți un accelerometru I2C, acesta va fi pinii SCL și SDA. Dacă aveți un accelerometru analogic, va exista probabil un pin pentru fiecare dintre ieșirile x, y și z.) Asigurați-vă că lipirea este solidă și că mărgelele nu se suprapun între pinii adiacenți.

Pasul 3: Construiește mănușa

Construiește mănușa
Construiește mănușa

Tăiați o bucată de carton subțire sau hârtie groasă într-un dreptunghi puțin mai mare decât accelerometrul. Lipiți accelerometrul pe carton, asigurându-vă că puneți lipici pe fund. Apoi, lipiți accelerometrul cu suport de carton pe spatele mănușii. Coaseți fiecare fir liber la încheietura mănușii pentru a ușura tensiunea pe accelerometru și apoi mănușa dvs. este gata. Conectați-l la fire mai lungi pentru a avea suficient spațiu pentru a vă mișca mâna când este conectată.

Pasul 4: Compuneți în Ableton

Acum este timpul să compuneți melodia, în cele din urmă veți folosi mănușa pentru a controla. Recomand bucle Ableton care sună bine împreună, dar care pot fi folosite pentru a construi treptat: încercați melodie, acorduri, bas și percuție. Veți putea folosi mănușa pentru a controla când fiecare buclă se joacă sau nu.

Dacă vă puteți gândi la orice fel de sunete interesante pe care să le încorporați ocazional într-o melodie, cum ar fi un efect de sunet ciudat sau un instrument neconvențional, încercați să adăugați și unul sau două dintre acestea! Puteți să le legați de mișcări mai puțin frecvente ale mâinii pentru a aduce ceva din când în când ceva interesant.

Iată un link către compoziția mea compatibilă Arduino, în cazul în care nu doriți să scrieți una dintre cele proprii:

(Din păcate, învățarea Ableton nu este în sfera tutorialului. Cu toate acestea, există o mulțime de videoclipuri de instrucțiuni bune, iar Ableton are o perioadă de încercare gratuită de 90 de zile! Vă recomand acest videoclip.)

Pasul 5: începeți să utilizați Firmata

Începeți să utilizați Firmata
Începeți să utilizați Firmata

Pentru a vă permite Arduino să comunice cu Ableton, va trebui să utilizați o bibliotecă numită Firmata. De asemenea, va trebui să descărcați kitul de conexiune pentru Ableton.

În Ableton, faceți clic pe Pachete> Kit de conexiune> Dispozitive din meniul din stânga sus, apoi faceți dublu clic pe primul dispozitiv (Arduino) pentru al adăuga. Asigurați-vă că vă amintiți la ce pistă Ableton ați adăugat dispozitivul!

Pasul 6: Testați Firmata

Testați Firmata
Testați Firmata

Mai întâi, vom testa și ne vom asigura că Arduino comunică cu Ableton. Încărcați acest fragment de cod pe Arduino și rulați-l:

#include void analogWriteCallback (pin octeț, valoare int) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), valoare); }} void setup () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} void loop () {Firmata.sendAnalog (0, 800);}

Acesta este minimul necesar pentru a comunica cu Firmata. Trimite continuu o ieșire de 800 (din 1024) la portul 0 al dispozitivului Firmata din Ableton. Dacă încărcați acest cod pe Arduino în timp ce aveți un dispozitiv Firmata deschis în Ableton, ar trebui să arate ca imaginea de mai sus. (Hartați portul 0 la orice din Ableton pentru a putea vedea valorile.)

Puteți face clic pe butonul Hartă și apoi pe orice dispozitiv compatibil Firmata din Ableton pentru a adăuga o mapare între intrarea primită în acel port și valoarea acelui dispozitiv Ableton. Exemplele ușoare includ volumul oricărei piese sau a oricărui cadran dintr-un efect audio. Explorați și vedeți ce puteți găsi pe hartă!

Pasul 7: Influențați muzica cu mișcările mâinilor

Influențați muzica cu mișcările mâinilor!
Influențați muzica cu mișcările mâinilor!

În acest moment, ar trebui să aveți muzică în Ableton, un script Firmata pe Arduino și o mănușă accelerometru atașată. Hai să facem niște muzică!

Hartați porturile dispozitivului Arduino din Ableton la diferite lucruri (vă sugerez volumul urmăririi), apoi adăugați linii de cod pentru a trimite date către fiecare port de pe Arduino.

Firmata.sendAnalog (port, volumeLevel);

Folosiți codul de acest fel pentru fiecare port Firmata.

Dacă doriți să faceți ceva simplu, puteți trimite valorile accelerometrului neprocesate în porturile Ableton și le puteți mapa de acolo. Pentru o experiență mai sofisticată, puteți decide: ce valori ale accelerometrului ar trebui să declanșeze sunete, cum și când?

Apoi jucați toate buclele Ableton, rulați codul Arduino și dansați!

(Declinare de responsabilitate: dacă intenționați să creați orice fel de algoritm complex pentru melodia dvs., poate dura mult timp pentru a regla fin. „Dance away” poate fi mai puțin precis decât se anticipa.)

Pasul 8: Clasa Track (bonus!)

Dacă nu vă deranjează apariția volumului sau aveți un alt mod de a-l atenua, săriți peste acest pas. În caz contrar, citiți mai departe!

Am observat că trecerea volumului de la dezactivat la deplin într-o singură mișcare creează niște sunete neplăcute și este plăcut să poți estompa în volum mai treptat. Cu toate acestea, este greu să faci acest lucru în mediul de programare sincron al Arduino. Deci, iată câteva coduri pentru a face popping-ul să dispară:

clasa Track {public: int volum; int volumeGoal; int updateSpeed; Track () {volum = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int goal) {volumeGoal = goal; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int rapiditate) {updateSpeed = rapiditate; } int getVolume () {returnează volumul; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } else if ((volume = updateSpeed)) {volume + = updateSpeed; }} void mute (int fastness) {volumeGoal = 50; updateSpeed = rapiditate; } void full (int fastness) {volumeGoal = 950; updateSpeed = rapiditate; }};

Fiecare pistă are un volum curent, un volum de obiectiv și o viteză cu care se deplasează către volumul de obiectiv respectiv. Când doriți să modificați volumul unei piese, apelați setVolumeGoal (). De fiecare dată când rulați funcția loop () în Arduino, apelați updateVolume () pe fiecare pistă, apoi trimiteți aceste informații către Firmata cu getVolume (). Schimbați viteza de actualizare pentru decolorări mai rapide sau mai treptate! De asemenea, evitați setarea volumului la 0, dacă puteți; în schimb, setați-l la o valoare foarte mică (valoarea implicită în mut () este 100).

Pasul 9: Lungimea pistei, Beats și multe altele (bonus!)

Puteți face o mulțime de lucruri pentru ca sunetul rezultat din proiectul dvs. să fie mai ușor de ascultat. Iată câteva opțiuni:

Puteți urmări cât timp rulează melodia. Pentru a face acest lucru, va trebui să vă dați seama când a început melodia; Recomand o buclă de timp în funcția setup () care întârzie codul să ruleze până când a simțit o mișcare a mâinii. Stocați ora de începere a melodiei într-o variabilă folosind millis () și verificați cât timp a durat de fiecare dată când faceți loop (). Puteți utiliza acest lucru pentru a activa sau dezactiva anumite caracteristici în anumite momente ale melodiei.

Dacă știți cât timp buclele dvs. sunt în milisecunde, puteți urmări și câte bucle ați trecut pentru o înțelegere mai nuanțată a structurii melodiei!

O altă problemă potențială pe care o puteți întâlni este când porniți și opriți redarea unei piese. Am rezolvat acest lucru ținând evidența în care ritm al unei măsuri se afla în prezent melodia. Apoi am putut reda piese pentru orice număr de ritmuri după un gest, în loc să le întrerup imediat. Acest lucru face ca lucrurile să curgă mult mai ușor. Iată un exemplu:

if (millis () - lastLoop> = 4000) {bucle + = 1; lastLoop = millis (); for (int j = 0; j <8; j ++) {beatNow [j] = false; }} beat = (millis () - lastLoop) / 250; if (beat! = lastBeat) {lastBeat = beat; beatsLeft - = 1; }

Asigurați-vă că actualizați volumele în mod corespunzător la valorile beatNow [beat] și / sau beatsLeft. Exemplu de cod care include aproape totul în acest tutorial, plus unele, este atașat în cazul în care doriți să-l vedeți în practică.

Recomandat: