ERG::physicalcomputing
Révision datée du 15 octobre 2018 à 07:06 par Benjaminhuynh (discussion | contributions)
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é.
EXEMPLE DE CODE À COMPRENDRE ET REUTILISER :
/**
* Grab audio from the microphone input and draw a circle whose size * is determined by how loud the audio input is. */
import processing.sound.*;
AudioIn input; Amplitude loudness;
void setup() {
size(640, 360); background(255);
// Create an Audio input and grab the 1st channel input = new AudioIn(this, 0);
// Begin capturing the audio input input.start(); // start() activates audio capture so that you can use it as // the input to live sound analysis, but it does NOT cause the // captured audio to be played back to you. if you also want the // microphone input to be played back to you, call // input.play(); // instead (be careful with your speaker volume, you might produce // painful audio feedback. best to first try it out wearing headphones!)
// Create a new Amplitude analyzer loudness = new Amplitude(this);
// Patch the input to the volume analyzer loudness.input(input);
}
void draw() {
// Adjust the volume of the audio input based on mouse position float inputLevel = map(mouseY, 0, height, 1.0, 0.0); input.amp(inputLevel);
// loudness.analyze() return a value between 0 and 1. To adjust // the scaling and mapping of an ellipse we scale from 0 to 0.5 float volume = loudness.analyze(); int size = int(map(volume, 0, 0.5, 1, 350));
background(125, 255, 125); noStroke(); fill(255, 0, 150); // We draw a circle whose size is coupled to the audio analysis ellipse(width/2, height/2, size, size);
}