Bonjour, j'ai fait un petit jeu (shifumi) qui interagit avec le son:
J'aimerais relancer le programme à l'image de fond ("image[0]") lorsque l'on clique sur la souris (ou touche espace), une sorte de reset quoi.
Quelqu'un peut m'aider svp ?
--
import ddf.minim.*;
PImage[] image = new PImage[31];
float volume;
int curseur;
float canalyseur;
float seuil = 31; //ICI (de 0 a 255)
//POUR ADOUCIR ANIMATION
float volumeLisse;
float alpha = 0.7;//ET ICI (de 0.1 a 0.9)
Minim minim;
AudioInput in;
void setup() {
size(1366,768);
image[0] = loadImage("fond.jpg");
image[1] = loadImage("pierre.jpg");
image[2] = loadImage("feuille.jpg");
image[3] = loadImage("ciseaux.jpg");
image[4] = loadImage("pierre.jpg");
image[5] = loadImage("feuille.jpg");
image[6] = loadImage("ciseaux.jpg");
image[7] = loadImage("pierre.jpg");
image[8] = loadImage("feuille.jpg");
image[9] = loadImage("ciseaux.jpg");
image[10] = loadImage("pierre.jpg");
image[11] = loadImage("feuille.jpg");
image[12] = loadImage("ciseaux.jpg");
image[13] = loadImage("pierre.jpg");
image[14] = loadImage("feuille.jpg");
image[15] = loadImage("ciseaux.jpg");
image[16] = loadImage("pierre.jpg");
image[17] = loadImage("feuille.jpg");
image[18] = loadImage("ciseaux.jpg");
image[19] = loadImage("pierre.jpg");
image[20] = loadImage("feuille.jpg");
image[21] = loadImage("ciseaux.jpg");
image[22] = loadImage("pierre.jpg");
image[23] = loadImage("feuille.jpg");
image[24] = loadImage("ciseaux.jpg");
image[25] = loadImage("pierre.jpg");
image[26] = loadImage("feuille.jpg");
image[27] = loadImage("ciseaux.jpg");
image[28] = loadImage("pierre.jpg");
image[29] = loadImage("feuille.jpg");
image[30] = loadImage("ciseaux.jpg");
minim = new Minim(this);
minim.debugOn();
in = minim.getLineIn(Minim.STEREO, 512);
}
void draw() {
canalyseur += in.mix.level();
volume = map(in.mix.level(), 0.0, 0.9, 0, 255);
volumeLisse = (1 - alpha) * volume + alpha * volumeLisse; //LISSAGE
if (volume >= seuil && canalyseur >= seuil/10 && curseur < image.length - 1) {
volume = 0;
curseur += 1;
canalyseur = 0;
}
afficherImg(curseur);
}
void afficherImg(int indexImage) {
tint(255, 255);
image(image[indexImage], 0, 0); // IMG EN DESSOUS
tint(255, volumeLisse);
if (indexImage < 2) {
image(image[indexImage], 0, 0); // IMG EN DESSUS
} else {
tint(255, volumeLisse);
image(image[indexImage], 0, 0); // SI DERNIERE IMG, EN DESSUS
}
}
void stop() {
in.close();
minim.stop();
super.stop();
}
--
Hors ligne
Bonsoir,
Il est assez difficile de voir ce que réalise ton programme sans le tester. Il est bon de mettre son sketch sous forme d'un zip avec les images.
Ce que j'ai pu voir, c'est qu'à chaque frame, tu inspectes le niveau sonore et tu affiches une image. Comme tu n'as pas modifier le frameRate, le comportement dépend principalement de la variable catalyseur.
Il est bon aussi d'initialiser tes variables.
curseur doit être initialisé à 0 dans le setup()
void mousePressed() { curseur = 0; }
Hors ligne
Merci pour tes explications:)
Hors ligne