Différences entre les versions de « ERG::physicalcomputing »
		
		
		
		
		
		Aller à la navigation
		Aller à la recherche
		
				
		
		
	
| Ligne 15 : | Ligne 15 : | ||
----  | ----  | ||
| − | + | Code utilisé :   | |
| + | Modifications réalisées sur le code :    | ||
| + | -FFT à partir d'un enregistrement micro input   | ||
| + | -Retour Micro   | ||
| + | |||
| + | == ATTENTION UTILISER CASQUE AUDIO SINON LARSEN ==  | ||
| + | |||
<syntaxhighlight lang="java">  | <syntaxhighlight lang="java">  | ||
| + | |||
/**  | /**  | ||
| − |   *   | + |   * This sketch shows how to use the FFT class to analyze a stream  | 
| − |   *   | + |   * of sound. Change the number of bands to get more spectral bands  | 
| + |  * (at the expense of more coarse-grained time resolution of the spectrum).  | ||
  */  |   */  | ||
import processing.sound.*;  | import processing.sound.*;  | ||
| − | AudioIn   | + | // Declare the sound source and FFT analyzer variables  | 
| − | + | FFT fft;  | |
| + | AudioIn in;  | ||
| + | |||
| + | // Define how many FFT bands to use (this needs to be a power of two)  | ||
| + | int bands = 128;  | ||
| + | |||
| + | // Define a smoothing factor which determines how much the spectrums of consecutive  | ||
| + | // points in time should be combined to create a smoother visualisation of the spectrum.  | ||
| + | // A smoothing factor of 1.0 means no smoothing (only the data from the newest analysis  | ||
| + | // is rendered), decrease the factor down towards 0.0 to have the visualisation update  | ||
| + | // more slowly, which is easier on the eye.  | ||
| + | float smoothingFactor = 0.2;  | ||
| + | |||
| + | // Create a vector to store the smoothed spectrum data in  | ||
| + | float[] sum = new float[bands];  | ||
| + | |||
| + | // Variables for drawing the spectrum:  | ||
| + | // Declare a scaling factor for adjusting the height of the rectangles  | ||
| + | int scale = 5;  | ||
| + | // Declare a drawing variable for calculating the width of the   | ||
| + | float barWidth;  | ||
| − | void setup() {  | + | public void setup() {  | 
   size(640, 360);  |    size(640, 360);  | ||
   background(255);  |    background(255);  | ||
| − |    //   | + |    // Calculate the width of the rects depending on how many bands we have  | 
| − | + |    barWidth = width/float(bands);  | |
| − |    //   | + |    // Load and play a soundfile and loop it.  | 
| − | + |    fft = new FFT(this, bands);  | |
| − | + |    in = new AudioIn(this, 0);  | |
| − |    // the   | + | |
| − | + |    // Create the FFT analyzer and connect the playing soundfile to it.  | |
| − | + |    in.start();  | |
| − | + |    fft.input(in);  | |
| − | + |    //retour micro  | |
| − | + |    in.play();  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − |    //   | ||
| − | |||
}  | }  | ||
| + | public void draw() {  | ||
| + |   // Set background color, noStroke and fill color  | ||
| + |   background(125, 255, 125);  | ||
| + |   fill(255, 0, 150);  | ||
| + |   noStroke();  | ||
| − | + |    // Perform the analysis  | |
| − |    //   | + |    fft.analyze();  | 
| − | |||
| − | |||
| − | + |    for (int i = 0; i < bands; i++) {  | |
| − | + |     // Smooth the FFT spectrum data by smoothing factor  | |
| − | + |     sum[i] += (fft.spectrum[i] - sum[i]) * smoothingFactor;  | |
| − | |||
| − | + |     // Draw the rectangles, adjust their height using the scale factor  | |
| − | + |     rect(i*barWidth, height, barWidth, -sum[i]*height*scale);  | |
| − | + |   }  | |
| − | |||
| − | |||
}  | }  | ||
</syntaxhighlight>  | </syntaxhighlight>  | ||
Version du 15 octobre 2018 à 10:02
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é.
Code utilisé : Modifications réalisées sur le code : -FFT à partir d'un enregistrement micro input -Retour Micro
ATTENTION UTILISER CASQUE AUDIO SINON LARSEN
/**
 * This sketch shows how to use the FFT class to analyze a stream
 * of sound. Change the number of bands to get more spectral bands
 * (at the expense of more coarse-grained time resolution of the spectrum).
 */
import processing.sound.*;
// Declare the sound source and FFT analyzer variables
FFT fft;
AudioIn in;
// Define how many FFT bands to use (this needs to be a power of two)
int bands = 128;
// Define a smoothing factor which determines how much the spectrums of consecutive
// points in time should be combined to create a smoother visualisation of the spectrum.
// A smoothing factor of 1.0 means no smoothing (only the data from the newest analysis
// is rendered), decrease the factor down towards 0.0 to have the visualisation update
// more slowly, which is easier on the eye.
float smoothingFactor = 0.2;
// Create a vector to store the smoothed spectrum data in
float[] sum = new float[bands];
// Variables for drawing the spectrum:
// Declare a scaling factor for adjusting the height of the rectangles
int scale = 5;
// Declare a drawing variable for calculating the width of the 
float barWidth;
public void setup() {
  size(640, 360);
  background(255);
  // Calculate the width of the rects depending on how many bands we have
  barWidth = width/float(bands);
  // Load and play a soundfile and loop it.
  fft = new FFT(this, bands);
  in = new AudioIn(this, 0);
  
  // Create the FFT analyzer and connect the playing soundfile to it.
  in.start();
  fft.input(in);
  //retour micro
  in.play();
}
public void draw() {
  // Set background color, noStroke and fill color
  background(125, 255, 125);
  fill(255, 0, 150);
  noStroke();
  // Perform the analysis
  fft.analyze();
  for (int i = 0; i < bands; i++) {
    // Smooth the FFT spectrum data by smoothing factor
    sum[i] += (fft.spectrum[i] - sum[i]) * smoothingFactor;
    // Draw the rectangles, adjust their height using the scale factor
    rect(i*barWidth, height, barWidth, -sum[i]*height*scale);
  }
}

