Anatomy of a Generative Artwork #1
In each article/tutorial in the 'Anatomy of a Generative Artwork' series I'm going to dissect one specific generative artwork. Please note that the artworks/graphs are interactive, just click on them to modify them (and create your own artworks) or to download the artworks in high resolution.
Final Result

In the next sections we're going to rebuild this artwork step by step.
Step 1: Voronoi
We start out from a relatively simple voronoi pattern. It's one of the classic elements very often seen in generative art. Here we are using the triangular type instead of the more common euclidean type, that's where the artwork gets its 'blocky' look from.

Step 2: FBM
Next we add one of the main ingredients: FBM ('Fractal Brownian Motion'). It sounds very fancy but what it does is actually quite simple:
It takes our initial voronoi artwork and just makes a copy of it (like a layer in photoshop) and scales it down (= zooms out) by factor two.
That's done several times. So in our case we end up with five copies of the artwork with varying sizes.
As a final step we simply blend those five copies together. This can be done in many ways, in our artwork we take the minimum value of all copies. In Photoshop that would be called the "Darken" mode.
I like the FBM technique because it often adds depth to an artwork's composition. It does so by adding features of varying sizes (that's why it's called 'fractal') leading to balanced overall composition.
Have a look at this nice article by Inigo Quilez for a more theoretical discussion of the FBM technique.
As you see, with this, we're already coming quite close to our final artwork. (Side note: I have also added a histogram equalization node, it doesn't make a huge difference but somewhat enhances contrasts.)

Step 3: Rotate
Next we rotate the whole artwork. That's just a matter of taste, someone else might prefer to keep the artwork as is.

Step 4: Color Dimension Split
So far our artwork looks nice, but the coloring is quite bland. One way to change that is by adding the 'Color Dimension Split' node. This node has three inputs and it works as follows:
For each dimension in the color space a different input is used. (When the artwork graph is evaluated it takes a 'different route' for each dimension in the color space.)
So for example: If an artwork uses the RGB color space, then one of the node inputs is used for determining the red parts of the artwork, another one for the green color and the third one for blue color.
Our artwork uses the HSL (hue/saturation/lightness) color model. (This can be changed in the 'Color Editor'.)
So let's see how we make use of that node in our artwork.
Step 4.1: PCG Noise (applied to 'Lightness' channel)
First we add some noise (on top of the input we get from the 'Voronoise' node). I use noise in most of my artworks as I don't like my artworks being 'too clean'. A bit of noisy grain gives them - at least in my opinion - a more analog/natural/organic feel. In our artwork we add the noise node to the 'Lightness' input.

Step 4.2: Cosine (applied to 'Hue' channel)
Next we add a 'Cosine' node to the 2nd input (which in our artwork is used for 'Hue'). That means we're passing the image we get from our 'Voronoi' node through a cosine function. This makes hue and lightness of the artwork a bit more independent from each other. It's only a subtle effect but still makes the color range of the artwork a bit more interesting.

Step 4.3: Simplex Noise (applied to 'Saturation' channel)
As a final step let's bring in some more depth into the color palette. We do that by feeding some noise into the 3rd input of our 'Color Dimension Split' node (that input is used for 'Saturation' in our artwork). The effect of that: Some parts become highly saturated (= strong intense colors) and others have low saturation (= colorless/grey). We use a low-frequency simplex noise in order to have a smooth transition between saturated and unsaturated parts of the artwork.
And with that we arrive at our final result:

Final Thoughts
Reading this tutorial might leave you with the impression that I have designed every aspect of this artwork very intentionally and that this requires quite some expert-level knowledge. While such an intentional approach is certainly possible, the truth is: More often than not I stumble upon artworks by chance and through experimentation. For that I often use the randomization features present in the 'Graph Editor' or create random mutations/variations in the 'Modify' tab. Of course the experimental and intentional approaches can also be combined: I often use the graph editor to trim down or fine tune an artwork that I discovered by chance. It's also interesting to look at a graph in order to understand why an artwork 'works'. Each artwork provides an opportunity to discover new techniques that you can then also reuse in your future artworks.
If you're interested in more articles like this one, follow me on any of the online channels to be notified about new articles.