Innehållsförteckning:
- Tillbehör
- Steg 1: Koncept
- Steg 2: Förbered accelerometern
- Steg 3: Bygg handsken
- Steg 4: Komponera i Ableton
- Steg 5: Börja använda Firmata
- Steg 6: Testa Firmata
- Steg 7: Påverka musik med dina handrörelser
- Steg 8: Spårklassen (bonus!)
- Steg 9: Spårlängd, slag och mer (bonus!)
Video: Danshandske: 9 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:40
I denna handledning går jag igenom hur du utformar en handske som låter dig interagera med musik genom dans. Du kommer att bygga en accelerometer-aktiverad handske, designa en komposition i Ableton och anslut sedan de två på ett så komplext eller enkelt sätt som du vill!
Tillbehör
- Ableton (eller gratis provversion)
- En Arduino
- Startkablar
- Lödkolv
- Kartong
- Lim pistol
- Mycket fantasi
Steg 1: Koncept
Detta projekt är utformat för att vara roligt. Om hur exempelprojektet i den här självstudien fungerar inte är roligt för dig, gör det om!
Jag rekommenderar att du sätter på några av dina favoritlåtar, flyttar händerna till dem och ser vad som händer. Rör du händerna upp och ner? Sida till sida? Sakta eller snabbt? Vilka aspekter av musik gör att du vill röra händerna? Om du har en lista med dessa nedskrivna kan du förmodligen räkna ut några sätt att integrera de rörelser du tycker om i dina eventuella algoritmer.
Här är de rörelser jag använde:
- En snabb upp-och-ner-rörelse utlöser starten av låten, trummorna eller basen. (Dessa händer på olika punkter i låten, inte nödvändigtvis samtidigt!)
- En långsam, kantig rörelse från sida till sida utlöser ett mer ekot, högt ljud.
- Vid en viss del av låten, när jag lutar handen uppåt gör musiken tystare - så jag har "fångat" den i min stängda näve.
Använd dessa eller gör din egen!
(Observera: denna handledning täcker inte hur man skapar musik eller melodier live i Ableton! Om du håller dig till dessa instruktioner kan du bara öka/minska volymen på spår eller tillämpningen av ljudeffekter.)
Steg 2: Förbered accelerometern
Ta först reda på vilken typ av accelerometer du har. Jag använde den här; någon tre-axlig accelerometer kommer att göra. (Eller prova en annan typ av sensor om du vill bli vild.) Se till att du vet hur du läser accelerometerdata från Arduino. Du kan behöva ladda ner ett bibliotek för din accelerometer om den använder något mer komplext än analog ingång.
Efter att ha testat det med en brödbräda, lödda korta färgkodade trådar i stiften på din accelerometer. Sätt en röd tråd i strömstiftet, en svart kabel i jordstiftet och alla andra nödvändiga ledningar för accelerometerkommunikation. (Om du har en I2C -accelerometer är detta SCL- och SDA -stiften. Om du har en analog accelerometer kommer det sannolikt att finnas en stift för var och en av x-, y- och z -utgångarna.) Se till att din lödning är solid och att pärlorna inte överlappar mellan intilliggande stift.
Steg 3: Bygg handsken
Skär en bit tunn kartong eller tjockt papper i en rektangel som är något större än din accelerometer. Limma accelerometern på kartongen och se till att du lägger lim på botten. Limma sedan in den kartongstödda accelerometern på baksidan av handsken. Sy varje tråd löst till handskens handled för att lindra spänningen på accelerometern och sedan är din handske klar. Anslut den till längre ledningar för att ha tillräckligt med utrymme för att röra handen när den är ansluten.
Steg 4: Komponera i Ableton
Nu är det dags att komponera låten som du så småningom kommer att använda handsken för att styra. Jag rekommenderar Ableton -slingor som alla låter bra tillsammans, men kan användas för att bygga upp gradvis: prova melodi, ackord, bas och slagverk. Du kan använda din handske för att styra när varje slinga spelar eller inte.
Om du kan tänka dig några intressanta typer av ljud som ibland kan införlivas i en låt, som en konstig ljudeffekt eller okonventionellt instrument, kan du försöka lägga till en eller två av dem också! Du kan knyta dem till mindre vanliga handrörelser för att få in något intressant då och då.
Här är en länk till min Arduino-kompatibla komposition, om du inte vill skriva en egen:
(Tyvärr omfattas inte undervisningen av Ableton av självstudien. Det finns dock många bra instruktionsvideor där ute, och Ableton har en 90-dagars gratis provperiod! Jag rekommenderar den här videon.)
Steg 5: Börja använda Firmata
För att din Arduino ska kunna kommunicera med Ableton måste du använda ett bibliotek som heter Firmata. Du måste också ladda ner anslutningssatsen för Ableton.
I Ableton klickar du på Packs> Connection Kit> Devices i menyn högst upp till vänster och dubbelklickar sedan på den första enheten (Arduino) för att lägga till den. Se till att du kommer ihåg vilket Ableton -spår du lade enheten till!
Steg 6: Testa Firmata
Först testar vi och ser till att din Arduino kommunicerar med Ableton. Ladda upp det här kodavsnittet till din Arduino och 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ärde); }} 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);}
Detta är det absoluta minimum som krävs för att kommunicera med Firmata. Den skickar kontinuerligt en utgång på 800 (av 1024) till port 0 på Firmata -enheten i Ableton. Om du laddar upp den här koden till din Arduino medan du har en Firmata -enhet öppen i Ableton ska den se ut som bilden ovan. (Karta port 0 till allt i Ableton för att kunna se värdena.)
Du kan klicka på knappen Karta och sedan på vilken Firmata-kompatibel enhet som helst i Ableton för att lägga till en mappning mellan ingången som tas emot till den porten och värdet på den Ableton-enheten. Enkla exempel inkluderar volymen på alla spår eller valfri rattar i en ljudeffekt. Utforska och se vad du kan hitta för att kartlägga!
Steg 7: Påverka musik med dina handrörelser
Vid den här tiden bör du ha lite musik i Ableton, ett Firmata -manus på din Arduino och en accelerometerhandske ansluten. Låt oss göra lite musik!
Kartlägg portarna på Arduino -enheten i Ableton till olika saker (jag föreslår spårvolym) och lägg sedan till kodrader för att skicka data till varje port från Arduino.
Firmata.sendAnalog (port, volumeLevel);
Använd den här koden för varje Firmata -port.
Om du vill göra något enkelt kan du skicka accelerometervärdena obearbetade till Ableton -portar och kartlägga dem därifrån. För en mer sofistikerad upplevelse kan du bestämma: vilka accelerometervärden som ska utlösa ljud, hur och när?
Spela sedan alla dina Ableton -slingor, kör din Arduino -kod och dansa iväg!
(Friskrivningsklausul: om du planerar att skapa någon form av komplex algoritm för din låt kan det ta mycket tid att finjustera. "Dansa bort" kan vara mindre korrekt än förväntat.)
Steg 8: Spårklassen (bonus!)
Om du inte har något emot volym poppar eller har ett annat sätt att mildra det, hoppa över det här steget. Annars läs vidare!
Jag märkte att byta volym från dämpad till full på en gång skapar några obehagliga poppljud, och det är skönt att kunna bleka i volym mer gradvis. Det är dock svårt att göra detta i Arduinos synkrona programmeringsmiljö. Så här är lite kod för att få popping att försvinna:
klass Spår {public: int volym; int volumeGoal; int updateSpeed; Spår () {volym = 0; volumeGoal = 0; updateSpeed = 0; } void setVolumeGoal (int mål) {volumeGoal = mål; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int fastness) {updateSpeed = fastness; } int getVolume () {returvolym; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } annars om ((volym = updateSpeed)) {volume += updateSpeed; }} void mute (int fastness) {volumeGoal = 50; updateSpeed = snabbhet; } void full (int fastness) {volumeGoal = 950; updateSpeed = snabbhet; }};
Varje spår har en aktuell volym, en målvolym och en hastighet med vilken den går mot den målvolymen. Om du vill ändra volymen på ett spår, ring setVolumeGoal (). Varje gång du kör loop () -funktionen i din Arduino, ring updateVolume () på varje spår och skicka sedan den informationen till Firmata med getVolume (). Ändra uppdateringshastigheten för snabbare eller mer gradvis fadeouts! Undvik också att ställa in volymen till 0 om du kan; ställ det istället till ett mycket lågt värde (standard i tyst () är 100).
Steg 9: Spårlängd, slag och mer (bonus!)
Du kan göra många saker för att göra ljudet från ditt projekt lättare att lyssna på. Här är några alternativ:
Du kan spåra hur länge låten har spelats. För att göra detta måste du ta reda på när låten började; Jag rekommenderar en stundslinga i setup () -funktionen som fördröjer din kod från att köras tills den känner av en handrörelse. Lagra låtens starttid i en variabel med millis () och kontrollera hur länge den har pågått varje gång du loopar (). Du kan använda detta för att aktivera eller inaktivera vissa funktioner vid vissa tidpunkter i låten.
Om du vet hur långa dina slingor är i millisekunder kan du också spåra hur många slingor du har gått igenom för en mer nyanserad förståelse av låtstruktur!
Ett annat potentiellt problem du kan stöta på är när du ska starta och stoppa ett spår från att spela. Jag löste detta genom att hålla reda på vilket slag av ett mått låten befann sig i. Sedan kunde jag spela spår för valfritt antal slag efter en gest, istället för att klippa av det direkt. Detta får saker att flyta mycket smidigare. Här är ett exempel:
if (millis () - lastLoop> = 4000) {loops += 1; lastLoop = millis (); för (int j = 0; j <8; j ++) {beatNow [j] = false; }} beat = (millis () - lastLoop) / 250; if (beat! = lastBeat) {lastBeat = beat; beatsLeft -= 1; }
Se till att du uppdaterar volymerna i enlighet med värdena för beatNow [beat] och/eller beatsLeft. Exempelkod som innehåller nästan allt i den här självstudien, plus en del, bifogas om du vill se den i praktiken.
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Steg för steg PC -byggnad: 9 steg
Steg för steg PC -byggnad: Tillbehör: Hårdvara: ModerkortCPU & CPU -kylarePSU (strömförsörjningsenhet) Lagring (HDD/SSD) RAMGPU (krävs inte) CaseTools: Skruvmejsel ESD -armband/mathermisk pasta med applikator
Tre högtalarkretsar -- Steg-för-steg handledning: 3 steg
Tre högtalarkretsar || Steg-för-steg-handledning: Högtalarkretsen förstärker ljudsignalerna som tas emot från miljön till MIC och skickar den till högtalaren varifrån förstärkt ljud produceras. Här visar jag dig tre olika sätt att göra denna högtalarkrets med:
Steg-för-steg-utbildning i robotik med ett kit: 6 steg
Steg-för-steg-utbildning i robotik med ett kit: Efter ganska många månader av att bygga min egen robot (se alla dessa), och efter att två gånger ha misslyckats med delar, bestämde jag mig för att ta ett steg tillbaka och tänka om min strategi och riktning. De flera månaders erfarenhet var ibland mycket givande och
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)