Différences entre les versions de « Le75::Image numérique BAC2 »

De {}
Aller à la navigation Aller à la recherche
 
(47 versions intermédiaires par 14 utilisateurs non affichées)
Ligne 43 : Ligne 43 :
 
</pre>
 
</pre>
  
_ Alexei Shulging : http://www.c3.hu/collection/form/
+
==Cours==
_ Baily, Corby & Mackenzie : http://www.reconnoitre.net
 
_ http://casperelectronics.com
 
_ Boston Dynamics : https://www.youtube.com/watch?v=M8YjvHYbZ9w
 
          http://www.tagtele.com/videos/voir/146008/
 
          http://www.bostondynamics.com/robot_Atlas.html
 
_Philippe Coudert : https://vimeo.com/88061518
 
_WikiklRC ou "la sonification de wikipédia : http://labomedia.org/oeuvres-interactives/wikikirc-ou-la-sonification-de-wikipedia/ ==
 
  
 +
===Cours du 15 février 2016===
 +
<source lang="java">
 +
float posX;
 +
float posY;
  
'''Les capteurs pour les nuls''' ''Texte italique''
+
float vitesseX;
 +
float vitesseY;
  
Un '''capteur''' est un dispositif qui transforme l'état d'une grandeur physique observée (et captée, en l’occurrence) en une grandeur. Dans notre cas, les capteurs numériques visuels et audios interprètent sons et images en données numériques chiffrées. Il ne faut pas le confondre avec un simple instrument de mesure, qui stocke ou affiche les informations, ce qui n'est pas toujours le cas d'un capteur. Il s'agit souvent d'un élément de base d'un système d'acquisition de données.
 
  
Un capteur dispose souvent d'un '''transducteur'''. Il s'agit d'un dispositif électrique convertissant un signal physique en un autre. Par exemple, un photorécepteur convertit un rayonnement lumineux en énergie électrique, dans le cas des panneaux photovoltaïques par exemple.
+
float posXB;
 +
float posYB;
  
Dans le domaine de la captation visuelle, plusieurs capteurs existent : s'ils existent des capteurs de lumières et des capteurs de couleurs extrêmement pointus et utilisés dans le domaine des sciences, les capteurs d'images '''CCD''' et '''CMOS''' sont les plus répandus dans notre utilisation courante : caméra numérique, appareil photo numérique, scanners. Ce sera donc bien avec ces capteurs que nous allons travailler.
+
float vitesseXB;
 +
float vitesseYB;
  
Un capteur de photographie numérique est composé de cellules photoélectriques appelées '''photosites''' qui captent les photons, composants de la lumière. Il faut 4 photosites pour générer un pixel. Chaque photosite est couvert d'un filtre coloré, pour s'intégrer le plus souvent à un système colorimétrique RVB, et rarement CMJN.
+
int teinteA;
 +
int teinteB;
  
La captation lumineuse génère alors un signal analogique selon un '''procédé photoélectrique,''' qui est ensuite digitalisé via un convertisseur A/D puis transformée en image numérique dont les couleurs sont des valeurs chiffrées.
+
int vitesseTeinteA;
 +
int vitesseTeinteB;
  
Le '''convertisseur A/D''' traduit une grandeur analogique, souvent une tension électrique, en valeur numérique
+
void setup(){
 +
  size(600, 600);
 +
  posX = 50;
 +
  posY = 50;
 +
 
 +
  posXB = 550;
 +
  posYB = 550;
 +
 
 +
  vitesseX = 1;
 +
  vitesseY = 2;
 +
 
 +
  vitesseXB = -1;
 +
  vitesseYB = -2;
 +
 
 +
  teinteA = 360;
 +
  teinteB = 360;
 +
 
 +
  vitesseTeinteA = -1;
 +
  vitesseTeinteB = -1;
 +
 
 +
  background(255);
 +
  colorMode(HSB);
 +
  noStroke();
 +
}
  
Un capteur '''CCD - Charge Couple Device''' - date des années 1970.
+
void draw(){
 +
  //background(255);
 +
 
 +
  fill(teinteA, 200, 200);
 +
  ellipse(posX, posY, 100, 100);
 +
  fill(teinteB, 200, 200);
 +
  ellipse(posXB, posYB, 100, 100);
 +
 
 +
  teinteA = teinteA + vitesseTeinteA;
 +
  teinteB = teinteB + vitesseTeinteB;
 +
 
 +
  if(teinteA < 0 || teinteA > 360){
 +
    vitesseTeinteA = -vitesseTeinteA;
 +
  }
 +
  if(teinteA < 0 || teinteA > 360){
 +
    vitesseTeinteB = -vitesseTeinteB;
 +
  }
 +
 
 +
 
 +
  if(posX > 250 || posX < 50){
 +
    vitesseX = -vitesseX;
 +
  }
 +
 
 +
  if(posY > 550 || posY < 50){
 +
    vitesseY = -vitesseY;
 +
  }
 +
 
 +
 
 +
 
 +
  if(posXB > 550 || posXB < 350){
 +
    vitesseXB = -vitesseXB;
 +
  }
 +
 +
  if(posYB > 550 || posYB < 50){
 +
    vitesseYB = -vitesseYB;
 +
  }
 +
 
 +
  posXB = posXB + vitesseXB;
 +
  posYB = posYB + vitesseYB;
 +
 
 +
  posX = posX + vitesseX;
 +
  posY = posY + vitesseY;
 +
 
 +
  if(mousePressed){
 +
    saveFrame();
 +
  }
 +
 
 +
  //saveFrame();
 +
 
 +
}
  
Le capteur '''CMOS - Complementary Metal oxyde semi-conductor''' - est plus récent et date des années 1980. Ils sont plus précis.
+
/*
 +
void mousePressed(){
 +
  saveFrame();
 +
}
 +
*/
 +
}</source>
  
 +
===Cours du 22 février 2016===
 +
<source lang="java">
  
 +
float posX;
 +
float posY;
 +
 +
void setup(){
 +
  size(600, 600);
 +
  background(255, 255, 0);
 +
 
 +
}
 +
 +
void draw(){
 +
 
 +
  background(255, 255, 0);
 +
  posX = 10;
 +
  posY = 10;
 +
 
 +
 
 +
  while(posX < 600){
 +
   
 +
    line(posX, 0, posX, 600);
 +
   
 +
    posX = posX + mouseX + 10;
 +
   
 +
   
 +
  }
 +
 
 +
  while(posY < 600){
 +
    line(0, posY, 600, posY);
 +
    posY = posY + 10;
 +
   
 +
  }
 +
 
 +
 
 +
}
 +
</source>
 +
 +
Énoncé pour la prochaine fois
 +
<source lang="java">
 +
//réaliser une mosaïque de carrés rouges et bleus.
 +
//chaque carré doit avoir une longueur de côté qui passe de 10 à 50, puis de 50 à 10
 +
//ce mouvement doit être infini (les carrés bougent tout seul)
 +
</source>
 +
 +
===Cours du 2 mars 2016===
 +
<source lang="java">
 +
int indice;
 +
int indiceY;
 +
 +
int couleur;
 +
 +
int cote;
 +
 +
int vitesse;
 +
 +
void setup(){
 +
  size(600, 600);
 +
  cote = 50;
 +
  vitesse = - 1;
 +
}
 +
 +
void draw(){
 +
 
 +
  if(cote <= 10){
 +
    vitesse = 1;
 +
  }
 +
  if(cote >= 50){
 +
    vitesse = -1;
 +
  }
 +
 
 +
  cote = cote + vitesse;
 +
 
 +
 
 +
  indiceY = 0;
 +
  while(indiceY <= 12){
 +
    indice = 0;
 +
    if(indiceY % 2 == 0){
 +
      couleur = 0;
 +
    }else{
 +
      couleur = 1;
 +
    }
 +
    while(indice <= 12){
 +
      //print(indiceY);
 +
     
 +
      if(couleur == 0){
 +
        fill(255, 0, 0);
 +
      }else{
 +
        fill(0, 0, 255);
 +
      }
 +
     
 +
      rect(indice * 50, indiceY * 50, cote, cote);
 +
     
 +
      if(couleur == 0){
 +
        couleur = 1;
 +
      }else{
 +
        couleur = 0;
 +
      }
 +
     
 +
      //line(indice * 10 , 0, indice * 10, 600);
 +
      indice = indice + 1;
 +
    }
 +
    indiceY = indiceY + 1;
 +
   
 +
  }
 +
 
 +
 +
 +
 
 +
 
 +
}
 +
</source>
 +
<source lang="java">
 +
//une forme se déplace dans la fenêtre. A chaque fois que le volume capté
 +
//dépasse un seuil, cette forme change de direction
 +
 +
import processing.sound.*;
 +
 +
AudioIn entree;
 +
Amplitude volume;
 +
 +
float posX;
 +
float posY;
 +
 +
float vitesseX;
 +
float vitesseY;
 +
 +
void setup(){
 +
  size(600, 600);
 +
  posX = 300;
 +
  posY = 300;
 +
 
 +
  vitesseX = 0.5;
 +
  vitesseY = 0.5;
 +
  fill(255, 0, 0);
 +
 
 +
  entree = new AudioIn(this, 0);
 +
  volume = new Amplitude(this);
 +
 +
  entree.start();
 +
  volume.input(entree);
 +
}
 +
 +
void draw(){
 +
  background(255);
 +
 
 +
 
 +
 
 +
 
 +
  ellipse(posX, posY, 100, 100);
 +
 
 +
  if(volume.analyze() > 0.05){
 +
    vitesseX = random(-5, 5);
 +
    vitesseY = random(-5, 5);
 +
  }
 +
 
 +
  if(posX > 550 && vitesseX > 0){
 +
    vitesseX = -vitesseX;
 +
  }else if(posX < 50 && vitesseX < 0){
 +
    vitesseX = -vitesseX;
 +
  }
 +
  if(posY > 550 && vitesseY > 0){
 +
    vitesseY = -vitesseY;
 +
  }else if(posY < 50 && vitesseY < 0){
 +
    vitesseY = -vitesseY;
 +
  }
 +
 
 +
  posX = posX + vitesseX;
 +
  posY = posY + vitesseY;
 +
 
 +
 
 +
 
 +
}
 +
 +
 +
</source>
 +
 +
<source lang="java">
 +
//Énoncé pour la prochaine fois
 +
//dessiner 200 carrés imbriqués les uns dans les autres, les carrés pairs ont une couleur différente des carrés impairs et lorsque l'on clique sur la fenêtre les couleurs s'inversent
 +
</source>
 +
 +
===Cours du 7 mars 2016===
 +
<source lang="java">
 +
 +
float position;
 +
float cote;
 +
 +
int click;
 +
 +
void setup(){
 +
  size(600,600);
 +
  noStroke();
 +
  click = 0;
 +
}
 +
 +
void draw(){
 +
  position=0;
 +
  cote=600;
 +
 
 +
  while(position<300){
 +
    if(cote%2==0 && click == 0){
 +
     
 +
        fill(255,0,0);
 +
    }else if(cote%2==0 && click == 1){
 +
      fill(0,0,255);
 +
   
 +
    }else if(cote%2==1 && click == 0){
 +
        fill(0,0,255);
 +
    }else{
 +
        fill(255,0,0);
 +
    }
 +
     
 +
     
 +
   
 +
 +
    rect(position,position,cote,cote);
 +
      position=position+1.5;
 +
      cote=cote-3;
 +
  }
 +
}
 +
 +
void mousePressed(){
 +
  if(click == 0){
 +
    click = 1;
 +
  }else{
 +
    click = 0;
 +
  }
 +
}
 +
</source>
 +
<source lang="java">
 +
import processing.sound.*;
 +
 +
AudioIn entree;
 +
Amplitude volume;
 +
 +
void setup(){
 +
  size(600, 600);
 +
 
 +
  entree = new AudioIn(this, 0);
 +
  volume = new Amplitude(this);
 +
 
 +
  entree.start();
 +
  volume.input(entree);
 +
 
 +
}
 +
 +
 +
void draw(){
 +
  print(volume.analyze());
 +
  if(volume.analyze() > 0.01){
 +
    background(255, 0, 0);
 +
  }else{
 +
    background(0, 255, 0);
 +
  }
 +
}
 +
</source>
 +
===Cours du 14 mars 2016===
 +
<source lang="java">
 +
 +
PImage chaton;
 +
float rotation;
 +
int compteur;
 +
void setup(){
 +
  chaton = loadImage("chaton.png");
 +
  size(600, 600, P3D);
 +
  rotation = 0;
 +
}
 +
 +
void draw(){
 +
  compteur = 0;
 +
  while(compteur < 1000){
 +
    pushMatrix();
 +
    translate(random(0, 600), random(0,600));
 +
    rotateZ(rotation);
 +
    image(chaton, -25, -50, 50, 100);
 +
   
 +
    popMatrix();
 +
    compteur = compteur + 1;
 +
    rotation = rotation + 0.1;
 +
  }
 +
 
 +
}
 +
 +
</source>
 +
 +
===Cours du 21 mars 2016===
 +
[http://dotdotdot.be/sessions/75/20160321/chat_objet.zip code1 (le chat)]
 +
 +
[http://dotdotdot.be/sessions/75/20160321/chats_objets.zip code2 (les chats)]
 +
 +
===Cours du 18 avril 2016===
 +
<source lang="java">
 +
 +
import ddf.minim.*;
 +
import ddf.minim.analysis.*;
 +
 +
Minim minim;
 +
AudioInput in;
 +
FFT fftIn;
 +
 +
float posX;
 +
float posY;
 +
 +
void setup(){
 +
  size(600, 600);
 +
 
 +
  posX = 300;
 +
  posY = 300;
 +
  minim = new Minim(this);
 +
 
 +
  in = minim.getLineIn();
 +
 
 +
  fftIn = new FFT(in.bufferSize(), in.sampleRate());
 +
 
 +
 
 +
  fill(0);
 +
  stroke(0);
 +
}
 +
 +
void draw(){
 +
  background(255);
 +
 
 +
  strokeWeight(2);
 +
 
 +
 +
 
 +
 
 +
 
 +
 +
    fftIn.forward(in.mix);
 +
 
 +
   
 +
    int nbreBandes = fftIn.specSize();
 +
   
 +
    int indice = 0;
 +
    float valeur = 0;
 +
   
 +
    int maxFrequence = 0;
 +
   
 +
    while(indice < nbreBandes){
 +
      if(fftIn.getBand(indice) > valeur){
 +
        valeur = fftIn.getBand(indice);
 +
        maxFrequence = indice;
 +
      }
 +
      indice = indice + 1;
 +
    }
 +
   
 +
   
 +
    if(maxFrequence > 0){
 +
   
 +
      float deplacementX = map(maxFrequence, 0, 60, -5, 5);
 +
     
 +
      float deplacementY = map(maxFrequence, 0, 60, -5, 5);
 +
     
 +
      line(posX, posY, posX + deplacementX, posY + deplacementY);
 +
     
 +
     
 +
     
 +
      posX = posX + deplacementX;
 +
      posY = posY + deplacementY;
 +
   
 +
    }
 +
   
 +
   
 +
   
 +
 
 +
}
 +
</source>
  
 
== Etudiants ==
 
== Etudiants ==
Mettez ici votre nom sous la forme suivante:
+
[[Le75::Albator|Albator]]
[[Le75::Votre_Nom|Votre Nom]]
+
 
 +
[[Le75::Capitaine Flam| Capitaine Al]]
 +
 
 +
[[Le75::coraliedb|coraliedb]]
 +
 
 +
[[Le75::Steve Jobs|Steve Jobs]]
 +
 
 +
[[Le75::Mister Pickles|Mister Pickles]]
 +
 
 +
[[Le75::TangoDelta|TangoDelta]]
 +
 
 +
[[Le75::SalutFred|Fred]]
 +
 
 +
[[Le75::D4rkw3bM4st3r69|D4rkw3bM4st3r69]]
 +
 
 +
[[Le75::Bakuuto!|Bakuuto!]]
 +
 
 +
[[Le75::MonsieurBurns| MonsieurBurns]]
 +
 
 +
[[Le75::Drunk Rick| Drunk Rick]]
 +
 
 +
[[Le75::flop!|flop!]]
 +
 
 +
[[Le75::hoel|hoel]]
 +
 
 +
[[Utilisateur:Obi-Wano%C3%A9 | Obi-Wanoé]]
 +
 
 +
 
 +
[[Catégorie:2015-2016]]  
  
[[Catégorie:2015-2016]]
 
 
[[Catégorie:Le75 B2]]
 
[[Catégorie:Le75 B2]]

Version actuelle datée du 18 avril 2016 à 09:02

Ce cours est destiné aux étudiants de BAC2 de l'option Images Plurielles Imprimées de l'école Le 75.

Cours

1er Quadri: Numériser

Énoncé

Développer un procédé de numérisation avec un outil choisi puis exploité de manière neuve/détournée/personnelle.

Développer un procédé de rendu des données numérisées (choix du traitement des données, choix de la méthode d'impression).

Produire 10 images imprimées réalisées via les procédés définis.

Format du rendu : libre.

Méthode

Choisir un outil de numérisation (scanner, appareil photo, capteur, micro, webcam).

Chercher des références, techniques, artistiques, sur l'outil choisi.
Documenter les découvertes sur l'espace web du cours (dotdotdot.be).

Choisir un sujet à capturer avec le processus choisi et réaliser la capture. Stocker les données récupérées.

Produire des images avec les données récupérées par la capture.
Contraintes techniques
Exploitation de l'outil : l'outil doit être détourné/hacké/transformé

Exploitation des données : la méthode de production des images doit-être définie comme un système logique. 
L'interprétation personnelle, l'écriture artistique, doit se placer dans la définition de ce système et non dans son exécution.

Tirage
10 exemplaires

Remise
15 décembre 2015

Paliers
#1 – 8 octobre – outil et documentation (présentation du choix de l'outil, de la documentation et des pistes)
#2 – 19 novembre – capture (présentation de la méthode de capture, du sujet choisi, du type de données numérisées via l'outil
#3 – 3 décembre – exploitation des données et impression (présentation de prototypes, de maquettes avant le résultat final)

Cours

Cours du 15 février 2016

float posX;
float posY;

float vitesseX;
float vitesseY;


float posXB;
float posYB;

float vitesseXB;
float vitesseYB;

int teinteA;
int teinteB;

int vitesseTeinteA;
int vitesseTeinteB;

void setup(){
  size(600, 600);
  posX = 50;
  posY = 50;
  
  posXB = 550;
  posYB = 550;
  
  vitesseX = 1;
  vitesseY = 2;
  
  vitesseXB = -1;
  vitesseYB = -2;
  
  teinteA = 360;
  teinteB = 360;
  
  vitesseTeinteA = -1;
  vitesseTeinteB = -1;
  
  background(255);
  colorMode(HSB);
  noStroke();
}

void draw(){
  //background(255);
  
  fill(teinteA, 200, 200);
  ellipse(posX, posY, 100, 100);
  fill(teinteB, 200, 200);
  ellipse(posXB, posYB, 100, 100);
  
  teinteA = teinteA + vitesseTeinteA;
  teinteB = teinteB + vitesseTeinteB;
  
  if(teinteA < 0 || teinteA > 360){
    vitesseTeinteA = -vitesseTeinteA;
  }
  if(teinteA < 0 || teinteA > 360){
    vitesseTeinteB = -vitesseTeinteB;
  }
  
  
  if(posX > 250 || posX < 50){
    vitesseX = -vitesseX;
  }
  
  if(posY > 550 || posY < 50){
    vitesseY = -vitesseY;
  }
  
  
  
  if(posXB > 550 || posXB < 350){
    vitesseXB = -vitesseXB;
  }
 
  if(posYB > 550 || posYB < 50){
    vitesseYB = -vitesseYB;
  }
  
  posXB = posXB + vitesseXB;
  posYB = posYB + vitesseYB;
  
  posX = posX + vitesseX;
  posY = posY + vitesseY;
  
  if(mousePressed){
    saveFrame();
  }
  
  //saveFrame();
  
}

/*
void mousePressed(){
  saveFrame();
}
*/
}

Cours du 22 février 2016

float posX;
float posY;

void setup(){
  size(600, 600);
  background(255, 255, 0);
  
}

void draw(){
  
  background(255, 255, 0);
  posX = 10;
  posY = 10;
  
  
  while(posX < 600){
    
    line(posX, 0, posX, 600);
    
    posX = posX + mouseX + 10;
    
    
  }
  
  while(posY < 600){
    line(0, posY, 600, posY);
    posY = posY + 10;
    
  }
  
  
}

Énoncé pour la prochaine fois

//réaliser une mosaïque de carrés rouges et bleus.
//chaque carré doit avoir une longueur de côté qui passe de 10 à 50, puis de 50 à 10
//ce mouvement doit être infini (les carrés bougent tout seul)

Cours du 2 mars 2016

int indice;
int indiceY;

int couleur;

int cote;

int vitesse;

void setup(){
  size(600, 600);
  cote = 50;
  vitesse = - 1;
}

void draw(){
  
  if(cote <= 10){
    vitesse = 1;
  }
  if(cote >= 50){
    vitesse = -1;
  }
  
  cote = cote + vitesse;
  
  
  indiceY = 0;
  while(indiceY <= 12){
    indice = 0;
    if(indiceY % 2 == 0){
      couleur = 0;
    }else{
      couleur = 1;
    }
    while(indice <= 12){
      //print(indiceY);
      
      if(couleur == 0){
        fill(255, 0, 0);
      }else{
        fill(0, 0, 255);
      }
      
      rect(indice * 50, indiceY * 50, cote, cote);
      
      if(couleur == 0){
        couleur = 1;
      }else{
        couleur = 0;
      }
      
      //line(indice * 10 , 0, indice * 10, 600);
      indice = indice + 1;
    }
    indiceY = indiceY + 1;
    
  }
  


  
  
}
//une forme se déplace dans la fenêtre. A chaque fois que le volume capté
//dépasse un seuil, cette forme change de direction

import processing.sound.*;
 
AudioIn entree;
Amplitude volume;

float posX;
float posY;

float vitesseX;
float vitesseY;

void setup(){
  size(600, 600);
  posX = 300;
  posY = 300;
  
  vitesseX = 0.5;
  vitesseY = 0.5;
  fill(255, 0, 0);
  
  entree = new AudioIn(this, 0);
  volume = new Amplitude(this);
 
  entree.start();
  volume.input(entree);
}

void draw(){
  background(255);
  
  
  
  
  ellipse(posX, posY, 100, 100);
  
  if(volume.analyze() > 0.05){
    vitesseX = random(-5, 5);
    vitesseY = random(-5, 5);
  }
  
  if(posX > 550 && vitesseX > 0){
    vitesseX = -vitesseX;
  }else if(posX < 50 && vitesseX < 0){
    vitesseX = -vitesseX;
  }
  if(posY > 550 && vitesseY > 0){
    vitesseY = -vitesseY;
  }else if(posY < 50 && vitesseY < 0){
    vitesseY = -vitesseY;
  }
  
  posX = posX + vitesseX;
  posY = posY + vitesseY;
  
  
  
}
//Énoncé pour la prochaine fois
//dessiner 200 carrés imbriqués les uns dans les autres, les carrés pairs ont une couleur différente des carrés impairs et lorsque l'on clique sur la fenêtre les couleurs s'inversent

Cours du 7 mars 2016

float position;
float cote;

int click;

void setup(){
  size(600,600);
  noStroke();
  click = 0;
}

void draw(){
  position=0;
  cote=600;
  
  while(position<300){
    if(cote%2==0 && click == 0){
      
        fill(255,0,0);
    }else if(cote%2==0 && click == 1){
      fill(0,0,255);
    
    }else if(cote%2==1 && click == 0){
        fill(0,0,255);
     }else{
        fill(255,0,0);
     }
      
      
    

    rect(position,position,cote,cote);
      position=position+1.5;
      cote=cote-3;
  }
}

void mousePressed(){
  if(click == 0){
    click = 1;
  }else{
    click = 0;
  }
}
import processing.sound.*;

AudioIn entree;
Amplitude volume;

void setup(){
  size(600, 600);
  
  entree = new AudioIn(this, 0);
  volume = new Amplitude(this);
  
  entree.start();
  volume.input(entree);
  
}


void draw(){
  print(volume.analyze());
  if(volume.analyze() > 0.01){
    background(255, 0, 0);
  }else{
    background(0, 255, 0);
  }
}

Cours du 14 mars 2016

PImage chaton;
float rotation;
int compteur;
void setup(){
  chaton = loadImage("chaton.png");
  size(600, 600, P3D);
  rotation = 0;
}

void draw(){
  compteur = 0;
  while(compteur < 1000){
    pushMatrix();
    translate(random(0, 600), random(0,600));
    rotateZ(rotation);
    image(chaton, -25, -50, 50, 100);
    
    popMatrix();
    compteur = compteur + 1;
    rotation = rotation + 0.1;
  }
  
}

Cours du 21 mars 2016

code1 (le chat)

code2 (les chats)

Cours du 18 avril 2016

import ddf.minim.*;
import ddf.minim.analysis.*;

Minim minim;
AudioInput in;
FFT fftIn;

float posX;
float posY;

void setup(){
  size(600, 600);
  
  posX = 300;
  posY = 300;
  minim = new Minim(this);
  
  in = minim.getLineIn();
  
  fftIn = new FFT(in.bufferSize(), in.sampleRate());
  
  
  fill(0);
  stroke(0);
}

void draw(){
  background(255);
  
  strokeWeight(2);
  
 
  
  
  

    fftIn.forward(in.mix);
  
    
    int nbreBandes = fftIn.specSize();
    
    int indice = 0;
    float valeur = 0;
    
    int maxFrequence = 0;
    
    while(indice < nbreBandes){
      if(fftIn.getBand(indice) > valeur){
        valeur = fftIn.getBand(indice);
        maxFrequence = indice;
      }
      indice = indice + 1;
    }
    
    
    if(maxFrequence > 0){
    
      float deplacementX = map(maxFrequence, 0, 60, -5, 5);
      
      float deplacementY = map(maxFrequence, 0, 60, -5, 5);
      
      line(posX, posY, posX + deplacementX, posY + deplacementY);
      
      
      
      posX = posX + deplacementX;
      posY = posY + deplacementY;
    
    }
    
    
    
  
}

Etudiants

Albator

Capitaine Al

coraliedb

Steve Jobs

Mister Pickles

TangoDelta

Fred

D4rkw3bM4st3r69

Bakuuto!

MonsieurBurns

Drunk Rick

flop!

hoel

Obi-Wanoé