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);
}
}

