Helleya — 2016-10-15 14:05:29

Bonjour,
Après m'être retourné le cerveau des heures durant, je viens vers vous afin de quémander quelques petites aides .. ^^"
Je vous explique ce qui, dans ma tête donnait plutôt bien: Je voudrais récupérer le volume du micro afin de "dessiner" avec. Par exemple sur l'axe des X, et que la position de l'axe Y suive la souris. J'avoue que comme ça ce n'est pas fort parlant, mais je vais montrer mon code qui, en soi, marche mais comporte plusieurs défauts :
- soit il n'est pas assez sensible et reste dans les 5 premiers pixels
- soit trace juste des lignes verticales, rien de "fluide" donc assez moche...

import ddf.minim.*;
 
Minim minim;
AudioInput in;

float volume;
float moyenne=0;
int tampon=5;



void setup() {
  size(640, 640, P2D);
  
  minim = new Minim(this);
  minim.debugOn();
  background(255);
  
 // get a line in from Minim, default bit depth is 16
 in = minim.getLineIn(Minim.STEREO, 1024);
}

void draw() {

  volume = in.mix.level()*10;
  moyenne=((moyenne * tampon) + volume)/(tampon+3);
   if ( volume > 1){
    //line(15, 90, 95, 10);
    line(moyenne, mouseY, moyenne, pmouseY);
      if(keyPressed == true ){
        stroke( random(255), random(255), random(255), random(255));
      }
    println(moyenne);
  }
}
  

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

 super.stop();
}

Merci ! :)

Pilou — 2016-10-23 22:31:37

C'est pas en processing mais on doit pouvoir y prendre des idées!





lien vers la page de la vidéo sur youtube

Mushussu — 2016-10-24 10:01:27

Bonjour,

Tu y étais presque, il faut multiplier le volume par une valeur beaucoup plus importante. J'ai rajouter une nouvelle variable pour avoir une ligne continue de ton tracé :

import ddf.minim.*;
 
Minim minim;
AudioInput in;

float volume;
float moyenne=0;
PVector pointPrecedent;
int tampon=5;

void setup() {
  size(640, 640, P2D);
  pointPrecedent = new PVector(0, 0);
  minim = new Minim(this);
  //minim.debugOn();
  background(255);
  
 // get a line in from Minim, default bit depth is 16
 in = minim.getLineIn(Minim.STEREO, 1024);
}

void draw() {
  volume = in.mix.level()*2000;
  moyenne=((moyenne * tampon) + volume)/(tampon+3);
   if ( volume > 1){
    //line(15, 90, 95, 10);
    line(pointPrecedent.x, pointPrecedent.y, moyenne, mouseY);
      if(keyPressed == true ){
        stroke( random(255), random(255), random(255), random(255));
      }
      pointPrecedent.set(moyenne, mouseY);
    println(moyenne);
  }
}
  
void stop() {
 // always close Minim audio classes when you are done with them
 in.close();
 minim.stop();
 super.stop();
}
Helleya — 2016-10-25 09:25:51

Merci beaucoup, Pilou & Mushussu !
Mushussu tu me sauves la vie ! :D