Spirales

Visuels Génératifs

 


float r=0;
float rand=0;

void setup(){
size(1680,945);
background(0);
smooth();
noStroke();

}

void draw(){

translate(250,150);
rand= random(100);

if (rand<35){
fill(200,random(40,80));
} else {

fill(255,random(90,150));
}

rotate(r);
float circle_size = random(17,25);
ellipse(r+0.1,10,circle_size, circle_size);
r = r+0.021;

}

void keyPressed(){
save("####.png");
println("Image sauvegardée");
}

&nbsp;

Publicités

Noisy Works

Visuels Génératifs

Those visuals are based on experiments with perlin noise and polar coordinates with processing , you’ll need to add your own font to make it work.


float edgeX, edgeY;
float radius =325;
float noiseF;
int startTime ;

PFont title, seed, time;
void setup() {
size(700, 700);

smooth();

colorMode(HSB, 255, 100, 100, 100);
//textMode(CENTER);

title = createFont("Candara-Bold-16.vlw", 18);
seed = createFont("Consolas-16.vlw", 12);
time = createFont("Corbel-16.vlw", 12);
textAlign(CENTER, CENTER);
//textFont(seed);
generate();
}

void draw() {
if (mousePressed) {
startTime = millis();
noiseF = random(5000);
println("noiseSeed : " + noiseF);
generate();
}
}

void generate() {
background(255);
translate(width/2, height/2);
for (int j = 0 ; j < 320 ; j ++ ) {
stroke(0, 255);
noFill();
beginShape();
for (float i = 0 ; i <= TWO_PI + PI/24 ; i += PI/24) {
randomSeed(floor(i*100*noiseF));
edgeX = (radius-j + map(noise(noiseF, i, 20), 0, 1, -150, 150)) * cos (i);
edgeY = (radius-j + map(noise(noiseF, 25, i), 0, 1, -150, 150)) * sin (i);
curveVertex(edgeX, edgeY);
noiseF += 0.00005;
}
endShape(CLOSE);
}
noStroke();
fill(0, 210);
ellipse(0/2, 0/2, 190, 190);
fill(map(noiseF, 0, 5000, 0, 255), 100, 100);
ellipse(0/2, 0/2, 170, 170);
fill(255);
ellipse(0/2, 0/2, 8, 8);
fill(255, 0, 100);
String s ="-- Noisy Works --";
String s1 = " seed :"+noiseF;
int endTime = millis();
int gentime = endTime - startTime;
println(gentime);
textFont(title);
text(s, 0, -35);
textFont(seed);
text(s1, 0, 15);
textFont(seed);
String s2 = " gen. time : 0."+gentime+" s";
text(s2, 0, 30);
}
void keyPressed() {
if (key == 's' || key == 'S') {
saveFrame("lps-"+year()+"-"+month()+"-"+day()+"-"+hour()+"h"+minute()+"m"+second()+"s.png");
}
}



 

Snowflakes

Visuels Génératifs

 

The code is based on a l-system implementation (http://en.wikipedia.org/wiki/L-system), here is the Processing code to generate the bigger ones, you can press the right arrow to generate a new one, any other key will save the image :


int maxLevel =10;
int numChildren =1;
float angle = PI/4;

Branch trunk;

void keyPressed() {
if (key == CODED && keyCode == RIGHT) {
maxLevel = int(random(5, 25));
angle = PI/(int(random(1, 15))*2);
newTree();
trunk.siz = random(50, 500);
} else {
saveFrame("snowFlake-######.png");
}
}

void setup() {
size(1280, 766);
noFill();
smooth();
newTree();
background(0);
stroke(255);
}

void newTree() {
pushMatrix();
translate(width/2, height/2);
trunk = new Branch(1, 0, 0, 0);
trunk.drawMe();
popMatrix();
}

void draw() {
noStroke();
fill(0, 150);
rect(0, 0, width, height);
//background(0);

stroke(255);
pushMatrix();
translate(width/2, height/2);
trunk.updateMe(0, 0);
trunk.drawMe();
popMatrix();
}

class Branch {
float level, index;
float x, y;
float endx, endy;
float noiseF2;

float siz =100;

Branch[] children = new Branch[0]; //

Branch (float lev, float ind, float ex, float wy) {
level =lev;
index =ind;
updateMe(ex, wy);

if (level<maxLevel) { // avoid infinite loop
children = new Branch[numChildren];
for (int i = 0; i<numChildren;i++) {
children[i] = new Branch(level+1, i, endx, endy);
}
}
}

void updateMe(float ex, float wy) {
x =ex;
y =wy;

float newsiz =map (maxLevel-level, 0, maxLevel, 1, siz);
endx = x;
endy = y-newsiz/3;
//siz -=10;

for (int i =0; i<children.length; i++) {
children[i].updateMe(endx, endy);
}
}

void drawMe() {
//siz-=1;
float newsiz =map (maxLevel-level+1, 0, maxLevel, 2, siz);
for (float i = 0 ; i < TWO_PI ; i+=angle) {
rotate(i);
strokeWeight(map(maxLevel-level+1, 0, maxLevel, 0.005, 0.5));
pushMatrix();
beginShape();
vertex(x-newsiz, y);
vertex(x, y+newsiz*2/3);
vertex(x+newsiz, y);
vertex(x, y+newsiz*1/3);
vertex(x-newsiz, y);
endShape();
popMatrix();
}

for (int i = 0 ; i<children.length;i++) {
//children[i].updateMe();
children[i].drawMe();
}
}
}

					

[2014] Journées du code créatif : Processing

Evénementiel

J’ai eu pour la deuxième fois  l’opportunité d’organiser et de programmer en collaboration avec Stereolux les journées du code créatif dédiées cette année à Processing.

http://processing.org/

Comme l’édition précédente c’était l’occasion de découvrir Processing autour de deux journées émaillées de conférences, de performances, projections vidéos et workshop, le tout ponctué d’un apéro codelab en point d’orgue avec l’ensemble des participants.

 

<div style= »margin-bottom:5px »> <strong> <a href= »https://fr.slideshare.net/stereolux/processing-depliant-web &raquo; title= »PROCESSING[ART] : 2 jours d'expérimentations graphiques et multimédia » target= »_blank »>PROCESSING[ART] : 2 jours d'expérimentations graphiques et multimédia</a> </strong> from <strong><a href= »http://www.slideshare.net/stereolux &raquo; target= »_blank »>stereolux</a></strong> </div>

[2013] Carte Postale Sonore pour Electroni-k

Publications de logiciels, Réalisations Artistiques

Participation au programme de cartes postales sonore soutenu par Electroni-[k]

http://www.electroni-k.org/actualite/carte-postale-sonore-13-campus-villejean-de-l-universite-rennes-2-par-beranger-recoules.html

Capture

 

 

L’application est disponible en temps réel sur le site du projet « Metroples Electroni-[k] » :

http://www.metropole-electronik.fr/

http://creation13.metropole-electronik.fr/

 

Le code est disponible à cette adresse : https://github.com/b2renger/CarteSonoreInteractive_metropole_electronik

[2013] Neurokiff

Réalisations Artistiques

Après mes premières expériences en 2012 avec les casques EEG :

http://www.stereolux.org/projet-neurokiff

https://berengerrecoules.wordpress.com/2013/05/30/2012-journees-interfaces-neuronales/

En 2013, j’ai continué à travailler sur le projet neurokiff dans le cadre de la visualisation de données, ce projet était soutenu par Stereolux et l’Université de Nantes. La mission a consisté en la création de différentes interfaces de visualisation de données extraites depuis les casques EEG. L’idée était de construire une plateforme permettant de centraliser les enregistrements d’une communauté d’utilisateurs, leur permettant ainsi de comparer leur enregistrement sur un stimulus précis : l’écoute d’un montage de musiques diverses.

 

Le projet construit autour de la collaboration entre différents groupe d’étudiants et s’étalant sur une longue période à longtemps changé de contours et d’objectifs.

Finalement le projet s’est arreté dans une phase intermédiaire avec des prototypes de visualisation fonctionnels, il manque cependant toute la partie d’aggrégation des données en amont.

Le travail de data mining effectué par Lukas Toma et Grigory Antipov, est basé sur des algorithmes génétiques. Le signal de donnés est samplé, segmenté puis convertit en chaines de caractères, ces chaînes de caractères peuvent être ensuite comparés avec des algorithmes de recherche d’hérédité.
Le premier programme est une  visualisation à base de cercles co-centriques, intéressante pour comparer deux jeux de données à l’échelle communautaire (mais qui a peu d’intérêt à l’échelle individuelle).

 

Le deuxième programme permet de comparer les enregistrements de deux individus, avec notament une échelle de temps et de références aux différents extraits musicaux; ce programme expose aussi les réponses des participants  à un questionnaire formel:

 

Le troisième programme est visualisation en carte 2D dirigée autour de l’utilisateur, elle permet de trouver la personne la plus proche de nous en terme de réponse au stimulus. Cette visualisation était dans sa première version dirigé par un set de donnée bien particulier issu d’algorithmes de recherche de parenté phylogénétique, et prenait donc une forme bien particulière du fait de la structure des données en retour.  Au dernier moment ces processus de fouilles de données ont été remplacés par de vulgaires moyennages, changeant complétement l’aspect graphique de l’application.

 

Quelques exemples de screens provenant des premiers prototypes (avec les bonnes données)

neurokiff_map

 

 

 

image (1)

 

image

 

 

La cellule i-réalité a developpé le projet dans d’autres directions, en lieu et place de la finalisation de celui-ci …

http://www.univ-nantes.fr/1399991361784/0/fiche___actualite/&RH=INSTITUTIONNEL_FR

http://neurokiff.com/