Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2012-01-19 22:53:55 Interaction sonore/souris

marion
membre
Date d'inscription: 2011-11-28
Messages: 12

Interaction sonore/souris



Bonsoir à tous et à toute

Je vous fais par d'un code que j'aimerais pousser,
j'aimerais avoir la possibilité de rendre chaque cordes indépendante les unes des autres
(via l'interaction souris et les notes produites) mais je suis vraiment perdu?
Des idées?

import ddf.minim.*;
import ddf.minim.signals.*;
Minim minim;
AudioOutput out;
StringSignal signal;
AudioInput in;
float[] x;
float[] Xcopy;
float[] v;
float[] f;
float k = 0.5;
float c = 0.0003;
int num = 256;
int monitorPoint = num/18;
void setup(){
  size(750,500);
  minim = new Minim(this);
  out = minim.getLineOut();
  signal = new StringSignal();
  out.addSignal(signal);
  stroke(255);
  smooth();
  ellipseMode(CENTER);
  noFill();
  x = new float[num];
  Xcopy = new float[num];
  v = new float[num];
  f = new float[num];
}
void draw(){
  println(frameRate);
//  stringUpdate();
  // couleur fond
  background(0);
  arrayCopy(x,Xcopy);
  for(int i=1;i<num;i++){

    line(float(i-1)/(num-1)*width,(0.5+Xcopy[i-1]*0.5)*height,
        float(i)/(num-1)*width,(0.5+Xcopy[i]*0.5)*height);
   line(float(i-2)/(num-2)*width,(1+Xcopy[i-1]*1)*height,
        float(i)/(num-2)*width,(1+Xcopy[i]*1)*height);

  }
  ellipse(float(monitorPoint)/(num-1)*width,
    (0.5+Xcopy[monitorPoint]*0.5)*height,5,5);
   
    ellipse(float(monitorPoint)/(num-2)*width,
    (1+Xcopy[monitorPoint]*1)*height,5,5);
}
void stringUpdate(){
  for(int i=1;i<num;i++){
    float F = (x[i]-x[i-1])*k+(v[i]-v[i-1])*c;
    f[i-1] += F;
    f[i] -= F;
  }
  for(int i=0;i<num;i++){
    v[i] += f[i];
    f[i] = 0;
    x[i] += v[i];
    x[i] = constrain(x[i],-1,1);
  }
  x[0] = 0;
  v[0] = 0;
  x[num-1] = 0;
  v[num-1] = 0;
//  v[num-2] = 0;
  if(mousePressed&&mouseY>=0&&mouseY<height){
    float b = constrain(1f*(mouseX+0.5)/width*(num-1),0,num-1);
    int a = floor(b);
    int c = ceil(b);
    if(mouseButton==RIGHT){
      float V = v[a]+(v[c]-v[a])*(b-a);
      float F = V*-0.95;
      float Fa = (c-b)*F;
      float Fc = (b-a)*F;
      f[a] += Fa;
      f[c] += Fc;
    }else if(mouseButton==LEFT){
      float X = x[a]+(x[c]-x[a])*(b-a);
      float Xm = float(mouseY)/(height/2)-1;
      float F = (Xm-X)*1f;
      float Fa = (c-b)*F;
      float Fc = (b-a)*F;
      f[a] += Fa;
      f[c] += Fc;
    }
  }
}
class StringSignal implements AudioSignal{
  void generate(float[] samp){
    for(int i=0;i<samp.length;i++){
      samp[i] = x[monitorPoint];
      stringUpdate();
    }
  }
  void generate(float[] left, float[] right){
    for(int i=0;i<left.length;i++){
      left[i] = x[monitorPoint];
      right[i] = x[monitorPoint];
      stringUpdate();
    }
  }
}
void keyPressed(){
  if(keyCode==RIGHT){
    monitorPoint++;
    if(monitorPoint>=num){monitorPoint=num-1;}
  }
  if(keyCode==LEFT){
    monitorPoint--;
    if(monitorPoint<0){monitorPoint=0;}
  }
}





Merci
Marion

Hors ligne

 

#2 2012-01-20 15:57:11 Re : Interaction sonore/souris

Turboconnard
membre
Lieu: Lyon
Date d'inscription: 2012-01-13
Messages: 42
Site web

Re: Interaction sonore/souris



En fait moi j'aimerais bien aider mais je comprends pas trop,
Il est où le blèm ?

c'est quoi que tu comprends pas ? isole peut être le morceau de code qui te pose du soucis parce que la... j'ai pas trop idée de comment faire avancer le schmilblik...


[ Viande for life ! ]

Hors ligne

 

#3 2012-01-21 18:55:57 Re : Interaction sonore/souris

cgiles
membre
Lieu: Est de la France
Date d'inscription: 2005-05-25
Messages: 329

Re: Interaction sonore/souris



Si tu peux rajouter des commentaires présentant brièvement chaque partie de ton ton code, la compréhension n'en serait que meilleur

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024