Sommaire |
Réalisation d'un Thérémine Optique avec Arduino. Un thérémine est un instrument de musique créant différentes notes en fonction de la position des mains du musicien dans l'air au dessus du thérémine. Ce projet est très simple à mettre en place et nécessite peu de matériel.
Réalisation d'un Thérémine Optique avec Arduino. Un thérémine est un instrument de musique créant différentes notes en fonction de la position des mains du musicien dans l'air au dessus du thérémine. Ce projet est très simple à mettre en place et nécessite peu de matériel. Ce Thérémine fonctionne grâce à une [photorésistance] et à l'éclairement de celle-ci. En simplifié, quand la lumière change, la note change.
Utilisation de musique libre
Musique : Artner -Translate http://www.auboutdufil.com/index.php?id=415
Après avoir téléchargé l'IDE Arduino sur le lien suivant : [1], téléverser le programme ci-dessous sur la carte.
Débrancher l'Arduino puis réaliser le montage à l'aide des photos, de la vidéo et du schéma de montage.
Pour commencer, brancher les deux fils du haut parleur : un sur la sortie -9 et l'autre sur la GND des sorties de l'Arduino.
Ensuite positionner en série la résistance et la photorésistance sur la Breadboard puis câbler avec les fils. Ordre : 5V-resistance-A0-Photoresistance-GND
L'éclairage de la photorésistance modifie la tension à ses bornes. Cette tension (n°1) est mesurée par l'Arduino et la carte renvoie alors une tension (n°2 variant en fonction de la n°1) à l'enceinte qui crée alors le son.
// Theremin optique //Branchement #define PHONES 9 // Haut parleur connecté a la sortie 9 #define PHOTOCELL 0 //Photoresistance connecté à l'entrée A0 //variable definitions long val = 0; //stockage de la valeur de Photoresistance long maxread = 0; //valaur max de la phase de calibrage long minread = 1000; //valeur min de la pahse de calibrage double f = 0; // frequence du son double normf= 0; // frequence normalisé double logfre = 0; // logarithme de la frequence normalisé int ilogf = 0; // logarithme arrondi int i = 0; // double factor = 0; // echelle du facteur pour la calibration double shift = 0; // espace de calibration long maxfreq = 1048; // Maximum de la frequence desiré apres la calibration long minfreq = 131; // minimum de la frequence desiré apres la calibration //Valeur pour changer l'ecart entre 2 notes double gap = 1.148698355; //(pentatonic) // it's the 5th root of 2 //double gap = 1.059463094; //(chromatic) // its the 12th root of 2 void setup() { pinMode(PHONES, OUTPUT); // mise en sortie des pattes digitales // boucle de calibration pour determiner un les niveaux Max et min de la Photoresistance // et associé cela au frequence max et min for (i = 0; i< 500; i++) { // calibration loop runs for 5 seconds val = analogRead(PHOTOCELL); // lecture de la photoresistance tone(PHONES, val); // joue la note brute pour guide la calibration if (val > maxread) { // mise en place de la valeur la plus grande maxread = val; } if (val < minread) { // mise en place de la valeur la plus petite minread = val; } delay(10); // delay } // on utilise la calibration pour calculer l'echelle et les changements de parametre factor = (double)(maxfreq - minfreq) / (double)(maxread - minread); // changement de parametre //c'est comme une pente( lineaire) shift = factor * minread - minfreq; //changement de parametre s(utilise comme un offset } void loop() { val = analogRead(PHOTOCELL); // lecture de la photoresistance f = factor * val - shift; // linearise la frequence // entre une valeur Max et min (frequence) // accordé a la calibration // cette ligne cartographie lineairement la frequence vers une valeur entre minfreq et maxfreq a partir du resultat de la calibration // permet de lineariser le son normf = f / (double) minfreq; // divise une fonction exponentielle par la valeur min logfre = log(normf) / log(gap); // nous permet de prendre le log de base gap et le resultat ilogf = round(logfre); // est le nombre de notes au dessus de la plus basse, une fois arrondie. f = minfreq * pow(gap,ilogf); // on ferait mieux de le de-log-er tone(PHONES, f); // produit la tonalité du signal }
chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino
On peut remplacer l'ensemble résistance/photorésistance par un capteur de distance infra-rouge. Il faudra alors brancher les 2 fils de l’alimentation du capteur et le fil de données sur l'entrée A0 de l'Arduino. Ainsi, avec un capteur de bonne qualité, la précision et la qualité du son en sera meilleure.
quelles peuvent être les applications technologiques de ce montage, ou est-ce qu'on retrouve des programmes qui y ressemble ?
éé
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique