Son : Utiliser le volume avec minim

Voici un script qui permet de récupérer le volume d’un micro (en chipotant un peu, d’un son préenregistré) en tant que valeur numérique.

Précédent | 13/27 | Suivant

Le code :

import ddf.minim.*;

PFont font;
PImage evans;

float volume;

// A ce seuil l'image est affichée à 100% de sa luminosité
float seuil=4.0;

// initialiser la variable de moyenne
float moyenne=0;

// le tampon determine la ractivité de l'apparition/disparition
int tampon=10;


Minim minim;
AudioInput in;

void setup() {
 size(640,480);
 frameRate(30);
 minim = new Minim(this);
 minim.debugOn();

 // get a line in from Minim, default bit depth is 16
 in = minim.getLineIn(Minim.STEREO, 16);
 font = loadFont("DIN-Light-48.vlw");
 evans= loadImage("evans.jpg");
 textFont(font,24);
 noStroke();

}

void draw() {
   // volume de l'entrée dans le buffer
   volume = in.mix.level()*10;
 
 // moyenne suivant la taille du tampon
 moyenne=((moyenne *tampon) + volume)/(tampon+1);
 
 image(evans,0,0,640,480);
 
 // calcul de l'opacité sur base de la moyenne
 float fade=map(moyenne,0,seuil,255,0);
 fill(0,fade);
 rect(0,0,width,height);
 
 // afficher l'info
 fill(255);
 text("volume : " + volume + ".", 5, 30);
 text("Moyenne : " + moyenne + ".", 5, 60);
 text("Le seuil : " + seuil + ".", 5, 90);
}

void stop() {
 // always close Minim audio classes when you are done with them
 in.close();
 minim.stop();

 super.stop();
}

void keyPressed() {
 if (key == CODED) {
   if (keyCode == UP) {
     seuil+=0.1;
   }
   else if (keyCode == DOWN) {
     seuil -=0.1;
   }
 }
 
}

On utilise simplement la méthode level(), qui renvoie le volume dans une valeur entre 0 et 1. On multiplie ce chiffre par 10 par commodité.
Il est cependant encore trop fluctuant. On en fait donc une moyenne en prenant un nombre de valeur dans le temps. Une moyenne pour éviter les sautes trop fortes dans le script.

De la on obtient un chiffre utilisable pour différentes actions. Stopper, démarrer des animations, par exemple.

Dans cet exemple il est placé un seuil (4 par défaut) qui peut être ajusté avec les flèches bas et haut.