Taula de continguts:

Guant de ball: 9 passos
Guant de ball: 9 passos

Vídeo: Guant de ball: 9 passos

Vídeo: Guant de ball: 9 passos
Vídeo: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Juliol
Anonim
Guant de ball
Guant de ball

En aquest tutorial, us guiaré per dissenyar un guant que us permeti interactuar amb la música a través de la dansa. Construireu un guant amb acceleròmetre, dissenyareu una composició a Ableton i, a continuació, connectareu els dos de la manera més complexa o senzilla que vulgueu.

Subministraments

  • Ableton (o prova gratuïta)
  • Un Arduino
  • Cables de pont
  • Soldador
  • Cartró
  • Pistola de cola calenta
  • Molta imaginació

Pas 1: concepte

Aquest projecte està dissenyat per ser divertit. Si el funcionament del projecte d'exemple d'aquest tutorial no és divertit per a vosaltres, redissenyeu-lo.

Us recomano posar algunes de les vostres cançons preferides, moure-us les mans i veure què passa. Moveu les mans cap amunt i cap avall? Costat a costat? Lent o ràpidament? Quins aspectes de la música fan que vulgueu moure les mans? Si teniu una llista escrita, probablement podreu esbrinar algunes maneres d’incorporar els moviments que gaudiu als vostres eventuals algoritmes.

Aquests són els moviments que he utilitzat:

  • Un moviment ràpid de pujada i baixada provoca l’inici de la cançó, la bateria o el baix. (Aquests passen en diferents punts de la cançó, no necessàriament simultàniament).
  • Un moviment lent i inclinat de costat a costat provoca un so més agut i agut.
  • En una secció concreta de la cançó, inclinar la mà cap amunt fa que la música es silenci, de manera que l'he "agafat" amb el puny tancat.

Utilitzeu-les o feu-les vostres!

(Tingueu en compte: aquest tutorial no inclou la manera de generar música o melodies en directe a Ableton. Si seguiu aquestes instruccions, només podreu augmentar / disminuir el volum de pistes o l'aplicació d'efectes d'àudio.)

Pas 2: prepareu l’acceleròmetre

Prepareu l’acceleròmetre
Prepareu l’acceleròmetre

En primer lloc, esbrineu quin tipus d’acceleròmetre teniu. He utilitzat aquest; farà qualsevol acceleròmetre de tres eixos. (O proveu un altre tipus de sensor si voleu fer-se salvatge.) Assegureu-vos de saber llegir les dades de l’acceleròmetre des de l’Arduino. És possible que hagueu de descarregar una biblioteca per al vostre acceleròmetre si utilitza alguna cosa més complexa que l'entrada analògica.

Després d’haver-lo provat amb un tauler d’anàlisi, soldeu cables curts amb codis de colors als passadors del vostre acceleròmetre. Introduïu un cable vermell al pin d'alimentació, un cable negre al pin de terra i qualsevol altre cable necessari per a la comunicació de l'acceleròmetre. (Si teniu un acceleròmetre I2C, seran els pins SCL i SDA. Si teniu un acceleròmetre analògic, és probable que hi hagi un pin per a cadascuna de les sortides x, y i z). Assegureu-vos que la soldadura sigui sòlida i que les perles no es superposin entre els passadors adjacents.

Pas 3: Construeix el guant

Construeix el guant
Construeix el guant

Talleu un tros de cartró prim o paper gruixut en un rectangle lleugerament més gran que l’acceleròmetre. Enganxeu l’acceleròmetre al cartró i assegureu-vos que poseu cola a la part inferior. A continuació, enganxeu l’acceleròmetre amb suport de cartró a la part posterior del guant. Cosiu cada filferro fins al canell del guant per alleujar la tensió de l’acceleròmetre i, tot seguit, el guant estarà llest. Connecteu-lo a cables més llargs per tenir prou espai per moure la mà quan està endollada.

Pas 4: redactar a Ableton

Ara és el moment de compondre la cançó que finalment utilitzaràs el guant per controlar. Recomano bucles Ableton que sonin bé junts, però que es puguin utilitzar per anar acumulant-se gradualment: proveu melodia, acords, baixos i percussions. Podreu utilitzar el guant per controlar quan toca o no cada bucle.

Si se us acudeix algun tipus de so interessant per incorporar de tant en tant a una cançó, com ara un efecte de so estrany o un instrument poc convencional, proveu d'afegir-ne un o dos. Podeu lligar-los a moviments de mans menys habituals per provocar de tant en tant alguna cosa interessant.

Aquí teniu un enllaç a la meva composició compatible amb Arduino, per si no voleu escriure’n una:

(Malauradament, ensenyar-vos Ableton no és dins de l'abast del tutorial. Tot i això, hi ha molts bons vídeos sobre instruccions i Ableton té una prova gratuïta de 90 dies. Us recomano aquest vídeo.)

Pas 5: Comenceu a utilitzar Firmata

Comenceu a utilitzar Firmata
Comenceu a utilitzar Firmata

Per tal que el vostre Arduino es pugui comunicar amb Ableton, haureu d’utilitzar una biblioteca anomenada Firmata. També haureu de descarregar el kit de connexió per a Ableton.

A Ableton, feu clic a Paquets> Kit de connexió> Dispositius al menú de la part superior esquerra i, a continuació, feu doble clic al primer dispositiu (Arduino) per afegir-lo. Assegureu-vos de recordar a quina pista d’Ableton heu afegit el dispositiu.

Pas 6: proveu Firmata

Firmata de prova
Firmata de prova

En primer lloc, provarem i assegurarem que el vostre Arduino es comuniqui amb Ableton. Pengeu aquest fragment de codi al vostre Arduino i executeu-lo:

#include void analogWriteCallback (pin de byte, valor int) {if (IS_PIN_PWM (pin)) {pinMode (PIN_TO_DIGITAL (pin), OUTPUT); analogWrite (PIN_TO_PWM (pin), valor); }} 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);}

Aquest és el mínim necessari per comunicar-se amb Firmata. Envia contínuament una sortida de 800 (de 1024) al port 0 del dispositiu Firmata a Ableton. Si pengeu aquest codi al vostre Arduino mentre teniu un dispositiu Firmata obert a Ableton, hauria de semblar a la imatge superior. (Assigneu el port 0 a qualsevol element d’Ableton per poder veure els valors.)

Podeu fer clic al botó Mapa i, a continuació, a qualsevol dispositiu compatible amb Firmata a Ableton per afegir un mapatge entre l'entrada rebuda a aquest port i el valor d'aquest dispositiu Ableton. Alguns exemples senzills inclouen el volum de qualsevol pista o marcatge d’un efecte d’àudio. Exploreu i vegeu a què podeu trobar el mapa.

Pas 7: Influiu la música amb els moviments de les mans

Influencia la música amb els moviments de les mans!
Influencia la música amb els moviments de les mans!

En aquest moment, hauríeu de tenir música a Ableton, un script Firmata al vostre Arduino i un guant acceleròmetre connectat. Fem música!

Mapeu els ports del dispositiu Arduino a Ableton a diferents coses (us suggereixo el volum de la pista) i, a continuació, afegiu línies de codi per enviar dades a cada port des de l’Arduino.

Firmata.sendAnalog (port, volumeLevel);

Utilitzeu aquest codi per a cada port Firmata.

Si voleu fer alguna cosa senzilla, podeu enviar els valors de l’acceleròmetre sense processar als ports d’Ableton i assignar-los des d’aquí. Per a una experiència més sofisticada, podeu decidir: quins valors de l’acceleròmetre haurien de provocar sons, com i quan?

A continuació, toca tots els bucles d’Ableton, executa el codi Arduino i balla.

(Exempció de responsabilitat: si teniu previst crear algun tipus d'algorisme complex per a la vostra cançó, pot trigar molt a afinar-se. "Dance away" pot ser menys precís del previst).

Pas 8: la classe Track (bonificació!)

Si no us importa que aparegui el volum o tingueu una altra manera de mitigar-lo, ometeu aquest pas. En cas contrari, seguiu llegint.

Em vaig adonar que canviar el volum de silenciat a ple d'una sola vegada crea uns sons desagradables desagradables, i és bo poder decolorar el volum de manera més gradual. Tot i això, és difícil fer-ho a l’entorn de programació síncrona d’Arduino. Així que aquí teniu un codi per fer desaparèixer el popping:

class Track {public: int volume; int volumObjectiu; int updateSpeed; Track () {volum = 0; objectiu volum = 0; updateSpeed = 0; } void setVolumeGoal (int objectiu) {volumeGoal = objectiu; } int getVolumeGoal () {return volumeGoal; } void setUpdateSpeed (int solidesa) {updateSpeed = solidesa; } int getVolume () {volum de retorn; } void updateVolume () {if ((volume> volumeGoal) && ((volume - volumeGoal)> = updateSpeed)) {volume - = updateSpeed; } else if ((volum = actualitzacióVelocitat)) {volum + = actualitzacióVelocitat; }} void mute (int fastness) {volumeGoal = 50; updateSpeed = solidesa; } void full (int fastness) {volumeGoal = 950; updateSpeed = solidesa; }};

Cada pista té un volum actual, un volum d'objectiu i una velocitat a la qual es mou cap a aquest volum objectiu. Quan vulgueu canviar el volum d'una pista, truqueu a setVolumeGoal (). Cada vegada que executeu la funció loop () al vostre Arduino, truqueu updateVolume () a cada pista i, a continuació, envieu aquesta informació a Firmata amb getVolume (). Canvieu la velocitat d'actualització per obtenir fadeouts més ràpids o més graduals. A més, eviteu establir el volum a 0 si podeu; en lloc d'això, establiu-lo a un valor molt baix (el valor per defecte en silenci () és 100).

Pas 9: durada de la pista, ritmes i molt més (bonificació!)

Podeu fer moltes coses perquè el so resultant del vostre projecte sigui més fàcil d’escoltar. Aquí teniu algunes opcions:

Podeu fer un seguiment del temps que s’executa la cançó. Per fer-ho, haureu d'esbrinar quan va començar la cançó; Recomano un bucle de temps a la funció setup () que retarda l'execució del codi fins que hagi detectat un moviment de la mà. Emmagatzemeu l'hora d'inici de la cançó en una variable amb millis () i comproveu el temps que dura cada cop que feu un bucle (). Podeu utilitzar-lo per habilitar o desactivar determinades funcions en determinats moments de la cançó.

Si sabeu quant de temps tenen els vostres bucles en mil·lisegons, també podeu fer un seguiment de quants bucles heu viscut per obtenir una comprensió més matisada de l’estructura de la cançó.

Un altre problema potencial que podeu trobar és quan començar i aturar la reproducció d’una pista. Ho vaig solucionar fent un seguiment del ritme d'una mesura en què es trobava la cançó. Després podia reproduir pistes per a qualsevol nombre de ritmes després d'un gest, en lloc de tallar-la immediatament. Això fa que les coses flueixin molt més fàcilment. Aquí teniu un exemple:

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

Assegureu-vos d’actualitzar els volums en conseqüència als valors de beatNow [beat] i / o beatsLeft. S'adjunta un exemple de codi que inclou gairebé tot en aquest tutorial, a més d'alguns, per si el voleu veure a la pràctica.

Recomanat: