Indholdsfortegnelse:

Danskehandske: 9 trin
Danskehandske: 9 trin

Video: Danskehandske: 9 trin

Video: Danskehandske: 9 trin
Video: РАДУЖНЫЕ ДРУЗЬЯ — КАЧКИ?! НЕЗАКОННЫЕ Эксперименты VR! 2024, Juli
Anonim
Danske handske
Danske handske

I denne vejledning vil jeg guide dig gennem at designe en handske, der lader dig interagere med musik gennem dans. Du bygger en accelerometer-aktiveret handske, designer en sammensætning i Ableton og forbinder derefter de to på en så kompleks eller enkel måde, som du gerne vil!

Forbrugsvarer

  • Ableton (eller gratis prøveperiode)
  • En Arduino
  • Jumper kabler
  • Loddekolbe
  • Pap
  • Varm limpistol
  • Masser af fantasi

Trin 1: Koncept

Dette projekt er designet til at være sjovt. Hvis den måde, eksempelprojektet i denne vejledning fungerer på, ikke er sjovt for dig, skal du redesigne det!

Jeg anbefaler at tage nogle af dine yndlingssange på, flytte dine hænder til dem og se, hvad der sker. Bevæger du dine hænder op og ned? Side til side? Langsomt eller hurtigt? Hvilke aspekter af musik får dig til at flytte dine hænder? Hvis du har en liste over disse nedskrevne, vil du sandsynligvis kunne finde ud af nogle måder at indarbejde de bevægelser, du nyder, i dine eventuelle algoritmer.

Her er de bevægelser, jeg brugte:

  • En hurtig op-og-ned bevægelse udløser starten på sangen, trommerne eller basen. (Disse sker på forskellige punkter i sangen, ikke nødvendigvis samtidigt!)
  • En langsom, tilty side-til-side bevægelse udløser en mere ekko, høj tone.
  • På et bestemt afsnit af sangen, vipper min hånd opad, gør musikken stille ned - så jeg har "fanget" den i min lukkede knytnæve.

Brug disse eller lav dine egne!

(Bemærk: denne vejledning dækker ikke, hvordan man genererer musik eller melodier live i Ableton! Hvis du holder dig til disse instruktioner, vil du kun kunne øge/reducere lydstyrken på spor eller anvendelsen af lydeffekter.)

Trin 2: Forbered accelerometeret

Forbered accelerometeret
Forbered accelerometeret

Find først ud af, hvilken type accelerometer du har. Jeg brugte denne; enhver tre-akset accelerometer vil gøre. (Eller prøv en anden type sensor, hvis du vil blive vild.) Sørg for, at du ved, hvordan du læser accelerometerdataene fra Arduino. Du skal muligvis downloade et bibliotek til dit accelerometer, hvis det bruger noget mere komplekst end analog input.

Efter at have testet det med et brødbræt, loddes korte farvekodede ledninger ind i stifterne på dit accelerometer. Sæt en rød ledning i strømstiften, en sort ledning i jordnålen og andre nødvendige ledninger til accelerometerkommunikation. (Hvis du har et I2C -accelerometer, er dette SCL- og SDA -benene. Hvis du har et analogt accelerometer, vil der sandsynligvis være en pin til hver af x-, y- og z -udgangene.) Sørg for, at loddet er solidt og at perlerne ikke overlapper mellem tilstødende stifter.

Trin 3: Byg handsken

Byg handsken
Byg handsken

Skær et stykke tyndt pap eller tykt papir i et rektangel, der er lidt større end dit accelerometer. Lim accelerometeret til pap, og sørg for at du lægger lim på bunden. Lim derefter accelerometeret med pap på bagsiden af din handske. Sy hver ledning løst til handskens håndled for at aflaste spændingen på accelerometeret, og så er din handske klar. Tilslut den til længere ledninger for at have nok plads til at flytte din hånd, når den er tilsluttet.

Trin 4: Komponér i Ableton

Nu er det tid til at komponere den sang, du til sidst vil bruge handsken til at styre. Jeg anbefaler Ableton -sløjfer, der alle lyder godt sammen, men kan bruges til gradvist at bygge op: Prøv melodi, akkorder, bas og percussion. Du kan bruge din handske til at styre, hvornår hver loop spiller eller ikke.

Hvis du kan tænke på nogle interessante slags lyde, som du lejlighedsvis kan indarbejde i en sang, som en underlig lydeffekt eller et ukonventionelt instrument, så prøv også at tilføje en eller to af dem! Du kan binde dem til mindre almindelige håndbevægelser for at bringe noget interessant ind imellem.

Her er et link til min Arduino-kompatible komposition, hvis du ikke vil skrive din egen:

(Desværre er undervisning i Ableton ikke inden for omfanget af selvstudiet. Der er dog mange gode vejledningsvideoer derude, og Ableton har en gratis prøveperiode på 90 dage! Jeg anbefaler denne video.)

Trin 5: Begynd at bruge Firmata

Begynd at bruge Firmata
Begynd at bruge Firmata

For at din Arduino kan kommunikere med Ableton, skal du bruge et bibliotek kaldet Firmata. Du skal også downloade Connection Kit til Ableton.

I Ableton skal du klikke på Packs> Connection Kit> Devices i menuen øverst til venstre, og dobbeltklik derefter på den første enhed (Arduino) for at tilføje den. Sørg for at huske, hvilket Ableton -spor du tilføjede enheden til!

Trin 6: Test Firmata

Test Firmata
Test Firmata

Først tester vi og sørger for, at din Arduino kommunikerer med Ableton. Upload dette kodestykke til din Arduino, og kør det:

#include void analogWriteCallback (byte pin, int value) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), værdi); }} ugyldig opsætning () {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 minimale minimum, der er nødvendigt for at kommunikere med Firmata. Det sender kontinuerligt et output på 800 (ud af 1024) til port 0 på Firmata -enheden i Ableton. Hvis du uploader denne kode til din Arduino, mens du har en Firmata -enhed åben i Ableton, skal den ligne billedet ovenfor. (Kort port 0 til alt i Ableton for at kunne se værdierne.)

Du kan klikke på knappen Kort og derefter på en hvilken som helst Firmata-kompatibel enhed i Ableton for at tilføje en kortlægning mellem input modtaget til denne port og værdien af den Ableton-enhed. Nemme eksempler inkluderer lydstyrken på ethvert spor eller en urskive inden for en lydeffekt. Udforsk og se, hvad du kan finde at kortlægge til!

Trin 7: Påvirk musik med dine håndbevægelser

Påvirke musik med dine håndbevægelser!
Påvirke musik med dine håndbevægelser!

På dette tidspunkt skulle du have noget musik i Ableton, et Firmata -script på din Arduino og en accelerometerhandske tilsluttet. Lad os lave noget musik!

Kort porte på Arduino -enheden i Ableton til forskellige ting (jeg foreslår sporvolumen), og tilføj derefter kodelinjer for at sende data til hver port fra Arduino.

Firmata.sendAnalog (port, volumeLevel);

Brug kode som denne for hver Firmata -port.

Hvis du vil gøre noget simpelt, kan du sende accelerometerværdierne ubehandlede til Ableton -porte og kortlægge dem derfra. For en mere sofistikeret oplevelse kan du beslutte: hvilke accelerometerværdier skal udløse lyde, hvordan og hvornår?

Derefter kan du spille alle dine Ableton -sløjfer, køre din Arduino -kode og danse væk!

(Ansvarsfraskrivelse: hvis du planlægger at oprette en form for kompleks algoritme til din sang, kan det tage lang tid at finjustere. "Dans væk" kan være mindre præcis end forventet.)

Trin 8: Sporklassen (bonus!)

Hvis du ikke har noget imod at volumen springer eller har en anden måde at afbøde det, skal du springe dette trin over. Ellers læs videre!

Jeg bemærkede, at skift af lydstyrke fra dæmpet til fuld på én gang skaber nogle ubehagelige poppelyde, og det er rart at kunne falme i lydstyrke mere gradvist. Det er imidlertid svært at gøre dette i Arduinos synkrone programmeringsmiljø. Så her er en kode for at få popping til at forsvinde:

klasse Spor {public: int volume; int volumeMål; int updateSpeed; Spor () {volumen = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int mål) {volumeGoal = mål; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int fastness) {updateSpeed = hurtighed; } int getVolume () {return volume; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } ellers hvis ((volumen = updateSpeed)) {volume += updateSpeed; }} void mute (int fastness) {volumeGoal = 50; updateSpeed = hurtighed; } tomrum fuld (int fastness) {volumeGoal = 950; updateSpeed = hurtighed; }};

Hvert spor har en aktuel volumen, en målvolumen og en hastighed, hvormed den bevæger sig mod denne målvolumen. Hvis du vil ændre lydstyrken på et nummer, skal du ringe til setVolumeGoal (). Hver gang du kører loop () -funktionen i din Arduino, skal du ringe til updateVolume () på hvert nummer og derefter sende disse oplysninger til Firmata med getVolume (). Skift opdateringshastighed for hurtigere eller mere gradvise fadeouts! Undgå også at indstille lydstyrken til 0, hvis du kan; I stedet skal du indstille den til en meget lav værdi (standarden i lydløs () er 100).

Trin 9: Sporlængde, slag og mere (bonus!)

Du kan gøre mange ting for at gøre lyden fra dit projekt lettere at lytte til. Her er et par muligheder:

Du kan spore, hvor længe sangen har kørt. For at gøre dette skal du finde ud af, hvornår sangen startede; Jeg anbefaler et stykke loop i setup () -funktionen, som forsinker din kode i at køre, indtil den har registreret en håndbevægelse. Gem sangens starttid i en variabel ved hjælp af millis (), og kontroller, hvor lang tid det har foregået hver gang du loop (). Du kan bruge dette til at aktivere eller deaktivere bestemte funktioner på bestemte tidspunkter af sangen.

Hvis du ved, hvor lange dine sløjfer er i millisekunder, kan du også spore, hvor mange sløjfer du har været igennem for en mere nuanceret forståelse af sangstruktur!

Et andet potentielt problem, du kan støde på, er, hvornår du skal starte og stoppe et nummer fra at spille. Jeg løste dette ved at holde styr på, hvilket slag af et mål sangen i øjeblikket var i. Derefter kunne jeg afspille numre for et vilkårligt antal slag efter en gestus, i stedet for at afbryde det med det samme. Dette får tingene til at flyde meget mere gnidningsløst. Her er et eksempel:

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

Sørg for at opdatere mængder i overensstemmelse hermed til værdierne beatNow [beat] og/eller beatsLeft. Eksempelkode, der indeholder næsten alt i denne vejledning, plus nogle, er vedhæftet, hvis du vil se den i praksis.

Anbefalede: