Annonce

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


#1 2013-12-12 14:47:15 Problème de codage - visualisation sonore Minim

Marg
nouveau membre
Date d'inscription: 2013-12-12
Messages: 2

Problème de codage - visualisation sonore Minim



Bonjour,

Je travaille actuellement sur la relation entre architecture et musique. J'ai découvert à cette occasion Processing mais je n'ai encore jamais fait de programmation et je galère un peu…
J'ai trouvé un code qui retranscrit le volume du son du microphone en cercle. Plus le volume est élevé, plus le cercle a un diamètre important et plus son centre se décale du point précédent. Tout compris ? :p

J'aimerai garder ce codage et l'améliorer de façon à ce que le centre du cercle se décale sur l'axe des y selon la fréquence du son et que le centre du cercle sur x dépendent du temps et non du volume.

Voici mon scripte actuel :

import ddf.minim.*;

float x;
float y;
Minim minim;
AudioInput input;

void setup () {
  // Sketch einstellen
  size (1000, 450);
  smooth();
  stroke (255, 25);
  noFill ();
   
  // Startposition festlegen
  x = 50;
  y = 150;
   
  // Audiotoolkit anlegen
  minim = new Minim (this);
  input = minim.getLineIn (Minim.STEREO, 512);
  background (0);
}

void draw () {
  // Kreisgröße Abhängig von Lautstärke
  float dim = input.mix.level () * width;
  // Kreis x-Position verschieben
  x += input.mix.level () * 20;
  // Kreis zeichnen
  ellipse (x, y, dim, dim);
   
  if (x > width) {
    x  = 50;
    y += 150;
  }
}

Auriez vous une idée ?

Hors ligne

 

#2 2013-12-17 03:17:13 Re : Problème de codage - visualisation sonore Minim

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: Problème de codage - visualisation sonore Minim



bonjour

j'ai modifié ton programme,j'ai mis la valeur du son sur la variable Y ,regarde si sa te convient.

import ddf.minim.*;

float x;
float y;
Minim minim;
AudioInput input;

void setup () {
  // Sketch einstellen
  size (1000, 450);
  smooth();
  stroke (255, 25);
  noFill ();
   
  // Startposition festlegen
  x = 150;
  y = 150;
   
  // Audiotoolkit anlegen
  minim = new Minim (this);
  input = minim.getLineIn (Minim.STEREO, 512);
  background (0);
}

void draw () {
  // Kreisgröße Abhängig von Lautstärke
  float dim = input.mix.level () * width;
  // Kreis x-Position verschieben
  y+= input.mix.level () * 20;
  // Kreis zeichnen
  ellipse (x, y, dim, dim);
   
  if (x > width) {
    x  = 50;
    y += 150;
  }
}

Hors ligne

 

#3 2013-12-17 09:58:46 Re : Problème de codage - visualisation sonore Minim

Marg
nouveau membre
Date d'inscription: 2013-12-12
Messages: 2

Re: Problème de codage - visualisation sonore Minim



Bonjour,

Merci pour la réponse ! smile J'ai regardé le nouveau script mais je comprend pas ce qui a changé selon l'ancien à part que les cercles se dessinent le long de l'axe Y… Qu'est ce que tu as changé exactement comme variable ?


Ce que j'essaye de faire c'est que la position du centre du cercle sur Y dépendent de la fréquence (Hertz) du son et non du volume et que sa position en X dépende du temps. Le volume du son définirait alors uniquement le diamètre du cercle. 

Merci d'avance ! smile

Margot

Hors ligne

 

#4 2013-12-17 10:25:42 Re : Problème de codage - visualisation sonore Minim

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: Problème de codage - visualisation sonore Minim



bonjour

dans ton programme j'ai changé la ligne  y+= input.mix.level () * 20; je comprend ce que tu veux faire,mais ton programme n'as pas les données nécessaires pour faire ce que tu veux ;tu ne capte que la valeur du son ;je vais regarder comment l'on peut capter une fréquence .

Hors ligne

 

#5 2013-12-17 11:30:07 Re : Problème de codage - visualisation sonore Minim

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: Problème de codage - visualisation sonore Minim



un exemple pour la frequence

Code (P5) :

/* frequencyModulation
<p>
  A simple example for doing FM (frequency modulation) using two Oscils. 
  Use the mouse to control the speed and range of the frequency modulation.
<p>  
  Author: Damien Di Fede
*/

// import everything necessary to make sound.
import ddf.minim.*;
import ddf.minim.ugens.*;

// create all of the variables that will need to be accessed in
// more than one methods (setup(), draw(), stop()).
Minim minim;
AudioOutput out;

// the Oscil we use for modulating frequency.
Oscil fm;

// setup is run once at the beginning
void setup()
{
  // initialize the drawing window
  size( 512, 200, P3D );

  // initialize the minim and out objects
  minim = new Minim( this );
  out   = minim.getLineOut();
  
  // make the Oscil we will hear.
  // arguments are frequency, amplitude, and waveform
  Oscil wave = new Oscil( 200, 0.8, Waves.TRIANGLE );
  // make the Oscil we will use to modulate the frequency of wave.
  // the frequency of this Oscil will determine how quickly the
  // frequency of wave changes and the amplitude determines how much.
  // since we are using the output of fm directly to set the frequency 
  // of wave, you can think of the amplitude as being expressed in Hz.
  fm   = new Oscil( 10, 2, Waves.SINE );
  // set the offset of fm so that it generates values centered around 200 Hz
  fm.offset.setLastValue( 200 );
  // patch it to the frequency of wave so it controls it
  fm.patch( wave.frequency );
  // and patch wave to the output
  wave.patch( out );
}

// draw is run many times
void draw()
{
  // erase the window to black
  background( 0 );
  // draw using a white stroke
  stroke( 255 );
  // draw the waveforms
  for( int i = 0; i < out.bufferSize() - 1; i++ )
  {
    // find the x position of each buffer value
    float x1  =  map( i, 0, out.bufferSize(), 0, width );
    float x2  =  map( i+1, 0, out.bufferSize(), 0, width );
    // draw a line from one buffer position to the next for both channels
    line( x1, 50 + out.left.get(i)*50, x2, 50 + out.left.get(i+1)*50);
    
  }  
}

// we can change the parameters of the frequency modulation Oscil
// in real-time using the mouse.
void mouseMoved()
{
  float modulateAmount = map( mouseY, 0, height, 220, 1 );
  float modulateFrequency = map( mouseX, 0, width, 0.1, 100 );
  
  fm.frequency.setLastValue( modulateFrequency );
  fm.amplitude.setLastValue( modulateAmount );
}

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2025