Seed Talk #1: "mono no aware" #82
As I'm starting to go through the mints for "mono no aware" I'd like to do some deeper dives on some of the seeds. I've been making a list of the ones that have some interesting emergent behaviors or that showcase some of the traits, and will be talking about what makes them tick and my thoughts on them.
Even as the creator of this algorithm, there are many things in the mints I haven't seen before. The "mono no aware" algorithm explores a pretty large parameter space for colors and how they're painted, while keeping the underlying rules of the automata pretty much static between all the mints.
When making math art, I like holding the mathematical structure of an output fixed and trying many different variations on coloring or rendering it. I feel like that gives you many different perspectives on the underlying system and how it's put together that helps you to understand better than just seeing one perspective. "mono no aware" is really many different views of the same automaton, with slightly different starting conditions.
This mint, "mono no aware" #82, exemplifies a few characteristics I was hoping to see in the set, so I'll start with this one. I also picked this mint up for myself on secondary (OS) after launch, so full disclosure -- this is one I own. After spending so much time working on this piece, it's nice to collect one that really represents (for me) the potential of the set.
So, without further ado -- let's dive in to "mono no aware" #82!
"mono no aware" #82 -- by the numbers
fade rate: fast
seed name: orthogonal
burst of growth: on
burst start: 646
burst cycle length: 690
The first ~minute of "mono no aware" #82, the initial phase
The Initial Phase
Every mint of "mono no aware" comes with an "Initial Phase" for roughly the first minute, where initial conditions and symmetry are still clearly visible. Colors and shapes may behave a little differently during this time -- not because they are coded to, but because the longer-term behavior of the system hasn't emerged yet.
You can think of the starting conditions like a stone, and the canvas for "mono no aware" like a swimming pool. Starting the animation is like throwing in the stone. At first, it's easy to see where it was tossed, to see the cause and effect, and the waves rippling out from a single location. But as a few minutes pass, the waves start to interfere with one another and take on a new, more distributed character -- one more driven by the shape and symmetry of the swimming pool, chaos, and the rules for how waves travel in water.
The initial phase is the time right after the stone has been thrown in, and you can still see the ripples. And, this phase for "mono no aware" #82 is fantastic. More on that below.
The "orthogonal" seed
The "orthogonal" seed is actually a fairly large family of related starting conditions, where an assortment of vertical and horizontal lines of living cells are added to start the animation. Which ones are added is dependent on the token hash for each mint of "mono no aware." Keep an eye out for the variations of orthogonals you see in the list of mints!
The "orthogonal" seed chosen for #82 is somewhat small, and out near the edges. For some of those smaller orthogonals, because they have symmetry (symmetry causes die-outs more frequently, since if one section is unlucky enough to die out, all the symmetrical ones do, too) but not many living cells, they're prone to "dying out" and triggering the animation to restart. I wanted these short-lived cases in the set as a whole, because I did want some instances of "unlucky"seeds that die out quickly -- that in-and-of-itself is an interesting thing to see and think about.
#82 is fortunate to have some other traits going for it that "rescue" it from dying out. At least, that's the story that comes to mind for me as I'm making sense of this mint.
First, the piece has "klein" topology, which means the top/bottom and left/right sides are connected. This gives cells on the edges more neighbors, which helps keep patterns from dying out as quickly. For better or worse, pieces with the "bounded" topology are more inclined to die out, since cells on the edges have less neighbors to grow new life with.
More importantly, this mint has the "burst of growth" trait. This is one of the rare exceptions to the rule of not changing the underlying mathematical structure of a piece. The rules of the automata are very slightly tweaked to entice it to grow across the canvas. The "burst of growth" trait was originally conceived to prevent pieces from dying out too quickly. For canvases with small amounts of life, it works wonders to keep them alive. So, this trait was almost made for these small orthogonal seeds. It's really nice to see these traits come together in balance this way!
The Burst Timing
For the "burst of growth" trait, timing is everything. The choice of some of these traits can really change the effect that the "burst of growth" has on both the behavior and aesthetics of a piece.
burst of growth: on
burst start: 646
burst cycle length: 690
First, the "burst start" trait. For "mono no aware" #82, the "burst of growth" trait doesn't begin spreading across the canvas until frame 646.
This timing works pretty well for this piece. It's long enough that you get some time to contemplate the corners of the initial phase. This smaller orthogonal seed has a TON of negative space in the middle, which I think contrasts well with the bright, bold colors of the living cells in the initial phase.
Ideally (in my opinion) the burst of growth comes a little later so you get to enjoy the slow burn of the initial phase. Some pieces are really more about what happens during the "burst of growth" phase, but I don't feel like #82 is one of those. So I think this works well to connect the initial phase and burst phase.
Burst Cycle Length
Once the "burst of growth" begins, the next key question is "how long will it last?" This is the Burst Cycle Length. The burst cycle length of this piece is 690 frames. One thing that's important here is that 646 (burst start) and 690 are similar in size -- so there's going to be a nice balance between the standard algorithm phases and the burst of growth phases over time. 646 frames standard, 690 in burst of growth, 646 standard, 690 in burst of growth, etc.
When this much of the piece's time (more than half) will be spent in the burst of growth phase, it's important that the color scheme and other traits work for that phase. This is working for #82 -- more on that below.
For pieces with "burst of growth" -- I've seen these patterns:
- early burst, long length -- these are dominated by burst of growth. Very important that color scheme and symmetry work well for burst of growth
- early burst, short length -- in extreme cases, these may have a burst of growth that only lasts for a few frames. They're more of a curiosity than anything, since the animation won't spend much time here. At medium lengths, they can have interesting impacts on the structure of the animation.
- late burst, long length -- these have long periods of standard growth, followed by long periods where the canvas is dominated by burst of growth. These tend to be interesting to watch, though at longer burst lengths, any structure from before the burst gets erased by the chaos
- late burst, short length -- at the shortest, can last for a few frames. Can serve as a good rescue, or as visual relief from a long time spent in the standard animation.
For #82, It's sort of a medium burst start, medium length. This seems to give a nice amount of time spent in both standard and burst states, and keeps the burst of growth short enough that some of the underlying structure from before the burst persists. For example, in the first burst (which starts around 22 seconds into the animation), the animation begins to close the negative space in the middle during the burst. But the burst ends before the space can be fully closed. The entire canvas isn't being scrambled during the burst -- some of structure is still there.
At a macro level, the combination of a "rescue" by the burst, and having a burst just long enough to still leave some negative space afterwards, seems like a great tuning for the burst timing to me. And the large amount of negative space pre-burst means that you get a really great blue wave filling in the canvas. You get to see the chaotic edge of the wave, but still get to see the symmetry between the top/bottom of the canvas. It has a good balance.
fade rate: fast
Crispness -- blur:off and fade rate:fast
At a glance, #82 has some really bold, crisp colors. With blur:off, the entire canvas is overpainted in black before rendering each frame, and no alpha effects are used, so colors are crisp. With blur:off, there is also an additional performance optimization where dead cells aren't included in the calculations for each loop -- so the animation runs faster, especially when there aren't as many living areas on the screen (e.g. when burst of growth:off).
The cells for blur:off also include a small, black border that makes the scene appear more pixellated. There is a small performance cost for including the border, but it's less than the cost for blur:on would be, so we can include it.
Combining to make the crisp colors in #82 is the fade rate: fast trait. This trait effects how long the "trails" behind living cells that become dead are. It's like an echo of where life is, and can most easily/clearly be seen behind "gliders"
Circled: A glider during the initial phase of "mono no aware" #82
In this case, you can see that the "trail" behind the glider is pretty short. The echoes of the glider don't last very long -- they fade rate:fast. This makes the shapes of the underlying automata pretty crisp for #82.
The life colors are visible in the glider at the upper right of the shape circled above. For #82, it's this soothing color, sort of a cornflower blue. That's good, because it's not too heavily saturated or glaring, not too dim. It looks good with burst of growth:on and during standard growth
The earliest trail colors, visible right behind the glider, are a darker blue that blends nicely into the life colors. It gives a nice transition between life and death that give #82 a smoother animation. You can see in the trail that there are blue, purple, and green sections. The RGB values in the trail are calculated with respect to how much time has passed in each cell since it was alive, according to a few trig functions. I wrote more about how this coloring works in my previous blog post, but will include the video here:
So the trail for that glider is colored based on a small section of a circle like the one shown in this video -- for instance, maybe the first quarter of it. Depending on the size and shape of the waves chosen for the animation, the colors in the trail may oscillate more or less frequently, through colors that vary like the square in the video.
One nice quality of the color scheme for #82 (in my opinion) is that green at the end of the spectrum (visible in the circled glider on the left side). Green at the end of the trail gives it a nice pop as it disappears, often visible as a flash during the initial phase or after a burst of growth. It's also visible as a sort of sparkle during burst of growth:on.
Over a longer time frame (minutes, hours) the colors shift a bit. In #82, the blue and green fade components don't seem to change as much. The width of the green band on the glider tails does seem to narrow or widen over time in a way that's interesting.
You can see a little later in the animation, how the fade color has changed. The earliest fade colors are now green -- and the green "tail" has narrowed from four squares (in the previous glider image) and one square (in the glider image shown here). The smaller green tail gives the animation a notably flickery character that comes in after a few minutes for some time.
The red component is one of my favorite parts of #82's colors. Over the course of minutes, the red area of the trail changes between bright red, orange red, peach, yellow, bright pink. You get a feeling like things are gradually changing, which is nice -- but it's slow enough that you can enjoy the colors of the moment you're in without them changing too much.
You can't really talk about colors for a burst of growth:on piece without talking about how they affect the burst phase.
A stereotypical first part of the burst phase for "mono no aware" #82
In this snapshot, you can see how areas of green cluster irregularly. The centers of areas of growth start to take on a glowing red appearance, overlaying some geometric-looking structures created by burst of growth:on. The cornflower blue life colors dominate the scene, so it's fortunate that they're easy on the eyes.
The crispness of the colors also mean we get some nicely defined negative spaces as the burst of growth spreads. The rotational symmetry of #82 means that the geometric structures and negative spaces are both mirrored across the center, which is satisfying to watch unfold in animated form.
A frame captured just as a burst of growth was ending, showing the "death flash" that rapidly changes through a few colors, here shown as red.
"mono no aware" #82 has a few factors coming together that make it tell a cool story. It has a well-balanced burst of growth that complements its small "orthogonal" seed to escape death and keep the piece moving. The trail colors are bold and bright, but balanced by an easier-on-the-eyes blue life color. The animation is relatively performant with blur:off, and fade:fast keeps the colors crisp. The symmetry of the initial seed and topology:klein work well to keep the burst of growth interesting.
This piece is balanced such that it seems to be watchable indefinitely without repeating. It seems to have its own character, but changes enough over a long timeframe that there is always some new variation on the colors to see. #82 is one of those mints where things come together in an emergent way to give a generative piece its own sort of personality. For me, this is exactly the sort of thing I hope to see in a mint of "mono no aware".
"mono no aware" is available for mint on Art Blocks:
Find me on Twitter @ixnayokay