Table des matières:
- Étape 1: Branchement de votre NunChuck
- Étape 2: Apprendre à connaître Mozzi
- Étape 3: Tout assembler
- Étape 4: Touches finales
Vidéo: Synthétiseur Wii Nunchuck : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Le monde de la musique Wii:
J'ai décidé de combiner enfin mon amour de la musique avec le peu d'expérience en programmation que j'ai acquise au cours des dernières années. J'ai été intéressé par la création d'un instrument de mon propre depuis que j'ai vu une conférence de Tod Machover à mon école. Si vous n'êtes pas familier avec son travail, offrez-lui un Google, car il repousse les limites de la musique, de la technologie, ainsi que leur intersection depuis plusieurs années (MIT Media Labs, Rock Band, Guitar Hero etc…).
J'ai connecté mon Nunchuck à un Arduino Uno fonctionnant sur la bibliothèque de synthèse sonore Mozzi en raison de l'utilisation bien documentée des deux en ligne. Pour plus de facilité, j'utilise un adaptateur de planche à pain WiiChuck qui se branche directement sur l'Arduino. Ce projet relativement simple joue une série de hauteurs en fonction de la hauteur (YZ-Plane) mesurée à partir de l'accéléromètre du Nunchuck. La valeur Y du joystick est mappée sur le gain pour rendre le pitch plus fort ou plus doux. Il change également les accords en fonction du bouton Z et active une enveloppe de modulation de phase lorsque le bouton C est enfoncé. La fréquence de l'enveloppe est ensuite modifiée avec le Roll mesuré depuis le Nunchuck (image tournant un bouton).
Ressources:
- 1 x Arduino Uno
- 1 x Nunchuck Wii
- 1 x adaptateur WiiChuck
- 1 x prise stéréo femelle 3,5 mm compatible planche à pain
- 1 câble audio 3,5 mm
- 1 x haut-parleur quelconque (vous pouvez d'abord brancher un buzzer pour le tester
- 4-5 fils de différentes couleurs
Facultatif mais recommandé:
- 1 résistance de 330 Ohms
- 1 condensateur de 0,1 uF
Étape 1: Branchement de votre NunChuck
Copiez/collez la classe WiiChuck depuis Arduino Playground. Nous aurons besoin de la version avec la déclaration des broches PWR et GND. Enregistrez-le sous WiiChuck.h et conservez-le dans le même répertoire que votre projet.
Maintenant, copiez/collez ce qui suit dans Arduino IDE et téléchargez-le.
#include "Wire.h"//#include "WiiChuckClass.h" //probablement son WiiChuck.h pour le reste d'entre nous. #include "WiiChuck.h" mandrin WiiChuck = WiiChuck();
void setup() {
//nunchuck_init(); Serial.begin(115200); mandrin.begin(); mandrin.update(); //chuck.calibrateJoy(); }
boucle vide() {
retard(20); mandrin.update();
Serial.print(chuck.readPitch());
Serial.print(", "); Serial.print(chuck.readRoll()); Serial.print(", ");
Serial.print(chuck.readJoyX());
Serial.print(", "); Serial.print(chuck.readJoyY()); Serial.print(", ");
if (mandrin.boutonZ) {
Serial.print("Z"); } else { Serial.print("-"); }
Serial.print(", ");
//pas une fonction // si (chuck.buttonC()) {
if (chuck.buttonC) { Serial.print("C"); } else { Serial.print("-"); }
Serial.println();
}
Débranchez votre Arduino de l'alimentation et connectez votre adaptateur WiiChuck aux broches analogiques 2 à 5 de votre Arduino.
Connectez-vous à nouveau à l'alimentation et assurez-vous que les valeurs du Nunchuck sont envoyées à votre Arduino et imprimées sur le moniteur série. Si vous ne voyez aucun changement dans les chiffres, assurez-vous que vos connexions sont bonnes et que votre Nunchuck fonctionne. J'ai passé quelques jours à essayer de réparer le logiciel avant de réaliser que le fil de mon Nunchuck était cassé en interne !
Ensuite, nous allons tout connecter à Mozzi…
Étape 2: Apprendre à connaître Mozzi
Tout d'abord, vous devrez télécharger la dernière version de Mozzi. Ils sont alimentés par des dons, alors faites un don si vous le souhaitez et téléchargez la bibliothèque. Vous pouvez l'ajouter facilement à vos bibliothèques en choisissant Sketch > Bibliothèques > Ajouter une bibliothèque. ZIP… depuis Arduino IDE.
Nous allons maintenant connecter la prise casque 3,5 mm à la maquette et à l'Arduino afin que nous puissions nous y connecter facilement plus tard (vous pouvez débrancher le Nunchuck et l'adaptateur pour le moment).
- Branchez votre prise Jack dans le coin inférieur droit de la carte pour faire de la place pour le reste. La prise doit avoir 5 broches de large.
- Connectez la rangée du milieu à la terre avec un cavalier.
- Connectez la rangée supérieure de la prise à une rangée vide au-dessus (rangée 10 sur l'image). C'est le fil qui transporte le signal audio.
- Connectez également la broche numérique ~ 9 à la rangée 10.
- Connectez la masse de votre Arduino au rail de masse de la planche à pain.
- Vous n'avez pas encore nécessairement besoin d'utiliser la résistance et le condensateur, mais vous remarquerez peut-être un cri aigu si vous ne le faites pas. Il agit comme un filtre passe-bas pour éliminer les fréquences supérieures à ~ 15 kHz.
Ouvrez l'esquisse Sinewave de Mozzi dans Arduino IDE en choisissant Fichier > Exemples > Mozzi > Notions de base > Sinewave. C'est essentiellement l'équivalent de "Hello World" de Mozzi.
Téléchargez le croquis et branchez un haut-parleur sur la maquette. Vous pouvez également utiliser un buzzer si vous n'avez pas encore connecté la maquette à la prise audio.
Si vous n'entendez pas un A4 constant (440 Hz) provenant de votre enceinte, assurez-vous que toutes vos connexions sont bonnes et réessayez.
Ensuite, nous allons connecter le Nunchuck à l'Arduino !
Étape 3: Tout assembler
Nous allons maintenant utiliser la valeur de roulis du Nunchuck pour changer la fréquence d'une onde sinusoïdale.
Depuis Arduino IDE, choisissez Fichier > Exemples > Mozzi > Capteurs > Fréquence piézo
Nous devrons ajouter quelques lignes à ce code afin de le faire fonctionner avec le Nunchuck. Ajoutez une inclusion à la bibliothèque WiiChuck et instanciez un objet WiiChuck appelé chuck. Vous pouvez également commenter la déclaration de PIEZO_PIN ou simplement la supprimer car nous ne l'utiliserons pas.
#include "WiiChuck. H"
Mandrin WiiChuck = WiiChuck(); //const int PIEZO_PIN = 3; // définit la broche d'entrée analogique pour le piézo
Maintenant, dans la configuration, nous devrons ajouter les éléments suivants:
chuck.begin();chuck.update();
et enfin nous devrons changer quelques choses dans updateControl():
void updateControl(){
mandrin.update(); // obtenir les dernières données du nunchuck // lire le piezo //int piezo_value = mozziAnalogRead(PIEZO_PIN); // la valeur est 0-1023 int piezo_value = map(Commentez la ligne qui définit piezo_value et ajoutez ce qui suit en dessous:
void updateControl(){ chuck.update(); // obtenir les dernières données du nunchuck // lire le piezo //int piezo_value = mozziAnalogRead(PIEZO_PIN); // la valeur est 0-1023 // Nous n'avons pas besoin de la ligne ci-dessus, mais pourquoi ne pas mapper le rouleau sur la même plage ? int piezo_value = map(chuck.readRoll(), -180, 180, 0 1023);
Téléchargez le code et la fréquence doit correspondre à votre Nunchuck's Roll. Essayez de le mapper sur différentes plages de fréquences. Si vous n'avez pas remarqué plus loin dans le croquis, la valeur du capteur est multipliée par 3, nous jouons donc actuellement des tons de 0 Hz à environ 3000 Hz.
Étape 4: Touches finales
Vous êtes maintenant prêt à télécharger la version finale du code que j'ai reconstitué à partir de l'étape précédente et quelques autres exemples de Mozzi (Phase_Mod_Envelope et Control_Gain pour être exact). Pour me faciliter la vie, j'ai également inclus un fichier appelé pitches.h qui définit simplement les valeurs de fréquence avec des noms de notes familiers (c'est-à-dire NOTE_A4).
Je suggère de lire la documentation de Mozzi car une grande partie du code provient directement des exemples, à l'exception du code du Nunchuck.
Voici un lien vers mon dépôt Git. Tous les fichiers importants sont inclus, à l'exception de la bibliothèque Mozzi que vous devriez obtenir sur leur site Web pour qu'elle soit à jour. Téléchargez WiiMusic.ino et chargez-le sur votre appareil pour entendre à quoi cela ressemble. Je vous suggère de jouer avec les paramètres que je modifie (changer les plages de la carte, diviser/multiplier les nombres, etc…) car c'est ainsi que j'ai trouvé le son particulier que je cherchais.
Réflexion
Je n'ai pas l'impression d'avoir tout à fait fini. Cela ne veut pas dire que je ne suis pas satisfait du projet ou du son qu'il produit, mais j'ai l'impression de plonger mes orteils dans un nouveau monde que je veux continuer à explorer, alors j'ajouterai une nouvelle branche de ce projet au fur et à mesure que je continue travailler.
Néanmoins, cela étant dit, c'était mon premier véritable voyage dans le monde des microcontrôleurs, je suis donc très reconnaissant pour l'expérience d'apprentissage. La vingtaine d'heures que j'ai passées à travailler dessus m'a donné des idées de Noël pour moi et pratiquement tous les membres de ma famille. Je regrette un peu de ne pas avoir travaillé sur ce projet avec quelqu'un d'autre car j'aurais pu bénéficier de nombreux conseils et orientations en cours de route. Cependant, j'ai personnellement beaucoup appris au cours de mes essais, y compris trois jours à m'arracher les cheveux pour essayer de déboguer un problème logiciel qui n'était jamais là (un fil interne du Nunchuck s'était cassé).
Il y a encore un certain nombre de possibilités pour aller de l'avant. Par exemple, j'aimerais utiliser l'Arduino comme un type d'interface MIDI entre un contrôleur MIDI et la sortie casque pour modifier les paramètres de la note MIDI car il y a tellement de choix (volume, coupure, fréquence d'enveloppe, pitch bend, modulation, vibrato, etc.). Cela permettrait beaucoup plus de flexibilité, y compris le changement de paramètres avec les boutons et le simple fait de jouer un accord qui n'est pas codé en dur dans un tableau C++.
Conseillé:
Oh Christmas Tree (Oh Tannenbaum) avec MakeyMakey sur le synthétiseur d'eau : 7 étapes
Oh Christmas Tree (Oh Tannenbaum) Avec MakeyMakey sur le synthétiseur d'eau : Cette chanson de Noël est bonne à jouer avec le makeymakey sur le synthétiseur d'eau. Vous pouvez jouer avec neuf tons.Pour l'ambiance, il est agréable d'avoir un peu de lumière de Noël :-)Profitez
Synthétiseur arpégiateur (Mosquito I): 6 étapes
Synthétiseur arpégiateur (Mosquito I): Mosquito I est un petit synthétiseur arpégiateur qui utilise un Arduino Nano et la bibliothèque de synthèse sonore Mozzi. Il peut jouer plus de vingt séquences de 8 pas, mais vous pouvez ajouter autant de séquences personnalisées que vous le souhaitez. Il est relativement simple à mettre en place et ne
Joyeux anniversaire sur synthétiseur d'eau avec MakeyMakey et Scratch : 5 étapes
Joyeux anniversaire sur synthétiseur d'eau avec MakeyMakey et Scratch : au lieu de fleurs et de chant, vous pouvez construire cette installation comme une grande surprise pour les anniversaires
Keytar Hero (Utiliser une manette de guitare Wii comme synthétiseur) : 7 étapes (avec photos)
Keytar Hero (Utiliser une manette de guitare Wii comme synthétiseur) : Les jeux Guitar Hero étaient à la mode il y a une douzaine d'années, donc il y a forcément beaucoup de vieilles manettes de guitare qui traînent et prennent la poussière. Ils ont beaucoup de boutons, de boutons et de leviers, alors pourquoi ne pas les réutiliser à bon escient ? Le contrôle de la guitare
Arduino sans fil Wii Nunchuck contrôlé : 7 étapes
Wii Nunchuck Controlled Arduino sans fil : utilisez un Wii Nunchuck sans fil entièrement non modifié comme système de contrôle pour tout projet basé sur Arduino. Aucune paire d'émetteur/récepteur radio ajoutée, etc. Cette instructable suppose une certaine expérience avec le microcontrôleur Arduino. Le radi