Bonjour à tous,
Je suis actuellement en Terminale S, et j'ai un projet à faire. Celui-ci est d'importer du son via la prise Jack microphone, puis grâce à la librairie Beads c'est de modifier ce son, créer un delay, modifier le gain et d'autres effets. J'ai essayé de faire un programme mais sans succès.
Des personnes qui seraient résoudre voir m'écrire un programme pourraient m'aider s'il vous plait ?
J'ai vraiment besoin d'aide, merci.
Hors ligne
salut a toi
bead n'est pas vraiment compliqué d'utilisation mais pour quelqu’un qui commence ça peut être la galère
je t'invite donc a faire une petite recherche Google il y a un pdf qui existe "Sonifying Processing: The Beads Tutorial"
cela répondra surement a tes questions et il est très bien expliqué
a+
Hors ligne
Bonjour Imdidi,
Merci pour ta réponse, j'ai déjà ce PDF, mais j'ai quand même un peu de mal à finaliser mon code processing, notamment pour l'entrée du son et la sortie du son modifiée. Je vous mets mon programme, qui ne fonctionne pas d'ailleurs, est-il possible que vous le regardiez pour moi s'il vous plait ?
Merci
import beads.*;
import ddf.minim.*;
Minim minim;
AudioInput in;
AudioContext ac;
WavePlayer modulator;
WavePlayer carrier;
Envelope gainEnvelope;
Gain synthGain;
TapIn delayIn;
TapOut delayOut;
Gain delayGain;
void draw() {
background (in.mix.level()*2550);
}
void setup()
{
minim = new Minim(this);
in = minim.getLineIn(Minim.STEREO,512);
ac = new AudioContext();
synthGain = new Gain(ac, 1, gainEnvelope);
delayIn = new TapIn(ac, 500);
delayIn.addInput(synthGain);
delayOut = new TapOut(ac, delayIn, 500.01);
delayGain = new Gain(ac, 1, 0.50);
delayGain.addInput(delayOut);
ac.out.addInput(synthGain);
ac.out.addInput(delayGain);
}
void stop () {
in.close();
minim.stop();
super.stop();
}
Hors ligne
salut a toi je ne sais pas pourquoi tu mélange minim et bead voila un bout de code pris dans le fichier pdf
c'est deja un bon debut apres tu ajoute leffet desiré
// Audio_Input_01.pde import beads.*; AudioContext ac; void setup() { size(800,800); ac = new AudioContext(); // get an AudioInput UGen from the AudioContext // this will setup an input from whatever input is your // default audio input (usually the microphone in) // changing audio inputs in beads is a little bit janky (as // of this writing) // so it's best to change your default input temporarily, // if you want to use a different input UGen microphoneIn = ac.getAudioInput(); // set up our usual master gain object Gain g = new Gain(ac, 1, 0.5); g.addInput(microphoneIn); ac.out.addInput(g); ac.start(); } // draw the input waveform on screen // this code is based on code from the Beads tutorials // written by Ollie Brown void draw() { loadPixels(); //set the background Arrays.fill(pixels, color(0)); //scan across the pixels for(int i = 0; i < width; i++) { // for each pixel, work out where in the current audio // buffer we are int buffIndex = i * ac.getBufferSize() / width; // then work out the pixel height of the audio data at // that point int vOffset = (int)((1 + ac.out.getValue(0, buffIndex)) * height / 2); //draw into Processing's convenient 1-D array of pixels pixels[vOffset * height + i] = color(255); } // paint the new pixel array to the screen updatePixels(); }
Dernière modification par imdidi (2017-04-10 13:52:00)
Hors ligne
Merci de votre réponse, j'ai modifié le programme pour essayé notamment de rajouter le delay mais aussi retiré une ligne parce que processing trouvait qu'il y avait une erreur avec le Arrays
cela donne :
import beads.*;
AudioContext ac;
Gain synthGain;
TapIn delayIn;
TapOut delayOut;
void setup() {
size(800,800);
ac = new AudioContext();
UGen microphoneIn = ac.getAudioInput();
Gain g = new Gain(ac, 1, 20);
g.addInput(microphoneIn);
ac.out.addInput(g);
delayIn = new TapIn(ac, 2000);
delayIn.addInput(synthGain);
ac.start();
}
void draw()
{
loadPixels();
for(int i = 0; i < width; i++)
{
int buffIndex = i * ac.getBufferSize() / width;
int vOffset = (int)((1 + ac.out.getValue(0, buffIndex)) *
height / 2);
pixels[vOffset * height + i] = color(255);
}
updatePixels();
}
Dernière modification par midell5 (2017-04-10 14:49:29)
Hors ligne
ok et cela fonctionne t-il ?
Hors ligne
Non pas du tout, cela ne veut pas marcher.
Processing m'affiche : "NulPointerException" à la ligne 14
Hors ligne
tu as une erreur car tu a mis un delayIn mais pas de delayOut voila qui devrait faire laffaire
import beads.*; AudioContext ac; TapIn delayIn; TapOut delayOut; Gain delayGain; void setup() { size(800,800); ac = new AudioContext(); UGen microphoneIn = ac.getAudioInput(); Gain g = new Gain(ac, 1, 20); delayGain = new Gain(ac, 1, 0.50); delayIn = new TapIn(ac, 2000); delayOut = new TapOut(ac, delayIn, 500.0); g.addInput(microphoneIn); ac.out.addInput(g); delayIn.addInput(g); delayGain.addInput(delayOut); ac.out.addInput(delayGain); ac.start(); } void draw() { background(0); loadPixels(); for(int i = 0; i < width; i++){ int buffIndex = i * ac.getBufferSize() / width; int vOffset = (int)((1 + ac.out.getValue(0, buffIndex)) * height / 2); pixels[vOffset * height + i] = color(255); } updatePixels(); }
Dernière modification par imdidi (2017-04-11 14:26:45)
Hors ligne
Merci infiniment, mais en essayant il y a des petits bugs, à mon avis c'est parce qu'il n'y a pas de casque branché au pc et ni de microphone, j'essaierai en rentrant chez moi, je vous tiens au jus sur le bon fonctionnement du programme. Encore merci à demain
Hors ligne
Bonsoir,
je reviens vers vous après plusieurs essaie, et le programme a l'air de marcher, mais il saccade on entends pas si bien, le delay et le gain ont l'air de marché mais le son saccade vraiment, et sur plusieurs pcs j'ai le même problème.
Autre chose, dans le void draw, la ligne 32 "pixels[vOffset * height + i] = color(255);" a un problème, Processing la surligne et du coup la fenêtre java bug et les lignes blanches saccades elles aussi puis bug, savez-vous pourquoi ?
Merci
Hors ligne
ok pour le problème avec les pixels c'est du a un trop gros gain dans ton setup tu a la ligne suivante
Gain g = new Gain(ac, 1, 20);
remplace la par
Gain g = new Gain(ac, 1, 1);
pour le saccadage je ne pourrais pas t'aider je ne connais pas la source de mon coter je suis sous linux ubuntu et ça fonctionne très bien
par contre mon autre pc sous Windows saccade comme tu dit j'ai tenter de le démarrer en mode administrateur mais sans succès
a voir ...
Hors ligne
Bonjour,
encore merci pour la réponse. Mon problème de gain est réglé au moins c'est top. J'ai beau chercher, je ne trouve pas non plus le problème des coupures, même en essayant sur deux pcs différents et trois avec le votre du coup.
Bizarre bizarre tout ça quand même aha
Hors ligne
aurais tu la derniere version de processing, de java jdk, et les dernier driver son ?
Hors ligne
Bonsoir,
Oui tout est à jour ainsi que les dernières versions de Java et Processing, je ne sais vraiment pas quel est le problème du coup, j'ai beau chercher... aha
Hors ligne