Différences entre les versions de « ERG::physicalcomputing »
Ligne 11 : | Ligne 11 : | ||
Exo 1 : traduire par une couleur des paliers sur la hauteur du son enregistré. | 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(); | ||
+ | } |
Version du 8 octobre 2018 à 09:45
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();
}