Sadržaj:

Plesne rukavice: 9 koraka
Plesne rukavice: 9 koraka

Video: Plesne rukavice: 9 koraka

Video: Plesne rukavice: 9 koraka
Video: КИНО | Стук | 16:9 2024, Novembar
Anonim
Dance Glove
Dance Glove

U ovom vodiču ću vas provesti kroz dizajniranje rukavice koja vam omogućava interakciju s muzikom kroz ples. Napravit ćete rukavicu s akcelerometrom, dizajnirati kompoziciju u Abletonu, a zatim spojiti to dvoje na složen ili jednostavan način koji želite!

Supplies

  • Ableton (ili besplatno probno razdoblje)
  • Arduino
  • Premosni kablovi
  • Lemilica
  • Karton
  • Pištolj za vruće ljepilo
  • Puno mašte

Korak 1: Koncept

Ovaj projekat je zamišljen da bude zabavan. Ako vam način rada na primjeru u ovom vodiču nije zabavan, redizajnirajte ga!

Preporučujem da stavite neke od svojih omiljenih pjesama, pomaknete ruke na njih i vidite što će se dogoditi. Pomičete li ruke gore-dolje? Jedne na drugu stranu? Polako ili brzo? Zbog kojih aspekata muzike želite da pomerite ruke? Ako imate popis ovih zapisa, vjerovatno ćete moći smisliti neke načine za uključivanje pokreta u kojima uživate u svoje eventualne algoritme.

Evo pokreta koje sam koristio:

  • Brz pokret gore-dolje pokreće početak pjesme, bubnjeve ili bas. (To se događa na različitim mjestima u pjesmi, ne nužno istovremeno!)
  • Polako, nagnuto kretanje bočno na stranu pokreće ehoetičniji, visoki ton.
  • U jednom određenom dijelu pjesme, naginjanje ruke prema gore utišava muziku - pa sam je "uhvatio" u zatvorenu šaku.

Iskoristite ih ili napravite sami!

(Napomena: ovaj vodič ne pokriva način stvaranja muzike ili melodija uživo u Abletonu! Ako se pridržavate ovih uputa, moći ćete samo povećati/smanjiti jačinu pjesama ili primjenu audio efekata.)

Korak 2: Pripremite mjerač brzine

Pripremite akcelerometar
Pripremite akcelerometar

Prvo saznajte koju vrstu mjerača ubrzanja imate. Ja sam koristio ovaj; bilo koji troosni akcelerometar će raditi. (Ili isprobajte drugu vrstu senzora ako želite podivljati.) Provjerite znate li čitati podatke akcelerometra s Arduina. Možda ćete morati preuzeti biblioteku za svoj mjerač ubrzanja ako koristi nešto složenije od analognog ulaza.

Nakon što ste ga isprobali uz ploču za lemljenje, lemite kratke žice označene bojom u pinove vašeg akcelerometra. Stavite crvenu žicu u utičnicu za napajanje, crnu žicu u iglu za uzemljenje i sve druge potrebne žice za komunikaciju akcelerometra. (Ako imate I2C akcelerometar, ovo će biti SCL i SDA pinovi. Ako imate analogni akcelerometar, vjerovatno će biti jedan pin za svaki od x, y i z izlaza.) Provjerite je li lemljenje čvrsto i da se perle ne preklapaju između susjednih igala.

Korak 3: Napravite rukavicu

Napravi rukavicu
Napravi rukavicu

Izrežite komad tankog kartona ili debelog papira u pravokutnik nešto veći od akcelerometra. Zalijepite akcelerometar na karton, pazeći da ljepilo stavite na dno. Zatim zalijepite mjerač ubrzanja s kartonskom podlogom na stražnju stranu rukavice. Labavo prišijte svaku žicu na ručni zglob rukavice kako biste ublažili napetost na mjeraču ubrzanja i tada je vaša rukavica spremna. Spojite ga na duže žice kako biste imali dovoljno prostora za pomicanje ruke kada je uključena.

Korak 4: Komponujte u Abletonu

Sada je vrijeme da komponujete pjesmu koju ćete na kraju koristiti rukavicom za kontrolu. Preporučujem Ableton petlje koje sve zajedno zvuče dobro, ali se mogu koristiti za postupno nadogradnju: isprobajte melodiju, akorde, bas i udaraljke. Moći ćete koristiti svoju rukavicu za kontrolu kada svaka petlja svira ili ne.

Ako se sjetite bilo koje zanimljive vrste zvukova koje biste povremeno mogli ugraditi u pjesmu, poput čudnog zvučnog efekta ili nekonvencionalnog instrumenta, pokušajte dodati i jedan ili dva od njih! Možete ih vezati za rjeđe pokrete rukama kako biste s vremena na vrijeme unijeli nešto zanimljivo.

Evo veze do moje kompozicije kompatibilne s Arduinom, u slučaju da ne želite napisati svoju vlastitu:

(Nažalost, podučavanje vas Abletonu nije u okviru ovog vodiča. Međutim, postoji mnogo dobrih videozapisa s uputama, a Ableton ima 90-dnevno besplatno probno razdoblje! Preporučujem ovaj video.)

Korak 5: Počnite koristiti Firmatu

Počnite koristiti Firmatu
Počnite koristiti Firmatu

Da biste svom Arduinu omogućili komunikaciju s Abletonom, morat ćete koristiti biblioteku koja se zove Firmata. Također ćete morati preuzeti komplet za povezivanje za Ableton.

U Abletonu kliknite Packs> Connection Kit> Devices u izborniku u gornjem lijevom kutu, a zatim dvaput kliknite na prvi uređaj (Arduino) da biste ga dodali. Upamtite na koju ste pjesmu Abletona dodali uređaj!

Korak 6: Testirajte Firmatu

Test Firmata
Test Firmata

Prvo ćemo testirati i uvjeriti se da vaš Arduino komunicira s Abletonom. Prenesite ovaj isječak koda na svoj Arduino i pokrenite ga:

#include void analogWriteCallback (pin byte, int value) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), vrijednost); }} 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);}

Ovo je minimalni minimum potreban za komunikaciju s Firmatom. On kontinuirano šalje izlaz od 800 (od 1024) na priključak 0 uređaja Firmata u Abletonu. Ako učitate ovaj kôd na svoj Arduino dok imate otvoren Firmata uređaj u Abletonu, trebao bi izgledati kao gornja slika. (Mapirajte port 0 na bilo šta u Abletonu da biste mogli vidjeti vrijednosti.)

Možete kliknuti gumb Karta, a zatim bilo koji uređaj kompatibilan s Firmatom u Abletonu kako biste dodali mapiranje između primljenog unosa na taj port i vrijednosti tog Ableton uređaja. Jednostavni primjeri uključuju jačinu zvuka bilo koje numere ili bilo kojeg brojčanika unutar audio efekta. Istražite i pogledajte što možete pronaći na karti!

Korak 7: Uticajte na muziku pokretima ruke

Uticajte na muziku pokretima ruku!
Uticajte na muziku pokretima ruku!

Do tada biste trebali imati muziku u Abletonu, skriptu Firmata na vašem Arduinu i pričvršćenu rukavicu za akcelerometar. Hajde da napravimo muziku!

Mapirajte portove Arduino uređaja u Abletonu na različite stvari (predlažem jačinu zapisa), a zatim dodajte redove koda za slanje podataka na svaki port s Arduina.

Firmata.sendAnalog (port, volumeLevel);

Koristite ovakav kod za svaki Firmata port.

Ako želite učiniti nešto jednostavno, možete poslati vrijednosti akcelerometra neobrađene na Ableton portove i od tamo ih mapirati. Za sofisticiranije iskustvo, možete odlučiti: koje bi vrijednosti akcelerometra trebale pokrenuti zvukove, kako i kada?

Zatim pustite sve svoje Ableton petlje, pokrenite svoj Arduino kôd i otplešite!

(Odricanje od odgovornosti: ako planirate stvoriti bilo koju vrstu složenog algoritma za svoju pjesmu, možda će trebati puno vremena za fino podešavanje. "Dance away" može biti manje precizan od predviđenog.)

Korak 8: Klasa praćenja (bonus!)

Ako vam ne smeta pojačavanje zvuka ili imate drugi način da ga umanjite, preskočite ovaj korak. U suprotnom, čitajte dalje!

Primijetio sam da prebacivanje glasnoće sa potpuno utišanog na potpuno u jednom potezu stvara neugodne zvukove iskakanja i lijepo je što možete pojačati zvuk postepeno. Međutim, teško je to učiniti u sinhronom programskom okruženju Arduina. Dakle, evo nekoliko kodova za uklanjanje iskakanja:

class Track {public: int volumen; int volumeGoal; int updateSpeed; Track () {volumen = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int cilj) {volumeGoal = cilj; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int postojanost) {updateSpeed = brzina; } int getVolume () {vrati volumen; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } else if ((volume = updateSpeed)) {volume += updateSpeed; }} void mute (int postojanost) {volumeGoal = 50; updateSpeed = brzina; } puna praznina (int postojanost) {volumeGoal = 950; updateSpeed = brzina; }};

Svaka pjesma ima trenutni volumen, cilj i brzinu kojom se kreće prema tom cilju. Ako želite promijeniti jačinu zapisa, pozovite setVolumeGoal (). Svaki put kada pokrenete funkciju loop () na svom Arduinu, pozovite updateVolume () na svakoj pjesmi, a zatim pošaljite te informacije Firmati pomoću getVolume (). Promijenite brzinu ažuriranja za brže ili postepenije zamiranje! Takođe, izbjegavajte postavljanje jačine zvuka na 0 ako možete; umjesto toga, postavite je na vrlo nisku vrijednost (zadana vrijednost u mute () je 100).

Korak 9: Dužina pjesme, ritmovi i još mnogo toga (bonus!)

Možete učiniti mnogo stvari kako bi zvuk koji proizlazi iz vašeg projekta bilo lakše slušati. Evo nekoliko opcija:

Možete pratiti koliko dugo se pjesma izvodi. Da biste to učinili, morate saznati kada je pjesma započela; Preporučujem while petlju u funkciji setup () koja odgađa rad vašeg koda sve dok ne osjeti pokret ruke. Pohranite vrijeme početka pjesme u varijablu pomoću millis () i provjerite koliko dugo traje svaki put kada petljate (). Ovo možete koristiti za omogućavanje ili onemogućavanje određenih funkcija u određeno vrijeme pjesme.

Ako znate koliko su vaše petlje u milisekundama, možete pratiti i koliko ste petlji prošli radi boljeg razumijevanja strukture pjesme!

Još jedan potencijalni problem na koji možete naići je kada započeti i zaustaviti reprodukciju pjesme. Riješio sam to tako što sam pratio u kojem taktu se trenutno nalazi pjesma. Tada bih mogao reproducirati numere za bilo koji broj otkucaja nakon geste, umjesto da je odmah prekinem. Zbog toga stvari teku mnogo glatko. Evo primjera:

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

Obavezno ažurirajte jačine zvuka u skladu s vrijednostima beatNow [beat] i/ili beatsLeft. Primjer koda koji uključuje gotovo sve u ovom vodiču, plus nešto, priložen je u slučaju da ga želite vidjeti u praksi.

Preporučuje se: