Titre du Projet
Scream Pattern
http://www.instructables.com/id/Scream-Pattern-garment-distort-by-scream/
Auteur(s)
Sidonie Boiron, Antoine Cousin
Intentions / Contexte
Nous voulons modifier le volume d’un vêtement grâce à un cri.
Principe de Fonctionnement
Le son du cri récupéré dans Processing vient modifier le patron du vêtement, et ainsi en utilisant un patron déformé, on réalisera un vêtement difforme. Nous ne contrôlons pas complètement la déformation.
Besoins / Compétences
Nous partirons du patron d’un vêtement très simple, le kimono, dont les pièces sont sensiblement rectangulaires. Nous souhaitons imprimer les patrons déformés à échelle 1 sur un traceur ; pour que ce soit possible, nous ne modifierons que la moitié du patron, que nous reproduirons symétriquement pour avoir la patron complet. Cette symétrie simplifie le travail et apporte une certaine cohérence, le vêtement garde une sorte d’identité.
Nous utilisons des cris issus de l’univers du cinéma.
Le patron est tracé en lignes sur Processing, puis modifié en fonction de la fonction FFT (un analyseur de fréquences). Quand la déformation nous plaît, nous la sauvegardons en jpeg pour l’imprimer.
Ensuite nous reportons le patron sur du tissu pour découper et monter les pièces de notre « cri-mono ».
Nous avons donc utilisé un patron de kimono, un ordinateur avec les logiciels Processing et Photoshop, un traceur jet d’encre, une grande pièce de tissu, une machine à coudre et du matériel de couture (épingles, fil, ciseaux…).
Illustration / Schéma
Code Processing pour déformer le patron à partir de l’entrée microphone de l’ordinateur :
<
import ddf.minim.analysis.*;
import ddf.minim.*;
Minim minim;
AudioInput in;
AudioRecorder recorder;
FFT fft;
int z=0;
void setup()
{
size(1280, 800);
minim = new Minim(this);
in = minim.getLineIn();
fft = new FFT( in.bufferSize(), in.sampleRate() );
//frameRate(120);
}
void draw()
{
background(#FFFFFF);
stroke(#000000);
fill(255, 255, 255, 154);
fft.forward( in.mix );
for (int i = 0; i < fft.specSize (); i++)
{
//manche
quad(200-(fft.getBand(i)*random(5)),320-(fft.getBand(i)*random(5)), 370+(fft.getBand(i)*random(5)),320-(fft.getBand(i)*random(5)),370+(fft.getBand(i)*random(5)), 500+(fft.getBand(i)*random(5)),200- (fft.getBand(i)*random(5)), 500+(fft.getBand(i)*random(5)) );
//dos
float a = random(5);
float b = random (5);
float c = random(5);
float d = random (5);
float e = random(5);
float f = random (5);
float g = random(5);
float h = random (5);
float j = random(5);
float k = random (5);
//dos1
line(600-(fft.getBand(i)*j),220-(fft.getBand(i)*k),630-(fft.getBand(i)*a),200-(fft.getBand(i)*b));
//dos2
line(630-(fft.getBand(i)*a),200-(fft.getBand(i)*b),750+(fft.getBand(i)*c),200-(fft.getBand(i)*d));
//dos3
line(750+(fft.getBand(i)*c),200-(fft.getBand(i)*d),750+(fft.getBand(i)*e),600+(fft.getBand(i)*f));
//dos4
line(750+(fft.getBand(i)*e),600+(fft.getBand(i)*f),600-(fft.getBand(i)*g),600+(fft.getBand(i)*h));
//dos5
line(600-(fft.getBand(i)*g),600+(fft.getBand(i)*h),600-(fft.getBand(i)*j),220-(fft.getBand(i)*k));
//devant
//devant1
float l = random(5);
float m = random (5);
float n = random(5);
float o = random (5);
float p = random(5);
float q = random (5);
float r = random(5);
float s = random (5);
float t = random(5);
float u = random (5);
//devant1
line(900-(fft.getBand(i)*l),560-(fft.getBand(i)*m),1020-(fft.getBand(i)*n),200-(fft.getBand(i)*o));
//devant2
line(1020-(fft.getBand(i)*n),200-(fft.getBand(i)*o),1120+(fft.getBand(i)*p),200-(fft.getBand(i)*q));
//devant3
line(1120+(fft.getBand(i)*p),200-(fft.getBand(i)*q),1120+(fft.getBand(i)*r),600+(fft.getBand(i)*s));
//devant4
line(1120+(fft.getBand(i)*r),600+(fft.getBand(i)*s),900-(fft.getBand(i)*t),600+(fft.getBand(i)*u));
//devant5
line(900-(fft.getBand(i)*t),600+(fft.getBand(i)*u),900-(fft.getBand(i)*l),560-(fft.getBand(i)*m));
}
if (keyPressed == true) {
save(z+ »dessin.jpg »);
z++;
delay(100);
}
}
>