Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Konsept
- Trinn 2: Forbered akselerometeret
- Trinn 3: Bygg hansken
- Trinn 4: Komponer i Ableton
- Trinn 5: Begynn å bruke Firmata
- Trinn 6: Test Firmata
- Trinn 7: Påvirke musikk med håndbevegelsene dine
- Trinn 8: Sporklassen (bonus!)
- Trinn 9: Sporlengde, slag og mer (bonus!)
Video: Danshanske: 9 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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
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
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
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
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å 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:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw
Hvordan lage et nettsted (en trinn-for-trinn-guide): 4 trinn
Hvordan lage et nettsted (en trinn-for-trinn-guide): I denne veiledningen vil jeg vise deg hvordan de fleste webutviklere bygger nettstedene sine og hvordan du kan unngå dyre nettstedbyggere som ofte er for begrenset til et større nettsted. hjelpe deg med å unngå noen feil som jeg gjorde da jeg begynte