Harmony: A Generative Art Project

March 07, 2017

Harmony, a generative art project to explore the idea that order emerges from chaos

I have been fascinated with this simple concept – sometimes order can emerge from seemingly chaotic situations. An example is a bright idea forming in our mind from a mish-mash of random thoughts. I even made a small painting about this idea. But I wanted to do more. Then, by chance, I came across this book The Storm of Creativity by Kyna Leski. The author explores this idea that creativity is like a storm. It can start from a small atmospheric fluctuation. And she uses these pencil scribbles to represent a storm’s eye view. At around the same time, I came across the concept of Perlin noise and how it can be used to create mesmerizing patterns using particle systems. I made a series of drawings in Processing using Perlin noise to explore the idea of order emerging from chaos. I call this project Harmony. This blog post summarizes the idea and its implementation in Processing.

Perlin noise

Noise typically means a random fluctuation in some quantity. For example, one can divide a square in hundred smaller squares and assign a random color to each of the smaller squares. The image then, as on the left side below, will look like noise. However, one can apply some sort of smoothing these colors so that they gradually change from one location to another, like in the right image below. The idea behind Perlin noise is to create a noise such that it various smoothly, rather than abruptly.


Now imagine a collection of points. Initially are spread randomly in a square. Then we assign a velocity to each point using a Perlin noise function. Since the velocity is of Perlin type, two adjacent points will move in a similar direction, with a small fluctuation. Such a velocity distribution is shows below.


Under such a velocity field, the points will move in a harmony, but still with a certain randomness.


That’s really the basic idea behind this project. I wrote a couple of Processing scripts to create points in various locations and with various velocity functions, traced their trajectories for some time, and took snapshots at the end. Finally, I edited the snapshots in Photoshop. A slideshow of the images is available online.




And, some posters and a book …