Thérémine Optique Arduino

De Wikidebrouillard.

Article incomplet en cours de rédaction
La vidéo "Thérémine Optique Arduino"

Sommaire

Présentation du projet Arduino

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

Liste du matériel

Réalisation du projet

  • Etape n°1 :

Après avoir téléchargé l'IDE Arduino sur le lien suivant : [1], téléverser le programme ci-dessous sur la carte.

  • Etape n°2 :

Débrancher l'Arduino puis réaliser le montage à l'aide des photos, de la vidéo et du schéma de montage.

  • Etape n°3 :

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.

  • Etape n°4 :

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

Explication

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.

Schéma Fritzing

Code

// 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 
  
}

Liens avec d'autres projets arduino

chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino

Pour aller plus loin

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.

Liens avec le quotidien

quelles peuvent être les applications technologiques de ce montage, ou est-ce qu'on retrouve des programmes qui y ressemble ?

éé

Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraitsAnnuaire
AR
CO

Thérémine Optique Arduino

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique