Innholdsfortegnelse:

Danshanske: 9 trinn
Danshanske: 9 trinn

Video: Danshanske: 9 trinn

Video: Danshanske: 9 trinn
Video: Голубая стрела (1958) фильм 2024, Juli
Anonim
Danshanske
Danshanske

I denne opplæringen vil jeg lede deg gjennom å designe en hanske som lar deg samhandle med musikk gjennom dans. Du skal bygge en akselerometer-aktivert hanske, designe en komposisjon i Ableton, og deretter koble de to på en så kompleks eller enkel måte som du vil!

Rekvisita

  • Ableton (eller gratis prøveversjon)
  • En Arduino
  • Hoppekabler
  • Loddejern
  • Kartong
  • Varm limpistol
  • Mye fantasi

Trinn 1: Konsept

Dette prosjektet er designet for å være morsomt. Hvis måten eksempelprosjektet i denne opplæringen fungerer på ikke er morsomt for deg, redesign det!

Jeg anbefaler å sette på noen av favorittsangene dine, flytte hendene til dem og se hva som skjer. Beveger du hendene opp og ned? Side til side? Sakte eller raskt? Hvilke aspekter ved musikk gir deg lyst til å bevege hendene? Hvis du har en liste over disse nedskrevne, vil du sannsynligvis kunne finne ut noen måter å inkorporere bevegelsene du liker i dine eventuelle algoritmer.

Her er bevegelsene jeg brukte:

  • En rask opp-og-ned-bevegelse utløser starten på sangen, trommene eller basen. (Disse skjer på forskjellige punkter i sangen, ikke nødvendigvis samtidig!)
  • En langsom, tilty side-til-side bevegelse utløser en mer ekko, høy tone.
  • På en bestemt del av sangen, ved å vippe hånden min oppover, blir musikken stille ned - så jeg har "fanget" den i min lukkede knyttneve.

Bruk disse eller lag din egen!

(Vær oppmerksom på: denne opplæringen dekker ikke hvordan du genererer musikk eller melodier live i Ableton! Hvis du holder deg til disse instruksjonene, kan du bare øke/redusere volumet på spor eller bruk av lydeffekter.)

Trinn 2: Forbered akselerometeret

Forbered akselerometeret
Forbered akselerometeret

Finn først ut hvilken type akselerometer du har. Jeg brukte denne; ethvert tre-akset akselerometer vil gjøre. (Eller prøv en annen type sensor hvis du vil bli vill.) Sørg for at du vet hvordan du leser akselerometerdataene fra Arduino. Du må kanskje laste ned et bibliotek for akselerometeret ditt hvis det bruker noe mer komplekst enn analog inngang.

Etter å ha testet den med et brødbrett, loddes korte fargekodede ledninger inn i pinnene på akselerometeret ditt. Sett en rød ledning i strømnålen, en svart ledning i bakkenålen og eventuelle andre nødvendige ledninger for akselerometerkommunikasjon. (Hvis du har et I2C -akselerometer, er dette SCL- og SDA -pinnene. Hvis du har et analogt akselerometer, vil det sannsynligvis være en pinne for hver av x-, y- og z -utgangene.) Sørg for at loddetinnet er solid og at perlene ikke overlapper mellom tilstøtende pinner.

Trinn 3: Bygg hansken

Bygg hansken
Bygg hansken

Skjær et stykke tynt papp eller tykt papir i et rektangel som er litt større enn akselerometeret ditt. Lim akselerometeret til pappa, og pass på at du legger lim på bunnen. Lim deretter det akselerometeret med papp som støttes på baksiden av hansken. Sy hver ledning løst til håndleddet på hansken for å avlaste spenningen på akselerometeret, og så er hansken klar. Koble den til lengre ledninger for å ha nok plass til å bevege hånden når den er plugget inn.

Trinn 4: Komponer i Ableton

Nå er det på tide å komponere sangen du til slutt vil bruke hansken til å kontrollere. Jeg anbefaler Ableton -sløyfer som alle høres bra ut sammen, men kan brukes til å bygge opp gradvis: prøv melodi, akkorder, bass og perkusjon. Du kan bruke hansken til å kontrollere når hver sløyfe spiller eller ikke.

Hvis du kan tenke deg noen interessante typer lyder som du noen ganger kan innlemme i en sang, som en rar lydeffekt eller ukonvensjonelt instrument, kan du prøve å legge til en eller to av dem også! Du kan knytte dem til mindre vanlige håndbevegelser for å hente inn noe interessant av og til.

Her er en lenke til min Arduino-kompatible komposisjon, hvis du ikke vil skrive din egen:

(Dessverre er undervisning i Ableton ikke innenfor opplæringsområdet. Imidlertid er det mange gode veiledningsvideoer der ute, og Ableton har en gratis prøveperiode på 90 dager! Jeg anbefaler denne videoen.)

Trinn 5: Begynn å bruke Firmata

Begynn å bruke Firmata
Begynn å bruke Firmata

For at Arduino skal kunne kommunisere med Ableton, må du bruke et bibliotek som heter Firmata. Du må også laste ned tilkoblingssett for Ableton.

I Ableton klikker du Packs> Connection Kit> Devices i menyen øverst til venstre, og dobbeltklikker deretter på den første enheten (Arduino) for å legge den til. Husk å huske hvilket Ableton -spor du la enheten til!

Trinn 6: Test Firmata

Test Firmata
Test Firmata

Først skal vi teste og sørge for at Arduino kommuniserer med Ableton. Last opp denne kodebiten til Arduino og kjør den:

#include void analogWriteCallback (byte pin, int value) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), verdi); }} ugyldig oppsett () {Firmata.setFirmwareVersion (FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach (ANALOG_MESSAGE, analogWriteCallback); Firmata.begin (57600);} void loop () {Firmata.sendAnalog (0, 800);}

Dette er det minste minimum for å kommunisere med Firmata. Den sender kontinuerlig en utgang på 800 (av 1024) til port 0 på Firmata -enheten i Ableton. Hvis du laster opp denne koden til Arduino mens du har en Firmata -enhet åpen i Ableton, skal den se ut som bildet ovenfor. (Kart port 0 til alt i Ableton for å se verdiene.)

Du kan klikke på Kart-knappen og deretter en hvilken som helst Firmata-kompatibel enhet i Ableton for å legge til en kartlegging mellom inngangen som mottas til den porten og verdien til den Ableton-enheten. Enkle eksempler inkluderer volumet på et hvilket som helst spor eller hvilken som helst urskive i en lydeffekt. Utforsk og se hva du kan finne for å kartlegge!

Trinn 7: Påvirke musikk med håndbevegelsene dine

Påvirke musikk med håndbevegelsene dine!
Påvirke musikk med håndbevegelsene dine!

På dette tidspunktet bør du ha litt musikk i Ableton, et Firmata -skript på Arduino og en akselerometerhanske festet. La oss lage litt musikk!

Kart portene til Arduino -enheten i Ableton til forskjellige ting (jeg foreslår sporvolum), og legg deretter til kodelinjer for å sende data til hver port fra Arduino.

Firmata.sendAnalog (port, volumeLevel);

Bruk denne koden for hver Firmata -port.

Hvis du vil gjøre noe enkelt, kan du sende akselerometerverdiene ubehandlet til Ableton -porter og kartlegge dem derfra. For en mer sofistikert opplevelse kan du bestemme: hvilke akselerometerverdier som skal utløse lyder, hvordan og når?

Spill deretter alle Ableton -løkkene dine, kjør Arduino -koden og dans bort!

(Ansvarsfraskrivelse: hvis du planlegger å lage noen form for kompleks algoritme for sangen din, kan det ta mye tid å finjustere. "Dans bort" kan være mindre nøyaktig enn forventet.)

Trinn 8: Sporklassen (bonus!)

Hvis du ikke har noe imot volumspring eller har en annen måte å dempe det, hopper du over dette trinnet. Ellers les videre!

Jeg la merke til at det å bytte volum fra dempet til fullt på en gang skaper ubehagelige poppinglyder, og det er hyggelig å kunne falme i volumet mer gradvis. Imidlertid er det vanskelig å gjøre dette i Arduinos synkrone programmeringsmiljø. Så her er noen kode for å få popping til å forsvinne:

klasse Spor {public: int volume; int volumeMål; int updateSpeed; Spor () {volum = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int goal) {volumeGoal = goal; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int fastness) {updateSpeed = hurtighet; } int getVolume () {returvolum; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } annet hvis ((volum = oppdateringshastighet)) {volum += oppdateringshastighet; }} void mute (int fastness) {volumeGoal = 50; updateSpeed = hurtighet; } void full (int fastness) {volumeGoal = 950; updateSpeed = hurtighet; }};

Hvert spor har et nåværende volum, et målvolum og en hastighet der det beveger seg mot det målvolumet. Når du vil endre volumet på et spor, ringer du setVolumeGoal (). Hver gang du kjører loop () -funksjonen i Arduino, ringer du updateVolume () på hvert spor, og sender deretter informasjonen til Firmata med getVolume (). Endre oppdateringshastigheten for raskere eller mer gradvise fadeouts! Unngå også å sette volumet til 0 hvis du kan; I stedet setter du den til en veldig lav verdi (standarden i dempet () er 100).

Trinn 9: Sporlengde, slag og mer (bonus!)

Du kan gjøre mange ting for å gjøre lyden fra prosjektet lettere å lytte til. Her er noen alternativer:

Du kan spore hvor lenge sangen har kjørt. For å gjøre dette må du finne ut når sangen startet; Jeg anbefaler en while loop i setup () -funksjonen som forsinker koden din fra å kjøre til den har registrert en håndbevegelse. Lagre sangens starttid i en variabel ved hjelp av millis (), og sjekk hvor lenge den har pågått hver gang du sløyfer (). Du kan bruke dette til å aktivere eller deaktivere bestemte funksjoner på bestemte tidspunkter av sangen.

Hvis du vet hvor lange løkkene dine er i millisekunder, kan du også spore hvor mange løkker du har vært gjennom for en mer nyansert forståelse av sangstruktur!

Et annet potensielt problem du kan støte på er når du skal starte og stoppe et spor fra å spille. Jeg løste dette ved å holde oversikt over hvilken takt av sangen sangen var i. Deretter kunne jeg spille spor for et hvilket som helst antall slag etter en gest, i stedet for å kutte den av umiddelbart. Dette får ting til å flyte mye jevnere. Her er et eksempel:

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

Sørg for å oppdatere volumene tilsvarende beatNow [beat] og/eller beatsLeft. Eksempelkode som inneholder nesten alt i denne opplæringen, pluss noen, er vedlagt hvis du vil se den i praksis.

Anbefalt: