Table des matières:

Gant de danse : 9 étapes
Gant de danse : 9 étapes

Vidéo: Gant de danse : 9 étapes

Vidéo: Gant de danse : 9 étapes
Vidéo: Cours de danse débutant - Danse 9 2024, Novembre
Anonim
Gant de danse
Gant de danse

Dans ce didacticiel, je vais vous expliquer comment concevoir un gant qui vous permet d'interagir avec la musique à travers la danse. Vous allez créer un gant compatible avec l'accéléromètre, concevoir une composition dans Ableton, puis connecter les deux de manière aussi complexe ou simple que vous le souhaitez !

Fournitures

  • Ableton (ou essai gratuit)
  • Un Arduino
  • Câbles de démarrage
  • Fer à souder
  • Papier carton
  • Pistolet à colle chaude
  • Beaucoup d'imagination

Étape 1: Conception

Ce projet est conçu pour être amusant. Si le fonctionnement de l'exemple de projet de ce didacticiel ne vous amuse pas, modifiez-le !

Je vous recommande de mettre certaines de vos chansons préférées, de passer vos mains dessus et de voir ce qui se passe. Bougez-vous vos mains de haut en bas ? Côte à côte? Lentement ou rapidement ? Quels aspects de la musique vous donnent envie de bouger les mains ? Si vous avez une liste de ceux-ci par écrit, vous serez probablement en mesure de trouver des moyens d'intégrer les mouvements que vous aimez dans vos éventuels algorithmes.

Voici les mouvements que j'ai utilisés:

  • Un mouvement rapide de haut en bas déclenche le début de la chanson, de la batterie ou de la basse. (Ceux-ci se produisent à différents moments de la chanson, pas nécessairement simultanément !)
  • Un mouvement latéral lent et incliné déclenche un son plus aigu et plus écho.
  • À une section particulière de la chanson, incliner ma main vers le haut fait que la musique se calme – donc je l'ai "attrapée" dans mon poing fermé.

Utilisez-les ou créez les vôtres !

(Veuillez noter: ce tutoriel ne couvre pas comment générer de la musique ou des mélodies en direct dans Ableton ! Si vous vous en tenez à ces instructions, vous ne pourrez qu'augmenter/diminuer le volume des pistes ou l'application d'effets audio.)

Étape 2: préparer l'accéléromètre

Préparer l'accéléromètre
Préparer l'accéléromètre

Tout d'abord, déterminez quel type d'accéléromètre vous avez. J'ai utilisé celui-ci; n'importe quel accéléromètre à trois axes fera l'affaire. (Ou essayez un autre type de capteur si vous voulez vous déchaîner.) Assurez-vous de savoir comment lire les données de l'accéléromètre de l'Arduino. Vous devrez peut-être télécharger une bibliothèque pour votre accéléromètre s'il utilise quelque chose de plus complexe qu'une entrée analogique.

Après l'avoir testé avec une maquette, soudez des fils courts à code couleur dans les broches de votre accéléromètre. Mettez un fil rouge dans la broche d'alimentation, un fil noir dans la broche de terre et tout autre fil nécessaire à la communication de l'accéléromètre. (Si vous avez un accéléromètre I2C, ce seront les broches SCL et SDA. Si vous avez un accéléromètre analogique, il y aura probablement une broche pour chacune des sorties x, y et z.) Assurez-vous que votre soudure est solide et que les perles ne se chevauchent pas entre les broches adjacentes.

Étape 3: Construisez le gant

Construisez le gant
Construisez le gant

Découpez un morceau de carton fin ou de papier épais en un rectangle légèrement plus grand que votre accéléromètre. Collez l'accéléromètre sur le carton en vous assurant de mettre de la colle sur le fond. Ensuite, collez l'accéléromètre en carton au dos de votre gant. Cousez chaque fil sans serrer au poignet du gant pour soulager la tension sur l'accéléromètre, puis votre gant est prêt. Connectez-le à des fils plus longs afin d'avoir suffisamment d'espace pour déplacer votre main lorsqu'il est branché.

Étape 4: Composez dans Ableton

Il est maintenant temps de composer la chanson que vous utiliserez éventuellement le gant pour contrôler. Je recommande les boucles Ableton qui sonnent bien ensemble, mais qui peuvent être utilisées pour se construire progressivement: essayez la mélodie, les accords, la basse et les percussions. Vous pourrez utiliser votre gant pour contrôler quand chaque boucle joue ou non.

Si vous pouvez penser à des types de sons intéressants à incorporer occasionnellement dans une chanson, comme un effet sonore étrange ou un instrument non conventionnel, essayez également d'en ajouter un ou deux ! Vous pouvez les associer à des mouvements de la main moins courants pour apporter quelque chose d'intéressant de temps en temps.

Voici un lien vers ma composition compatible Arduino, au cas où vous ne voudriez pas écrire la vôtre:

(Malheureusement, vous enseigner Ableton n'entre pas dans le cadre du didacticiel. Cependant, il existe de nombreuses bonnes vidéos pratiques et Ableton propose un essai gratuit de 90 jours ! Je recommande cette vidéo.)

Étape 5: commencez à utiliser Firmata

Commencez à utiliser Firmata
Commencez à utiliser Firmata

Afin de permettre à votre Arduino de communiquer avec Ableton, vous devrez utiliser une bibliothèque appelée Firmata. Vous devrez également télécharger le kit de connexion pour Ableton.

Dans Ableton, cliquez sur Packs>Kit de connexion>Périphériques dans le menu en haut à gauche, puis double-cliquez sur le premier périphérique (Arduino) pour l'ajouter. Assurez-vous de vous rappeler à quelle piste Ableton vous avez ajouté l'appareil !

Étape 6: Tester Firmata

Test Firmata
Test Firmata

Tout d'abord, nous allons tester et nous assurer que votre Arduino communique avec Ableton. Téléchargez cet extrait de code sur votre Arduino et exécutez-le:

#include void analogWriteCallback(byte pin, int value){ if (IS_PIN_PWM(pin)) { pinMode(PIN_TO_DIGITAL(pin), OUTPUT); analogWrite(PIN_TO_PWM(pin), valeur); }}configuration nulle() { Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION); Firmata.attach(ANALOG_MESSAGE, analogWriteCallback); Firmata.begin(57600);}boucle vide() { Firmata.sendAnalog(0, 800);}

C'est le strict minimum nécessaire pour communiquer avec Firmata. Il envoie en permanence une sortie de 800 (sur 1024) au port 0 du périphérique Firmata d'Ableton. Si vous téléchargez ce code sur votre Arduino alors que vous avez un appareil Firmata ouvert dans Ableton, il devrait ressembler à l'image ci-dessus. (Mappez le port 0 sur n'importe quoi dans Ableton pour pouvoir voir les valeurs.)

Vous pouvez cliquer sur le bouton Map, puis sur n'importe quel appareil compatible Firmata dans Ableton pour ajouter un mappage entre l'entrée reçue sur ce port et la valeur de cet appareil Ableton. Des exemples simples incluent le volume de n'importe quelle piste ou n'importe quel cadran dans un effet audio. Explorez et voyez ce que vous pouvez trouver à mapper !

Étape 7: Influencez la musique avec les mouvements de vos mains

Influencez la musique avec vos mouvements de main !
Influencez la musique avec vos mouvements de main !

À ce stade, vous devriez avoir de la musique dans Ableton, un script Firmata sur votre Arduino et un gant d'accéléromètre attaché. Faisons de la musique !

Mappez les ports du périphérique Arduino dans Ableton sur différentes choses (je suggère de suivre le volume), puis ajoutez des lignes de code pour envoyer des données à chaque port depuis l'Arduino.

Firmata.sendAnalog(port, volumeLevel);

Utilisez un code comme celui-ci pour chaque port Firmata.

Si vous voulez faire quelque chose de simple, vous pouvez envoyer les valeurs de l'accéléromètre non traitées aux ports Ableton et les mapper à partir de là. Pour une expérience plus sophistiquée, vous pouvez décider: quelles valeurs d'accéléromètre doivent déclencher des sons, comment et quand ?

Ensuite, jouez toutes vos boucles Ableton, exécutez votre code Arduino et dansez !

(Avertissement: si vous envisagez de créer tout type d'algorithme complexe pour votre chanson, le réglage peut prendre beaucoup de temps. "Dance away" peut être moins précis que prévu.)

Étape 8: La classe de piste (bonus !)

Si le volume ne vous dérange pas ou si vous avez un autre moyen de l'atténuer, ignorez cette étape. Sinon, lisez la suite !

J'ai remarqué que le passage du volume de sourdine à pleine en une seule fois crée des bruits secs désagréables, et c'est agréable de pouvoir diminuer le volume plus progressivement. Cependant, il est difficile de le faire dans l'environnement de programmation synchrone d'Arduino. Voici donc un code pour faire disparaître le popping:

class Track{ public: int volume; int volumeObjectif; int updateSpeed; Piste() { volume = 0; volumeObjectif = 0; vitesse de mise à jour = 0; } void setVolumeGoal(int goal) { volumeGoal = goal; } int getVolumeGoal() { return volumeGoal; } void setUpdateSpeed(int fastness) { updateSpeed = fastness; } int getVolume() { return volume; } void updateVolume() { if((volume > volumeGoal) && ((volume - volumeGoal) >= updateSpeed)) { volume -= updateSpeed; } else if((volume = updateSpeed)) { volume += updateSpeed; } } void mute(int fastness) { volumeGoal = 50; updateSpeed = rapidité; } void full(int fastness) { volumeGoal = 950; updateSpeed = rapidité; }};

Chaque piste a un volume actuel, un volume cible et une vitesse à laquelle elle se déplace vers ce volume cible. Lorsque vous souhaitez modifier le volume d'une piste, appelez setVolumeGoal(). Chaque fois que vous exécutez la fonction loop() dans votre Arduino, appelez updateVolume() sur chaque piste, puis envoyez ces informations à Firmata avec getVolume(). Modifiez la vitesse de mise à jour pour des fondus plus rapides ou plus progressifs ! Aussi, évitez de régler le volume sur 0 si vous le pouvez; à la place, définissez-le sur une valeur très faible (la valeur par défaut dans mute() est 100).

Étape 9: Durée de la piste, rythmes et plus (bonus !)

Vous pouvez faire beaucoup de choses pour rendre le son résultant de votre projet plus facile à écouter. Voici quelques options:

Vous pouvez suivre la durée d'exécution de la chanson. Pour ce faire, vous devrez déterminer quand la chanson a commencé; Je recommande une boucle while dans la fonction setup() qui retarde l'exécution de votre code jusqu'à ce qu'il ait détecté un mouvement de la main. Stockez l'heure de début de la chanson dans une variable à l'aide de millis() et vérifiez depuis combien de temps elle dure à chaque boucle(). Vous pouvez l'utiliser pour activer ou désactiver certaines fonctionnalités à certains moments de la chanson.

Si vous savez combien de temps vos boucles durent en millisecondes, vous pouvez également suivre le nombre de boucles que vous avez parcourues pour une compréhension plus nuancée de la structure du morceau !

Un autre problème potentiel que vous pouvez rencontrer est de savoir quand démarrer et arrêter la lecture d'une piste. J'ai résolu ce problème en gardant une trace du temps d'une mesure dans lequel se trouvait actuellement la chanson. Ensuite, je pouvais jouer des pistes pour n'importe quel nombre de temps après un geste, au lieu de le couper immédiatement. Cela rend les choses beaucoup plus fluides. Voici un exemple:

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

Assurez-vous de mettre à jour les volumes en fonction des valeurs de beatNow[beat] et/ou beatsLeft. Un exemple de code incorporant presque tout dans ce didacticiel, plus certains, est joint au cas où vous voudriez le voir en pratique.

Conseillé: