ERG::physicalcomputing

De {}
Aller à la navigation Aller à la recherche

projet : Assigner un programme différent à chaque octave de la voix. Donc avec un système de détection des notes et des hauteurs. Chacune des notes seraient assignée à un effet de type stéréo, réverbe, granulator...

Capture d’écran 2018-10-01 à 12.01.14.png

Capture d’écran 2018-10-08 à 09.35.54.png

Utilisation de processing.

- Réaliser du code qui récupère les données enregistrées par un Micro externe, analyser ces données.

Exo 1 : traduire par une couleur des paliers sur la hauteur du son enregistré.

EXEMPLE DE CODE À COMPRENDRE ET REUTILISER : 

//importation des différents éléments de la bibliothèque minim // importation de la base de la bibliothèque import ddf.minim.*; // importation du module de traitement de signal de la bibliothèque import ddf.minim.signals.*; // importation du module d'analyse de signal de la bibliothèque import ddf.minim.analysis.*; // importation du module d'effets sonores de la bibliothèque import ddf.minim.effects.*;

// je créé le nom de mon objet son Minim monObjetSon; // je créée le nom d'un objet entrée son AudioInput entreeSon; // je crée une variable qui me permettra de sortir la valeur du volume hors de la boucle d'itération (voir plus bas) float monVolumeSon;

void setup() {

 size (200, 200);
 //je crée mon objet son
 monObjetSon = new Minim(this);
 // je précise les caractéristiques de mon objet entreeSon : stereo, avec une memoire tampon (buffer) de 512 ko
 entreeSon = monObjetSon.getLineIn(Minim.STEREO, 512);

}

void draw() {

 background(255);
 // Nous avons besopin d'une iteration pour récpérer tous les échantillons sonores présents dans la mémoire tampon
 for (int i = 0; i < entreeSon.bufferSize() - 1; i++)
 {
   // Je donne à ma variable monVolumeSon la somme des valeurs d'entrées gauche et droite du microphone que je multiplie par 50 pour la valeur soit exploitable
   monVolumeSon =   (entreeSon.left.get(i)+entreeSon.right.get(i)/2)*50;
 }
 // je donne à mon épaisseur de ligne la valeur de la variable monVolumeSon définie juste au-dessus. Avec la fonction 'abs()' je transforme les valeurs de ma varibla à être positives
 strokeWeight(abs(monVolumeSon));
 // je donne à ma ligne la couleur rouge
 stroke(255, 0, 0);
 // je dessine ma ligne
 line(width/4, height/2, width*3/4, height/2);
 // maintenant, quand je fais du bruit l'épaisseur de ma ligne rouge varie en fonction du volume ambiant

}

void stop() {

 // Je ferme l'entree son et arrete l'objet son quand je quitte mon sketch afin de ne pas continuer à stocker les valeurs dans la memoire tampon quand j'ai fini
 entreeSon.close();
 monObjetSon.stop();
 super.stop();

}