hekmil — 2016-05-18 18:13:51

Bonjour, alors je suis sur Processing 3.1.1 sous W10 avec normalement la dernière de Beads.

Sinon sur le lien suivant vous trouverez une portion de code qui m'affiche un code d'erreur très long qui dit ne pas trouver la source, cependant le code fonctionne et je cherche juste à empecher cette erreur :
http://paste2.org/KcW9KGjH

De plus j'ai un autre problème qui est lors du démarrage de mon programme, parfois j'ai cette erreur au lancement lors du chargement de ma musique (elle fait 10Mo) :

java.lang.RuntimeException: Waited 5000ms for: <6c8aac95, 624d5f74>[count 2, qsz 0, owner <main-FPSAWTAnimator#00-Timer0>] - <main-FPSAWTAnimator#00-Timer0-FPSAWTAnimator#00-Timer1>
	at processing.opengl.PSurfaceJOGL$2.run(PSurfaceJOGL.java:449)
	at java.lang.Thread.run(Thread.java:745)

Et sinon est-il possible de faire tourner un son en boucle comme avec .loop de minim ? :)

Merci

imdidi — 2016-05-20 23:05:31

salut
j'y vais seulement de mémoire mais dans ton void setup tu a ton String audioFileName puis un savePath
sa ne serais pas plutôt loadPath ? save étant pour sauvegarder un fichier et le "data/musique/Musique_Menu.mp3" ne devrait t-il pas être entre les guillemet ex: loadPath("data/musique/Musique_Menu.mp3");

de plus me semble que quand j'avais essayer la libraires bead pour faire jouer le morceau sa prenais ex:Musique_menu.play(); et pour l'arreter Musique_menu.stop();

mais comme je te dit je peux me tromper sa fais longtemps que j'ai utiliser cette librairie

et si tu a juste besoin d'un fichier son a jouer en boucle qui n'est rien de bien compliquer tourne toi vers la librairie sound de processing qui est beaucoup plus facile a mettre en œuvre 

sur ce bien a toi
Danny

hekmil — 2016-05-21 14:17:39

Salut, Imdidi

La fonction loadPath n'existe pas donc je ne vois pas vraiment ce que tu veux dire.
J'utilise déjà c'est deux fonction pour jouer le morceau ^^

Je vais regarder cette librairie pour voir si elle me permet de faire ce que je veux.

Merci de ton aide :)

hekmil — 2016-05-21 14:26:06

D'accord la librairie Sound à l'air pas mal mais je ne vois pas de fonction pour changer le volume ou le gain.

EDIT : Finalement Sound n'est pas assez développé, du coup retour à la case départ

imdidi — 2016-05-24 00:34:03

salut

voici l'exemple numero 4 de bead il s'appelle sample player qui est un lecteur de fichier audio

voila le code je t'invite a l’étudier et le modifier pour tes besoins remarque que tu na pas besoin de savepath seulement de dire le lien ou est ton fichier
sur ce bonne continuation
Danny

import beads.*;
import java.util.Arrays; 

AudioContext ac;

void setup() {
  size(300,300);
  ac = new AudioContext();
  selectInput("Select an audio file:", "fileSelected");
}

/*
 * This code is used by the selectInput() method to get the filepath.
 */
void fileSelected(File selection) {
  /*
   * Here's how to play back a sample.
   * 
   * The first line gives you a way to choose the audio file.
   * The (commented, optional) second line allows you to stream the audio rather than loading it all at once.
   * The third line creates a sample player and loads in the Sample.
   * SampleManager is a utility which keeps track of loaded audio
   * files according to their file names, so you don't have to load them again.
   */
  String audioFileName = selection.getAbsolutePath();
  SamplePlayer player = new SamplePlayer(ac, SampleManager.sample(audioFileName));
  /*
   * And as before...
   */
  Gain g = new Gain(ac, 2, 0.2);
  g.addInput(player);
  ac.out.addInput(g);
  ac.start();
  
  /*
   * Note there is a lot more you can do. e.g., Varispeed. Try adding this...
   Envelope speedControl = new Envelope(ac, 1);
   player.setRate(speedControl);
   speedControl.addSegment(1, 1000);  //wait a second
   speedControl.addSegment(-0.5, 3000); //now rewind
   *
   */
   
}


/*
 * Here's the code to draw a scatterplot waveform.
 * The code draws the current buffer of audio across the
 * width of the window. To find out what a buffer of audio
 * is, read on.
 * 
 * Start with some spunky colors.
 */
color fore = color(255, 102, 204);
color back = color(0,0,0);

/*
 * Just do the work straight into Processing's draw() method.
 */
void draw() {
  loadPixels();
  //set the background
  Arrays.fill(pixels, back);
  //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
    vOffset = min(vOffset, height);
    pixels[vOffset * height + i] = fore;
  }
  updatePixels();
}
hekmil — 2016-05-24 10:08:17

J'ai déjà étudier les exemple de processing, et je souhaite faire un jeu pas un programme où l'utilisateur doit rentrer pour la jouer.

Cdlt

hekmil — 2016-05-24 10:52:12

En gros j'ai trouvé ce code sur Beadsproject http://paste2.org/CvO7c6tE mais c'est du Java, je souhaiterais utiliser la même manière de faire une musique en loop sur Processing.

Mushussu — 2016-05-24 12:58:37

Bonjour,

Ce que tu as trouvé, ce sont les sources de Beads. Pour faire une boucle il faut juste insérer la ligne suivante dans le setup(); juste après la déclaration du player :

  player.setLoopType(SamplePlayer.LoopType.LOOP_FORWARDS);
hekmil — 2016-05-24 13:46:11

Merci effectivement le son est bien loopé :D

Du coup pour la longue erreur que j'avais posté au début, une idée ?

imdidi — 2016-05-24 15:45:14

salut

dans le code que je t'ai donner tu aurais pu juste commenter le "selectinput" dans le void setup et mettre ton lien de fichier pour le faire jouer c'est pour cela que je t'ai dit étudie le. Et tous aurais probablement fonctionner que ce soit un jeu ou un programme le code est le même. 

fais un teste et essaye ça

Musique_menu = new AudioContext();
  //String audioFileName = savePath("") +"data/musique/Musique_Menu.mp3";
  SamplePlayer player = new SamplePlayer(Musique_menu, SampleManager.sample("data/musique/Musique_Menu.mp3"));
  g = new Gain(Musique_menu, 1, 0.025);
  g.addInput(player);
  Musique_menu.out.addInput(g);
  Musique_menu.setKillOnEnd();     // Cette fonction n'est pas reconnu non plus
}

bonne journée
Danny

hekmil — 2016-05-24 21:27:25

Non j'ai déjà essayer cette façon mais lorsque je lance le programme j'obtiens NullPointer Exception, il faut bien mettre un sketchPatch ou save ou machin quelque part. Le problème c'est lorsque je lance le programme parfois il met trop de temps a charger la musique et le programme crash

Et je parlais aussi de l'erreur lorsque je contrôle mon gain avec ControlP5

imdidi — 2016-05-25 22:27:09

salut

essaye sa alors

Musique_menu = new AudioContext();
  String audioFileName = sketchPath("") +"data/musique/Musique_Menu.mp3";
  SamplePlayer player = new SamplePlayer(Musique_menu, SampleManager.sample(audioFileName));
  g = new Gain(Musique_menu, 1, 0.025);
  g.addInput(player);
  Musique_menu.out.addInput(g);
//Et ICI CE N'EST PAS L'AUDIO CONTEXT A DECLARER MAIS LE PLAYER
 // Musique_menu.setKillOnEnd();     // Ca Cest Pas bon
player.setKillOnEnd(false);

je ne comprend pas comment ton morceau de musique peux ce lancer car ca prend un musique_menu.start() a quelque part

a moins que tu n'aille pas donner tout le code

tien nous au courant
Danny

hekmil — 2016-05-26 13:01:51

Oui j'ai bien un start(); que j'avais rajouté après en effet ^^

imdidi — 2016-05-26 20:01:43

ok et le bout de code a tu resolut ton probleme ?

hekmil — 2016-05-26 20:03:12

Ba c'est la même chose que ce que j'ai ^^

imdidi — 2016-05-26 23:19:45

Ok donc le savepath tu la remplacer pour sketchpath et ton musique menu.setkillonend tu la remplacer par player.setkillonend et ca fais toujour la meme chose

hekmil — 2016-05-26 23:34:11

Enfaite la tout ce que je cherchais marche maintenant il y a juste l'erreur lorsque j'utilise mon curseur cP5

imdidi — 2016-05-27 00:01:19

0ok ben moi jarrete la je sais pas dequoi tu parle et je trouve ca tres dur de te suivre
bonne journer
a+

hekmil — 2016-05-27 00:06:56

Heu ok ^^ C'est juste mon void Musique (float v) { g.setGain(v/1000)}

c'est juste ça l'erreur que j'ai donner dans mon tout premier post ^^

imdidi — 2016-05-27 01:28:29

tien voila j’espère que ça auras pu t'aider
essaye ça,
j'ai vue que tu n'avais pas déclarer ton gain

import controlP5.*;
import beads.*;

int MusiqueVolume = 50;

ControlP5 cp5; 
AudioContext Musique_menu;
Gain g;

void setup() {
  cp5 = new ControlP5(this);
  cp5.addSlider("MusiqueVolume")
    .setPosition(300, 236)
    .setSize(250, 23)
    .setRange(0, 100) // on choisit l'interValle
    .setLabel("");

Musique_menu = new AudioContext();
  String audioFileName = sketchPath("") +"data/musique/Musique_Menu.mp3";
  SamplePlayer player = new SamplePlayer(Musique_menu, SampleManager.sample(audioFileName));
  g = new Gain(Musique_menu, 1, 0.025);
  g.addInput(player);
  Musique_menu.out.addInput(g);
  player.setKillOnEnd(false);
}

void draw () {
  g.setGain(MusiqueVolume / 1000);
}
hekmil — 2016-05-28 12:51:10

Effecitvement vu que j'utilisais dans une fonction mon g.setGain() que je n’appelais jamais la déclaration de variable était inutile, si je le met dans le draw tout fonctionne sans problème, merci ;)