Sommario:

Guanto Danza: 9 Passi
Guanto Danza: 9 Passi

Video: Guanto Danza: 9 Passi

Video: Guanto Danza: 9 Passi
Video: ПОПУЛЯРНЫЙ ТАНЕЦ Astronomia SHUFFLE TUTORIAL TUZELITY 2024, Novembre
Anonim
Guanto da ballo
Guanto da ballo

In questo tutorial, ti guiderò attraverso la progettazione di un guanto che ti permetta di interagire con la musica attraverso la danza. Costruirai un guanto abilitato per l'accelerometro, progetterai una composizione in Ableton e poi collegherai i due nel modo più complesso o semplice che desideri!

Forniture

  • Ableton (o prova gratuita)
  • Un Arduino
  • Cavi jumper
  • Saldatore
  • Cartone
  • Pistola per colla a caldo
  • Tanta fantasia

Passaggio 1: concetto

Questo progetto è pensato per essere divertente. Se il modo in cui funziona il progetto di esempio in questo tutorial non è divertente per te, ridisegnalo!

Ti consiglio di mettere su alcune delle tue canzoni preferite, di avvicinarci con le mani e di vedere cosa succede. Muovi le mani su e giù? Fianco a fianco? Lentamente o velocemente? Quali aspetti della musica ti fanno venire voglia di muovere le mani? Se disponi di un elenco di questi elementi, probabilmente sarai in grado di trovare alcuni modi per incorporare i movimenti che ti piacciono nei tuoi eventuali algoritmi.

Ecco i movimenti che ho usato:

  • Un rapido movimento su e giù attiva l'inizio della canzone, della batteria o del basso. (Questi si verificano in punti diversi della canzone, non necessariamente contemporaneamente!)
  • Un movimento lento e inclinato da un lato all'altro innesca un suono più echeggiante e acuto.
  • In una particolare sezione della canzone, inclinando la mano verso l'alto, la musica si calma, quindi l'ho "presa" nel mio pugno chiuso.

Usa questi o creane uno tuo!

(Nota: questo tutorial non spiega come generare musica o melodie dal vivo in Ableton! Se ti attieni a queste istruzioni, sarai solo in grado di aumentare/diminuire il volume delle tracce o l'applicazione di effetti audio.)

Passaggio 2: preparare l'accelerometro

Preparare l'accelerometro
Preparare l'accelerometro

Per prima cosa, scopri che tipo di accelerometro hai. Ho usato questo; andrà bene qualsiasi accelerometro a tre assi. (Oppure prova un altro tipo di sensore se vuoi scatenarti.) Assicurati di sapere come leggere i dati dell'accelerometro da Arduino. Potrebbe essere necessario scaricare una libreria per il tuo accelerometro se utilizza qualcosa di più complesso dell'input analogico.

Dopo averlo testato con una breadboard, saldare i fili con codice colore corto nei pin del tuo accelerometro. Metti un filo rosso nel pin di alimentazione, un filo nero nel pin di terra e qualsiasi altro filo necessario per la comunicazione dell'accelerometro. (Se hai un accelerometro I2C, questi saranno i pin SCL e SDA. Se hai un accelerometro analogico, probabilmente ci sarà un pin per ciascuna delle uscite x, yez.) Assicurati che la saldatura sia solida e che le perline non si sovrappongano tra i perni adiacenti.

Passaggio 3: costruisci il guanto

Costruisci il guanto
Costruisci il guanto

Taglia un pezzo di cartone sottile o di carta spessa in un rettangolo leggermente più grande del tuo accelerometro. Incolla l'accelerometro sul cartone, assicurandoti di mettere la colla sul fondo. Quindi, incolla l'accelerometro con il retro in cartone sul retro del guanto. Cucire ogni filo senza stringere al polso del guanto per alleviare la tensione sull'accelerometro, quindi il guanto è pronto. Collegalo a cavi più lunghi per avere spazio sufficiente per muovere la mano quando è collegato.

Passaggio 4: componi in Ableton

Ora è il momento di comporre la canzone che alla fine userai il guanto per controllare. Raccomando i loop di Ableton che suonano tutti bene insieme, ma possono essere usati per costruire gradualmente: prova melodia, accordi, basso e percussioni. Sarai in grado di usare il tuo guanto per controllare quando ogni loop viene riprodotto o meno.

Se riesci a pensare a qualche tipo di suono interessante da incorporare occasionalmente in una canzone, come uno strano effetto sonoro o uno strumento non convenzionale, prova ad aggiungerne uno o due! Puoi legarli a movimenti della mano meno comuni per portare qualcosa di interessante di tanto in tanto.

Ecco un link alla mia composizione compatibile con Arduino, nel caso non volessi scriverne una tua:

(Sfortunatamente, insegnarti Ableton non rientra nell'ambito del tutorial. Tuttavia, ci sono molti buoni video di istruzioni là fuori e Ableton ha una prova gratuita di 90 giorni! Consiglio questo video.)

Passaggio 5: iniziare a utilizzare Firmata

Inizia a usare Firmata
Inizia a usare Firmata

Per consentire al tuo Arduino di comunicare con Ableton, dovrai utilizzare una libreria chiamata Firmata. Dovrai anche scaricare il kit di connessione per Ableton.

In Ableton, fai clic su Pacchetti>Kit di connessione>Dispositivi nel menu in alto a sinistra, quindi fai doppio clic sul primo dispositivo (Arduino) per aggiungerlo. Assicurati di ricordare a quale traccia Ableton hai aggiunto il dispositivo!

Passaggio 6: test del firmware

Prova Firmata
Prova Firmata

Innanzitutto, testeremo e ci assicureremo che il tuo Arduino stia comunicando con Ableton. Carica questo frammento di codice sul tuo Arduino ed eseguilo:

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

Questo è il minimo indispensabile per comunicare con Firmata. Invia continuamente un output di 800 (su 1024) alla porta 0 del dispositivo Firmata in Ableton. Se carichi questo codice sul tuo Arduino mentre hai un dispositivo Firmata aperto in Ableton, dovrebbe assomigliare all'immagine sopra. (Mappa la porta 0 su qualsiasi cosa in Ableton per poter vedere i valori.)

Puoi fare clic sul pulsante Mappa e quindi su qualsiasi dispositivo compatibile con Firmata in Ableton per aggiungere una mappatura tra l'input ricevuto su quella porta e il valore di quel dispositivo Ableton. Esempi facili includono il volume di qualsiasi traccia o qualsiasi manopola all'interno di un effetto audio. Esplora e vedi cosa puoi trovare su cui mappare!

Passaggio 7: influenza la musica con i movimenti delle mani

Influenza la musica con i movimenti delle tue mani!
Influenza la musica con i movimenti delle tue mani!

A questo punto, dovresti avere della musica in Ableton, uno script Firmata sul tuo Arduino e un guanto per l'accelerometro attaccato. Facciamo un po' di musica!

Mappa le porte del dispositivo Arduino in Ableton su cose diverse (suggerisco di tracciare il volume), quindi aggiungi righe di codice per inviare dati a ciascuna porta da Arduino.

Firmata.sendAnalog(port, volumeLevel);

Usa un codice come questo per ogni porta Firmata.

Se vuoi fare qualcosa di semplice, puoi inviare i valori dell'accelerometro non elaborati alle porte Ableton e mapparli da lì. Per un'esperienza più sofisticata, puoi decidere: quali valori dell'accelerometro dovrebbero attivare i suoni, come e quando?

Quindi riproduci tutti i tuoi loop Ableton, esegui il tuo codice Arduino e balla!

(Disclaimer: se hai intenzione di creare qualsiasi tipo di algoritmo complesso per la tua canzone, potrebbe volerci molto tempo per perfezionare. "Dance away" potrebbe essere meno accurato del previsto.)

Passaggio 8: la classe di pista (bonus!)

Se non ti dispiace aumentare il volume o hai un altro modo per ridurlo, salta questo passaggio. Altrimenti, continua a leggere!

Ho notato che il passaggio del volume da muto a pieno in una volta crea alcuni spiacevoli scoppiettii, ed è bello poter diminuire il volume in modo più graduale. Tuttavia, è difficile farlo nell'ambiente di programmazione sincrono di Arduino. Quindi ecco un codice per far sparire il popping:

class Track{ public: int volume; int volume Obiettivo; int updateSpeed; Traccia() { volume = 0; volumeObiettivo = 0; velocità di aggiornamento = 0; } void setVolumeGoal(int goal) { volumeGoal = goal; } int getVolumeGoal() { return volumeGoal; } void setUpdateSpeed(int solidità) { updateSpeed = solidità; } int getVolume() { restituisce il volume; } void updateVolume() { if((volume > volumeGoal) && ((volume - volumeGoal) >= updateSpeed)) { volume -= updateSpeed; } else if((volume = updateSpeed)) { volume += updateSpeed; } } void mute(int solidità) { volumeGoal = 50; updateSpeed = solidità; } void full(int solidità) { volumeGoal = 950; updateSpeed = solidità; }};

Ogni traccia ha un volume corrente, un volume obiettivo e una velocità con cui si sta muovendo verso quel volume obiettivo. Quando vuoi cambiare il volume di una traccia, chiama setVolumeGoal(). Ogni volta che esegui la funzione loop() nel tuo Arduino, chiama updateVolume() su ogni traccia, quindi invia tali informazioni a Firmata con getVolume(). Modifica la velocità di aggiornamento per dissolvenze più rapide o più graduali! Inoltre, evita di impostare il volume su 0 se puoi; invece, impostalo su un valore molto basso (il valore predefinito in mute() è 100).

Passaggio 9: lunghezza della traccia, battute e altro (bonus!)

Puoi fare molte cose per rendere più facile l'ascolto del suono risultante dal tuo progetto. Ecco alcune opzioni:

Puoi tenere traccia di quanto tempo è in esecuzione la canzone. Per fare ciò, dovrai capire quando è iniziata la canzone; Raccomando un ciclo while nella funzione setup() che ritarda l'esecuzione del codice fino a quando non ha rilevato un movimento della mano. Memorizza l'ora di inizio della canzone in una variabile usando millis() e controlla da quanto tempo è andata avanti ogni volta che esegui il loop(). Puoi usarlo per abilitare o disabilitare determinate funzioni in determinati momenti della canzone.

Se sai quanto sono lunghi i tuoi loop in millisecondi, puoi anche tenere traccia di quanti loop hai attraversato per una comprensione più sfumata della struttura della canzone!

Un altro potenziale problema che potresti incontrare è quando avviare e interrompere la riproduzione di una traccia. Ho risolto questo problema tenendo traccia di quale battuta di una misura si trovava attualmente la canzone. Quindi potevo riprodurre tracce per un numero qualsiasi di battute dopo un gesto, invece di interromperle immediatamente. Questo fa sì che le cose scorrano molto più agevolmente. Ecco un esempio:

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

Assicurati di aggiornare i volumi in base ai valori di beatNow[beat] e/o beatsLeft. Il codice di esempio che incorpora quasi tutto in questo tutorial, più alcuni, è allegato nel caso tu voglia vederlo in pratica.

Consigliato: