More selected projects

What is Generative Art? (PFA1 End Term Project)

An enquiry about what generative is all about, told (without knowing) by the artists that are shaping it.

produced by: Valerio Viperino


The starting point for this project was the idea of creating a generative artwork that spoke about generative art.

The intent was to draw from the same words that contemporary generative and new media artists (like Zach Lieberman, Casey Reas, Golan Levin..) use to describe their artworlks, recovering them from the lost folds of the internet (bio pages, pdfs, tweets..) and using them as a structure for a new piece that virtually looks at himself, since it speaks through and about generative art.

It slowly developed from a strictly poster-like typographic idea to a more organic and random one, shaped by the emergent behaviour of boids flocking over a flow field, and by their tendency to spend more time into the given words than outside them.

A simple algorithm analyses 15 texts written by contemporary generative artists, creates a sorted lists of the most used words and then feeds them into a boid simulation.

Concept and background research

The main ispiration behind this work is represented by the V0ID series created by Andreas Nicholas Fischer and the dazzling typography examples illustrated in the Generative Gestalung book. The current artwork can be considered a child born from their encounter.

Before getting to the final process of generating the words into the 2d canvas, many approaches were explored.

The first one was to have all the words adjacent one to the other and of the same size, as shown in the below picture:

This approach was giving the same conceptual weight to every word but at the same time was obfuscating each one, making them hard to distinguish and recognize individually.

The color was stratified in a additive blend mode.

I then started to play with variations in color and scale of each word, trying to find the best balance for right size and overall order of the composition. I coded vertical versions of it using 3 different word arrangements. The one which resonated the most with the intended aesthetics was the one were the scale of each word was randomly picked.

This gave also to each iteration of the process a different outlook, making every image unique while at the same time driven by the same words.

In the first gallery below, you can see the 3 variations.

In the last gallery, some other variations on color and blending modes.


  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image

I initially tought about using twitter feeds, but due to both the technical limitations of the twitter api (without paying fees you can just grab tweets from the last week) and the little variety of the tweets found talking about generative art, I decided that the best approach would be to analyse the artworks and bio pages of differents artists.

This was done using wget to simply download the required data and save it to different text files. Due to short timing, the data was hand cleaned from the html tags but a regex could have done the same job.

The downloaded data was then processes through a simple python script, which filtered common stop words such as prepositions and conjunctions and returned a json array of hash tables containing the score (number of appearances) of each word.

This array was then used as input by the openframeworks app in order to draw an fbo composed of all the words with a score greater that 2. This "typography" fbo draws white (words) on black (bg) and is then used to influence the boids in a very simple way: the black pixels should be the one feared by the boids, in one of the typical steering behaviours described by Craig Reynolds. As consequence, the boids have a tendency to spend more time inside of the letters, then quickly exiting and searching for another letter. This emergent behaviour is responsible of all the fine detailed scribbling from one word to another.

For more technical details on the implementation looking at the repository on github would give a much broader overview.


Craig Reynolds, Boids simulations:

Generative Gestalung, About

Daniel Shiffman, The Nature of Code

Andreas Nicholas Fischer, V0ID series (an excerpt here : )