Ode to Untitled

Art Blocks Factory
Monday, September 19th
12 pm CDT

Mainnet Project Site: Ode to Untitled
Goerli Test Site: Ode to Untitled (Test Mints)

240 mints @ .12 ETH


This project is "Untitled".

However, rather than leaving it at that, I decided it would be better served as an ode to all the "Untitled" artworks. After all, many of the abstract artists that inspired me to create visual art used the name "Untitled" for some or all of their works. Obviously, "Ode to Untitled" is also a nod to my original Art Blocks release, "Ode to Roy". Here though, instead of paying respect to an artist and their iconic style, the homage is to an idea - the idea that a work of art doesn't have to have a title.

Visual art didn't always have titles; it was an idea that developed over time as the world changed and art markets developed. We may know historic works by a title today, but often these were created over time as an agreed upon way to refer to the art, not set in stone by the artist. Sure enough, as titles did become the norm, some new artists started to eschew the idea, especially as abstract art came into existence. Since we were accusomted to seeing a title, some piece of text needed to be there, not just a blank space. "Untitled" often became the default in these situations.

"Ode to Untitled" is a pure abstraction, allowing me to explore the abstract art concepts I've been most attracted to: color, shape, texture, and minimalism. It also uses classic generative art concepts, arranging patterns in a square grid consisting of smaller squares. Being a generative collection, different elements will appear in different mints. We see the minimalism in Test Mints #23 and #64. We see vibrant color in almost every mint, but see a drastic mixing of colors in Test Mints #92 and #93, while larger fields of color come through on Test Mints #40 and #63. Texture is also present in all the mints, as each of the six patterns used provides their own texture, but is readily apparent in Test Mints #18, #32, #54, #64, and #83. And while this is also an homage to the square, we can see new shapes develop as the squares and patterns interact across the canvas.

Ode to Untitled #0
Ode to Untitled #0

Ode to Untitled (Test Mint) #0
Ode to Untitled (Test Mint) #0


Each output of the collection begins by determining the basic features: Size, Background, Flow, Section Count, Mix, and Border. Based on the Section Count value an individual Palette and Distribution value will be chosen, or if the Section Count is greater than one, then multiple values will be selected corresponding to each section. You can view the Features section below to see a breakdown of each feature.

While Size, Palette, and Flow can make big differences in the final output, Mix and Distribution end up having the largest effect in the overall aesthetic of a mint. There are six different types of patterns defined in "Ode to Untitled" and the Mix feature will determine how many of these patterns are possible for each output. All six patterns may be used, or only two (or just one in a single case), or any amount between. Different Mix values can provide for largely different feels. You can compare the mostly smooth look of Test Mint #40 (Mix value 36) vs the roughness of Test Mint #18 (Mix value 19).

Once the patterns are selected by the Mix value, the next step is to randomly arrange all the possible patterns. Each pattern type consists of multiple color (and in the cases of Hash and Noise orientation) options and a larger collection of patterns is now created and randomly arranged. If we had a Mix value of 14, as in Test Mint #7, the initial pattern selection would consist of Fills, Checks, and Hashes. You can read all the details of each Pattern below, but Fills have a total of five possible color options, Checks have five possible options, and Hashes have four. This gives a total of 14 possible patterns to select from. In order to make each output as unique as possible, these patterns are randomly arranged, which becomes important due to how the pattern selection logic behaves.

From here, each of the patterns, 14 in our example, is also assigned a percentange range. Essentially just values between 0 and 1, but maybe easier to think of as percentage values between 0 and 100. These ranges are also randomly determined for each output, so that some patterns can be given much larger ranges than others, allowing them to potentially show up more in the final mint. So, pattern 1 could have a range from 0 to 3, pattern 2 from 3 to 8, pattern 3 from 8 to 18, and so on until all the patterns and percentages are filled.

Now we begin to draw the patterns on the canvas, but we need to know which pattern to draw in each position. The Flow feature will determine what order we move through our grid, whether Horizontal or Vertical (and snaking or not), and the Distribution feature will help determine which pattern should be displayed. Different Distribution values allow us to see longer continous strings of the same pattern repeating, as in Mainnet Mint #0 (Distribution value 3), or patterns changing more frequently, as in Test Mint #57 (Distribution value 10). To make this work, Perlin noise is used to generate a random, but more natural, value between 0 and 1. This value is then compared to our percentage ranges for each pattern to determine which pattern is drawn.

When working with Perlin noise, an argument is needed to generate the value between 0 and 1. To provide the more natural flow of random values (and not an equal distribution of value as a typical random function would), we increment this argument value slowly. The more slowly we increment this value, the less change we get between subsequent calls to the function and the more likely we are to stay in our percentage range and draw the same pattern again. As we choose larger values to increment by, the more likely we are to change to a new pattern. Of course, the number of patterns and the percentage ranges assigned to each pattern option will have an effect on how often we are moving between patterns and which ones, as well.

One last aspect of working with Perlin noise is the values returned will be in a similar range to the previous values returned; there generally aren't large leaps (unless you increment by a very large number). This means the random organizing of the patterns for a mint will allow for different patterns to show up next to each other. As we move from one percentage range to the next, we will generally move to the next pattern in the order. Since the Perlin noise values can increase or decrease, we may move back and forth between a couple patterns as the values move back and forth betweent their percentages. If you look closely, you can see the patterns move in one direction and then back down in the other direction.

Ode to Untitled (Test Mint) #7
Ode to Untitled (Test Mint) #7

Ode to Untitled (Test Mint) #9
Ode to Untitled (Test Mint) #9



Ode to Untitled Fill Pattern

The most straightforward pattern, Fill, simply fills the square with one solid color. There are five possible Fills when selected for an output: the four colors of the palette and also the background color. You can see the Fill pattern with three different colors in Test Mint #63 and four different colors in Test Mint #57.


Ode to Untitled Fill Pattern

The Check pattern creates a checkerboard of two colors, alternating between the selected color and the background color. There are five possible colors to pair with the background color: the four colors of the palette and black. As the feature Size of each output changes, the size of the checks will change as well. You can see the Check pattern featured prominently in Mainnet Mint #0.


Ode to Untitled Static Pattern

The square is broken down into a grid of its own, made up of smaller squares, similar to how the Check pattern breaks down into a grid. But instead of alternating between two colors, a random color, from the possible options, is selected each time. There are seven possible color options to choose from if the Static pattern is selected for an output:

  • The first chooses a random rgb value for each square, making a mixture of new random colors each time (although they all tend to take on the same look).
  • Similar to the first, but intsead of random rgb values, the selection is from random graysacle values.
  • The third chooses randomly from the four colors of the current palette, which we see in the above example.
  • The remaining four options are also based on each of the four colors of the palette, but now one color is used at a time and the static is created by randomly selecting shades of that color. How many shades are possible in the static can vary from mint to mint, allowing for lighter or darker options.

As the feature Size of each output changes, the size of the smaller squares making up the static will change, as well. You can see the Static pattern, in multiple color variations, throughout Test Mint #45.


Ode to Untitled Hash Pattern

Five diagonal lines at 45 degrees cutting across the square. The diagonal lines can run in one of two directions and will be consistent throughout each output. There are four possible color options based on the four colors of the current palette. The Hash pattern in a single color can be seen making up a majority of Test Mint #23, while multiple colors of the Hash pattern are seen throughout Test Mint #40.


Ode to Untitled Noise Pattern

The Noise pattern is similar to the static pattern in that it breaks down the square into a grid of its own. This time, though, instead of randomly selecting colors, Perlin noise is used to iterate through colors in a more natural way, giving it a distinct pattern and feel you'll notice throughout the mints. The direction of the grid can run in one of two ways, horizontal or vertical, and can change for individual Noise patterns within the same output. The closeup view in the example above is a little deceiving in how it will be seen in part of the larger output. As with the other grids in a grid (Check and Static), the size of this grid will change in relation to the feature Size of the mint.

For each output where Noise patterns are selected, there will be four possible Noise patterns to choose from. The color options for these four patterns can vary between each output. All are based on the four colors of the palette, but the alternate color used to create the varying shades can differ. In some cases, it will be one of the other three remaining colors of the palette. In others, it will be a grayscale value which can range from almost black, to mostly white, which will be randomly selected for each pattern. One last twist is that for some of the outputs, each Noise pattern will choose a separate alternate color; while in others, they will all share the same alternate color. There ends up being a large variety of possible combinations and shades of colors seen in the different nosie patterns across mints. The Noise pattern can be seen in many colors and orientations in Test Mint #99.


Ode to Untitled Speckle Pattern

The Speckle pattern creates a random speckling of small dots across the Square. The number and size of dots will change relative to the Feature size. Four patterns are possible for an output where Speckle is chosen, based on the four colors of the current palette. The Speckle pattern makes up one of two patterns seen in Test Mint #64, and is found in multiple colors throughout Test Mint #57 (contrasting nicely with the Fill patterns).

Ode to Untitled (Test Mint) #13
Ode to Untitled (Test Mint) #13

Ode to Untitled (Test Mint) #18
Ode to Untitled (Test Mint) #18

Ode to Untitled (Test Mint) #23
Ode to Untitled (Test Mint) #23

Ode to Untitled (Test Mint) #32
Ode to Untitled (Test Mint) #32

Ode to Untitled (Test Mint) #40
Ode to Untitled (Test Mint) #40



The Size feature determines the size of the squares making up the grid. There are 17 possible sizes to choose from for each output ranging from incredibly small to quite large. When viewing the counts below, realize that if a border is present, some of the rows and columns will be removed.

Size Row/Column Count Total Squares
7XS 400 160,000
6XS 300 90,000
5XS 240 57,600
4XS 150 22,500
3XS 120 14,400
2XS 75 5,625
XS 60 3,600
S 48 2,304
M 40 1,600
L 30 900
XL 24 576
2XL 20 400
3XL 15 225
4XL 12 144
5XL 10 100
6XL 8 64
7XL 6 36


The Background feature selects from one of four colors to use as the background of the output. The background can be seen if a border is present, sometimes with the Fill pattern (creating what looks like an empty square), in the Hash pattern, the Check pattern, and the Speckle pattern. It is possible that if the right combination of patterns were selected, we may not see the background color at all. The four color options are white, off-white, tan, and gray.


The Flow feature determines what direction the grid is constructed in. There are four options: Horizontal, Vertical, Horizontal Snake, and Vertical Snake. Horizontal and Vertical are easy to spot, but the Snake patterns provide a slight twist on the flow of squares being drawn. When one row (or column) is finished being drawn, instead of moving back to the beginning of the next row, it will start right next to the current row at the end. When it then gets to the beginning of that row, the next will start next to it at the beginning of it. In essence, it snakes its way back and forth across the canvas, instead of always moving back to the beginning of the next row every time.


There are 31 palettes to choose from, each consisting of four colors. In some mints, the Palette value will show as 0, which means multiple palettes are used throughout the output. This happens when the Section Count feature is greater than one. The four colors of a palette are used as the basis of color options for each pattern. Some palettes from "Ode to Roy" (or portions of the palette) have been used and are marked accordingly below.

Palette Color A Color B Color C Color D Roy Palette
2 X
5 X
7 X
8 X
9 X
10 X
11 X
12 X
13 X
14 X
15 X
16 X
17 X
18 X
19 X
20 X
21 X

Section Count

The Section Count value will often be 1, providing for the same Palette and Distribution value consistently throughout the output. In some cases though, it can be higher. In these situations, random points will be selected that determine when a new section will begin. Each new section will select a new Palette and Distribution value. The values will never match the very last ones used, but could be reused later in the output.

The possible values are: 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 15, 21, 25.


The Distribution feature determines how quickly we are likely to change from one pattern to the next when drawing the individual squares of the mint. The random percentages assigned to each pattern will also have some influence on how often we change patterns, but the percentage and Distribution together work together to give each mint its own sequence. Lower values make it more likely that patterns will stay the same for long sections, while higher values make it more likely for patterns to change regularly, with the highest values making it so you could see a new pattern almost every square (creating what looks like an equally distributed random selection). Technically, what is happening here: the value used for incrementing the Perlin noise argument is changed. Low values will increment by very small amounts (decimal values in the thousandths) while the high values increment by much higher values. The possible Distribution values range from 1 to 12. Like with Palette values, 0 is assigned when the Section Count is greater than one, which will use a new Distribution value in each section.


The Mix feature determines what patterns will be possible in a given mint. There are six categories of patterns, and each Mix value provides for a different selection of patterns. Although a pattern may be selected based on the Mix value, it is possible based on the Distribution value and percentages selected for each individual pattern, that not all patterns will be output. When a pattern is selected based on the Mix value, all the color options described in the above Patterns section will be possible as individual patterns to be chosen from, with one exception. Mix value 2 can include all the patterns, but will only select 2 of the possible options of each pattern to be used in the output. Generally, the lower Mix values will include more patterns, while the higher values involve less. There are 48 possible Mix values.

Mix Fill Check Static Hash Noise Speckle
1 X X X X X X
2 X X X X X X
3 X X X X X
4 X X X X X
5 X X X X X
6 X X X X
7 X X X X
8 X X X X
9 X X X X
10 X X X X
11 X X X
12 X X X X
13 X X X
14 X X X
15 X X X
16 X X X
17 X X X
18 X X X
19 X X X
20 X X X
21 X X X
22 X X X
23 X X X
24 X X X
25 X X X
26 X X X
27 X X X
28 X X X
29 X X X
30 X X X
31 X X X
32 X X X
33 X X
34 X X
35 X X
36 X X
37 X X
38 X X
39 X X
40 X X
41 X X
42 X X
43 X X
44 X X
45 X X
46 X X
47 X X
48 X


The Border feature is a boolean true/false value simply determining whether there is a border present or not. Border colors are based on the background color and can vary in size. Borders are more likely to be seen with smaller Size values.

Ode to Untitled (Test Mint) #45
Ode to Untitled (Test Mint) #45

Ode to Untitled (Test Mint) #54
Ode to Untitled (Test Mint) #54

Ode to Untitled (Test Mint) #57
Ode to Untitled (Test Mint) #57

Ode to Untitled (Test Mint) #63
Ode to Untitled (Test Mint) #63

Ode to Untitled (Test Mint) #64
Ode to Untitled (Test Mint) #64

Ode to Untitled (Test Mint) #69
Ode to Untitled (Test Mint) #69

Ode to Untitled (Test Mint) #75
Ode to Untitled (Test Mint) #75

Ode to Untitled (Test Mint) #83
Ode to Untitled (Test Mint) #83

Ode to Untitled (Test Mint) #91
Ode to Untitled (Test Mint) #91

Ode to Untitled (Test Mint) #92
Ode to Untitled (Test Mint) #92

Ode to Untitled (Test Mint) #99
Ode to Untitled (Test Mint) #99