Bonjour !
Je viens d'arriver sur ce forum sur lequel j'ai déjà trouvé pas mal d'infos, mais là je bloque pas mal..
Je viens de débuter avec processing, et j'aimerai pouvoir déformer une image en fonction d'un son récupéré par le micro.
Je voudrai utiliser la fréquence et l'amplitude pour varier les transformations de mon image.
J'ai réussi pour l'instant à bouger des pixels en fonctions de l'amplitude mais j'ai l'impression que c'est toujours le même pixel qui change de place.
Ce que je voudrai réussi à faire ensuite c'est que la fréquence du son me détermine la position d'un pixel pour que je puisse le récupérer et le changer de place (comme sur la photo)
Voilà mon code pour le moment :
Merci de votre aide !
Hors ligne
Bonjour,
Il est assez difficile de comprendre ce que tu veux faire.
A priori, sur ta photo, ce sont des portions d'image qu'il faut modifier et non pas un pixel. Il faut donc utiliser la méthode get() de PImage :
http://www.processing.org/reference/PImage_get_.html
Pour une plage de fréquence donnée, tu vas obtenir l'amplitude. Où le rectangle de l'image va t'il se déplacer ?
Hors ligne
Bonjour,
Merci pour ta réponse Mushussu !
Désolée si je n'ai pas été très claire mais comme je débute j'ai encore pas mal de difficultés..
Je voudrai trouver un moyen pour déformer une image par rapport au son. C'est pour ça que j'essayais de travailler avec les pixels.
Est-ce possible qu'avec la fréquence (ou l'ampitude) j'obtienne le numéro d'un pixel (ou les coordonnées d'une portion d'image?)
Admettons que la fréquence du son enregistré soit de 250 Hertz, le pixel selectionné serait le n°250 (si j'ai bien compris comment processing gère les pixels).
Et une fois cet élément sélectionné, le déplacer à l'endroit correspondant à la fréquence suivante (ou autre variable, à définir)
Merci, bonne journée !
Hors ligne
Oui, il est possible de déformer une image avec du son. Dans l'exemple ci-dessous chaque colonne représente une bande de fréquence de 8 Hz et le décalage se fait sur la somme de l'amplitude de ces 8 valeurs.
import ddf.minim.*; import ddf.minim.analysis.*; Minim minim; AudioInput in; FFT fft; PImage imageTest; void setup() { size (640, 480); imageTest = loadImage("image640x480.jpg"); minim = new Minim(this); in = minim.getLineIn(Minim.MONO, 4096, 44100); fft = new FFT(in.left.size(), 44100); noFill(); imageTest.loadPixels(); } void draw() { background(255); fft.forward(in.left); loadPixels(); for (int i = 0; i < width; i++) { float amplitude = 0; for (int j = 0; j < 8; j++) { // Somme des 8 valeurs amplitude += fft.getFreq(i * 8 + j); } for (int j = 0; j < height; j++) { pixels[j * width + i] = imageTest.pixels[((j + (int)amplitude) % height) * width + i]; } } updatePixels(); } void stop() { in.close(); minim.stop(); super.stop(); }
J'utilise cette image :
Dernière modification par Mushussu (2014-12-23 13:41:50)
Hors ligne
Ah génial l'exemple
Je vais essayer de bien le comprendre et de voir comment je peux l'adapter.
Merci beaucoup!
Hors ligne
Pages: 1