🔍

aleatoric drawing with my AI


// ---------------------------------

void setup(){
  size(512,512);
  noiseDetail(2, 0.02);
  drawNoiseMap();
}


// ---------------------------------

void drawNoiseMap(){

    for(int x=0;x<512;x++){
      for(int y=0;y<512;y++){
        
        float n = noise( x *.014,y*.014 );
        n+= random(-10,10)*.004;
        
        stroke(n*188);
        point(x,y);
    
      }
    
    }

}

// ---------------------------------

void draw(){
  
  int px = mouseX;
  int py = mouseY;
  
  
   stroke(255,66);
   
   if(mousePressed){
   for(int i=0;i<51;i++){
     
     float ra = random(TWO_PI);
     float rr = random(1,33);
     
     int rx = int( sin(ra)*rr  ) + px;
     int ry = int( cos(ra)*rr  ) + py;
     point( rx, ry  );
     
   }
   }
  

}

// ---------------------------------

void keyPressed(){

    if(keyCode==32){
    
      saveFrame("out/###_noisefield.png");
    
    }



}

static noise maps as aleatoric starting point


Coming from those simple overpainted noisemaps, we use this visual information as a statring point for an img2img backward diffusion with Stable Diffusion.

The setup is a simple prompt direction like: human body skin detail zoom skin realistic, implant silicone, studio photography ( –neg: noise, face, background ) with a strong CFG of 13.5 and DENOISE of .8

animated noise maps as aleatoric input feed

As we can „walk“ through a perlin noise map through the third dimension, it seems pretty obvious to use this output to generate an animation based on this frame based input. The training data bias becomes very obvious in this setup, as there is mainly naked female body detail shown despite proper negative prompting: human androgyn body skin realistic, curvy fat beautiful, detail zoomed zoo, glossy wet, implant silicone, studio photography, diffuse lightning ( –neg noise, face, female abdomen,background, drops, ugly, face, hand, feet, genitals, label logo watermark, reflection highlights)



// ---------------------------------

void setup(){
  size(512,512);
  frameRate(12); // set to framerate 12 to make the output more slim
}


// ---------------------------------

void drawNoiseMap(){

    for(int x=0;x<512;x++){
      for(int y=0;y<512;y++){
        
        // create a noise val
        float n = noise( x *.003,y*.003, millis()*.0001 );
        
        // ossciallate this value for more "contrast"
        n += (sin(n*33.)+1)*.05;
        
        // add some random noise too
        n+= random(-10,10)*.004;
        
        stroke(n*255);
        point(x,y);
    
      }
    
    }

}

// ---------------------------------

void draw(){
  
  drawNoiseMap();
  saveFrame("mov/_#####_frame.png");
    
}

// ---------------------------------