ERG::physicalcomputing
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...
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();
}