Turinys:

Šokių pirštinė: 9 žingsniai
Šokių pirštinė: 9 žingsniai

Video: Šokių pirštinė: 9 žingsniai

Video: Šokių pirštinė: 9 žingsniai
Video: Подлая манипуляция. Двойные послания. Газлайтинг. Доведение до шизофрении. НЛП подкаст #3 2024, Lapkritis
Anonim
Šokių pirštinė
Šokių pirštinė

Šioje pamokoje aš padėsiu jums sukurti pirštinę, kuri leistų šokiui bendrauti su muzika. Sukursite pirštines su akcelerometru, suprojektuosite kompoziciją „Ableton“ir sujungsite jas taip sudėtingai ar paprastai, kaip norite!

Prekės

  • „Ableton“(arba nemokama bandomoji versija)
  • Arduino
  • Trumpieji kabeliai
  • Lituoklis
  • Kartonas
  • Karštas klijų pistoletas
  • Daug vaizduotės

1 žingsnis: koncepcija

Šis projektas sukurtas taip, kad būtų įdomus. Jei šioje pamokoje pateiktas pavyzdinis projektas jums nėra įdomus, suprojektuokite jį iš naujo!

Aš rekomenduoju įdėti keletą mėgstamų dainų, pajudinti rankas prie jų ir pamatyti, kas atsitiks. Ar judate rankas aukštyn ir žemyn? Šonas į šoną? Lėtai ar greitai? Kokie muzikos aspektai verčia pajudinti rankas? Jei turite šių dalykų sąrašą, tikriausiai galėsite išsiaiškinti, kaip patinkančius judesius įtraukti į galimus algoritmus.

Štai mano naudojami judesiai:

  • Greitas judesys aukštyn ir žemyn sukelia dainos, būgnų ar boso pradžią. (Tai atsitinka skirtinguose dainos taškuose, nebūtinai vienu metu!)
  • Lėtas, pasviręs judesys iš vienos pusės į kitą sukelia aidingesnį, aukštesnį garsą.
  • Vienoje konkrečioje dainos dalyje, pakėlus ranką į viršų, muzika nutyla - taigi aš ją „pagavau“užgniaužęs kumštį.

Naudokite juos arba sukurkite patys!

(Atkreipkite dėmesį: ši pamoka neapima, kaip kurti muziką ar melodijas tiesiogiai „Ableton“! Jei laikysitės šių nurodymų, galėsite tik padidinti/sumažinti takelių garsą arba taikyti garso efektus.)

2 žingsnis: Paruoškite akselerometrą

Paruoškite akselerometrą
Paruoškite akselerometrą

Pirmiausia išsiaiškinkite, kokio tipo akselerometrą turite. Aš naudoju šį; tiks bet kuris trijų ašių akselerometras. (Arba išbandykite kito tipo jutiklius, jei norite išprotėti.) Įsitikinkite, kad žinote, kaip skaityti „Arduino“akselerometro duomenis. Gali reikėti atsisiųsti akselerometro biblioteką, jei ji naudoja ką nors sudėtingesnio nei analoginis įėjimas.

Išbandę jį su duonos lenta, lituokite trumpus spalvomis pažymėtus laidus į akselerometro kaiščius. Įdėkite raudoną laidą į maitinimo kaištį, juodą laidą į įžeminimo kaištį ir visus kitus laidus, reikalingus akselerometro ryšiui. (Jei turite akselerometrą I2C, tai bus SCL ir SDA kaiščiai. Jei turite analoginį pagreičio matuoklį, greičiausiai kiekvienam iš x, y ir z išėjimų bus po vieną kaištį.) Įsitikinkite, kad lydmetalis yra tvirtas ir kad karoliukai nesutaptų tarp gretimų kaiščių.

3 žingsnis: Sukurkite pirštinę

Sukurkite pirštinę
Sukurkite pirštinę

Iškirpkite plono kartono ar storo popieriaus gabalėlį į stačiakampį, šiek tiek didesnį nei jūsų akselerometras. Priklijuokite akselerometrą prie kartono ir įsitikinkite, kad ant dugno dedate klijus. Tada priklijuokite kartoninį akselerometrą prie pirštinės galo. Laisvai siūkite kiekvieną vielą prie pirštinės riešo, kad sumažintumėte akselerometro įtampą, ir tada jūsų pirštinė yra paruošta. Prijunkite jį prie ilgesnių laidų, kad būtų pakankamai vietos rankai pajudinti, kai ji prijungta.

4 žingsnis: Kurkite „Ableton“

Dabar atėjo laikas sukurti dainą, kurios valdymui galiausiai naudosite pirštinę. Aš rekomenduoju „Ableton“kilpas, kad visi kartu skambėtų gerai, bet gali būti naudojami palaipsniui kurti: išbandykite melodiją, akordus, bosą ir perkusiją. Galite naudoti pirštines, kad valdytumėte, ar kiekviena kilpa groja, ar ne.

Jei sugalvojate kokių nors įdomių garsų, kuriuos retkarčiais galite įtraukti į dainą, pavyzdžiui, keistą garso efektą ar netradicinį instrumentą, pabandykite pridėti ir vieną ar du iš jų! Galite susieti juos su rečiau atliekamais rankų judesiais, kad kartkartėmis įneštumėte ką nors įdomaus.

Čia yra nuoroda į mano su „Arduino“suderinamą kompoziciją, jei nenorite rašyti savo:

(Deja, pamokymo sritis neapima Abletono. Tačiau yra daug gerų vaizdo įrašų, kaip naudotis, ir Ableton turi 90 dienų nemokamą bandomąją versiją! Rekomenduoju šį vaizdo įrašą.)

5 veiksmas: pradėkite naudoti „Firmata“

Pradėkite naudoti „Firmata“
Pradėkite naudoti „Firmata“

Kad „Arduino“galėtų bendrauti su „Ableton“, turėsite naudoti biblioteką „Firmata“. Taip pat turėsite atsisiųsti „Ableton“ryšio rinkinį.

„Ableton“viršuje kairėje esančiame meniu spustelėkite Paketai> Ryšio rinkinys> Įrenginiai, tada dukart spustelėkite pirmąjį įrenginį („Arduino“), kad jį pridėtumėte. Nepamirškite prisiminti, prie kurio „Ableton“takelio pridėjote įrenginį!

6 veiksmas: patikrinkite „Firmata“

Išbandykite „Firmata“
Išbandykite „Firmata“

Pirmiausia išbandysime ir įsitikinsime, kad jūsų „Arduino“bendrauja su Abletonu. Įkelkite šį kodo fragmentą į „Arduino“ir paleiskite:

#include void analogWriteCallback (baitų smeigtukas, int vertė) {if (IS_PIN_PWM (smeigtukas)) {pinMode (PIN_TO_DIGITAL (PIN), OUTPUT); analogWrite (PIN_TO_PWM (kaištis), vertė); }} 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);}

Tai yra minimalus minimumas, reikalingas bendravimui su „Firmata“. Jis nuolat siunčia 800 (iš 1024) išvestį į „Firmata“įrenginio 0 prievadą Abletone. Jei įkelsite šį kodą į „Arduino“, kai „Ableton“atidarytas „Firmata“įrenginys, jis turėtų atrodyti kaip aukščiau pateiktas vaizdas. (Susiekite prievadą 0 su bet kuo Abletone, kad galėtumėte matyti vertes.)

Galite spustelėti mygtuką „Žemėlapis“ir bet kurį „Ableton“su „Firmata“suderinamą įrenginį, kad pridėtumėte atvaizdą tarp įvesties, gautos į tą prievadą, ir to „Ableton“įrenginio vertės. Paprasti pavyzdžiai yra bet kokio takelio ar bet kurio garso efekto ratuko garsumas. Tyrinėkite ir pamatykite, ką galite rasti žemėlapyje!

7 žingsnis: paveikite muziką rankos judesiais

Įtakokite muziką rankos judesiais!
Įtakokite muziką rankos judesiais!

Iki to laiko turėtumėte turėti šiek tiek muzikos „Ableton“, „Arduino“„Firmata“scenarijų ir pritvirtintą akselerometro pirštinę. Padarykime muziką!

Susiekite „Arduino“įrenginio „Ableton“prievadus prie skirtingų dalykų (siūlau sekti garsumą) ir pridėkite kodo eilutes, kad duomenys būtų siunčiami į kiekvieną „Arduino“prievadą.

Firmata.sendAnalog (prievadas, tūrio lygis);

Kiekvienam „Firmata“prievadui naudokite tokį kodą.

Jei norite padaryti ką nors paprasto, galite siųsti neapdorotus akselerometro rodmenis į Abletono uostus ir iš ten juos susieti. Norėdami įgyti sudėtingesnės patirties, galite nuspręsti: kokios pagreičio matuoklio vertės turėtų sukelti garsus, kaip ir kada?

Tada paleiskite visas „Ableton“kilpas, paleiskite „Arduino“kodą ir šokite!

(Atsakomybės apribojimas: jei planuojate sukurti bet kokį sudėtingą savo dainos algoritmą, gali prireikti daug laiko, kol jis bus sureguliuotas. „Dance away“gali būti mažiau tikslus, nei tikėtasi.)

8 žingsnis: „Track Class“(premija!)

Jei neprieštaraujate garsumo padidėjimui ar turite kitą būdą, kaip jį sušvelninti, praleiskite šį veiksmą. Priešingu atveju skaitykite toliau!

Pastebėjau, kad vienu metu perjungus garsą iš nutildyto į pilną, atsiranda nemalonių šurmuliuojančių garsų, ir malonu, kad garsas gali išnykti palaipsniui. Tačiau tai sunku padaryti sinchroninėje „Arduino“programavimo aplinkoje. Taigi, čia yra keletas kodų, kaip išnykti:

klasė Track {public: int volume; int volumeGoal; int updateSpeed; Takelis () {tūris = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int tikslas) {volumeGoal = tikslas; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int greitis) {updateSpeed = greitis; } int getVolume () {return volume; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } else if ((tūris = atnaujinimo greitis)) {tūris += atnaujinimo greitis; }} void mute (int fastness) {volumeGoal = 50; updateSpeed = greitis; } void full (int fastness) {volumeGoal = 950; updateSpeed = greitis; }};

Kiekvienas takelis turi dabartinį tūrį, tikslo tūrį ir greitį, kuriuo jis juda to tikslo apimties link. Jei norite pakeisti takelio garsumą, skambinkite setVolumeGoal (). Kiekvieną kartą, kai paleisite „Arduino“funkciją „loop ()“, skambinkite „updateVolume“() kiekvienu takeliu ir nusiųskite šią informaciją „Firmata“su „getVolume (“). Pakeiskite atnaujinimo greitį, kad greičiau arba palaipsniui išnyktumėte! Be to, jei galite, nenustatykite garsumo į 0; vietoj to nustatykite labai mažą vertę (numatytasis nutildytas () yra 100).

9 žingsnis: takelio ilgis, ritmai ir dar daugiau (premija!)

Galite padaryti daug dalykų, kad jūsų projekto skleidžiamas garsas būtų lengviau klausomas. Štai keletas variantų:

Galite sekti, kiek laiko daina skambėjo. Norėdami tai padaryti, turėsite išsiaiškinti, kada daina prasidėjo; Aš rekomenduoju sąrankos () funkcijos „ciklo“ciklą, kuris atideda jūsų kodo vykdymą, kol jis nepajunta rankos judesio. Išsaugokite dainos pradžios laiką kintamajame naudodami milis () ir patikrinkite, kiek laiko jis tęsiasi kiekvieną kartą, kai sukursite kilpą (). Tai galite naudoti norėdami įjungti arba išjungti tam tikras funkcijas tam tikru dainos metu.

Jei žinote, kiek laiko jūsų kilpos eina per milisekundes, taip pat galite sekti, kiek kartų perėjote, kad gautumėte niuansinį supratimą apie dainos struktūrą!

Kita problema, su kuria galite susidurti, yra tai, kada pradėti ir sustabdyti takelio grojimą. Aš išsprendžiau tai, stebėdamas, kokio ritmo daina šiuo metu buvo. Tada po gesto galėjau groti takelius bet kokiu greičiu, užuot iškart nutraukęs. Dėl to viskas vyksta daug sklandžiau. Štai pavyzdys:

if (millis () - lastLoop> = 4000) {kilpos += 1; lastLoop = milis (); už (int j = 0; j <8; j ++) {beatNow [j] = klaidinga; }} ritmas = (milis () - paskutinė kilpa) / 250; if (mušti! = lastBeat) {lastBeat = mušti; BeatsLeft -= 1; }

Būtinai atnaujinkite tomus pagal beatNow [beat] ir (arba) beatsLeft reikšmes. Pavyzdinis kodas, apimantis beveik viską šioje pamokoje, taip pat kai kurie, yra pridedamas, jei norite jį pamatyti praktiškai.

Rekomenduojamas: