The Story of Waveblocks

Waveblocks are a limited collection of 666 algorithmically generated NFT inspired by waves.

Marc Hemeon
10 min readMar 29, 2022

The process of creating art is evolving and elusive. We don’t quite know how Mark Rothko created his Colour Field paintings and we are just now wrapping our heads around Vermeer’s Camera Obscura. Artists channel the world and then apply process and steps to generate a work of art.

As an oil painter, my process for rendering water is straightforward— underpainting with monochromatic burnt siena followed with blocks of color and multiple thin layers and glazes and arc like brush stokes to build up the water and sky effects.

Water №41 Underpainting to finished work.

I started to experiment with creating NFTs of my paintings and drawings and combining digital artwork with physical artwork. I started sharing my work with my friend William Ngan. We had met working in Artificial Intelligence at Facebook and had stayed in touch. William is one of the best designers and coders I had ever met.

I asked William if he thought we could take some of the principals I used in my sketches and paintings and create generative art that captured the emotions of my water paintings. The seed of Waveblocks had been planted — combining my 15 years of traditional artwork with Williams 20 years of creating art with code.

Water Sketches from Sketches of the Sea Collection

Something Large from Something Small

William theorized the best generative art pieces tend to use a highly constrained composition to create a dramatic effect. In Waveblocks the simple Arc would be our constraint. Arcs are so simple that you can draw them with a pencil tied to a string. But through playing with their curvature, orientation and width we can create the illusion of water and waves.

We want to capture the essence of waves without making a skeuomorphic simulation of waves.

William created a playground to experiment with arc creation and waveforms. Lucky for us, William had (in his spare time) created an animation library called Pts to test ideas rapidly with interactive sketches.

We created a basic arc like shape first, spending time tuning different noise types to see how the arc would be effected. Generative Art usually involves trying one thing, making a small change, imagining an aggregate effect, and seeing it come to life in surprising ways, again and again.

Playing with arcs.

Animation or No Animation
We started to layer arcs and waves on top of each other and played with animating them. The original plan was to animate Waveblocks but we soon learned web browsers can quickly crash when rendering complex patterns. With many waves we saw dramatic decrease in performance. We enjoyed the emerging texture of the layering waves but did not love the sluggish nature of the animations so we decided to can the animation (for now).

Animating 2 waves, 4 waves and 25+ waves.

Generative Color

Many generative art projects do not generate their color with code. The coder hand picks color combinations to ensure some harmony of the final output. We wanted to try something a little different and have the colors of Waveblocks be fully chosen by the computer.

We again applied the constraint of arcs to generate colors. LCH is LAB color expressed in polar coordinates, where hue is the angle and chroma is the radius. We hypothesized some beautiful color “arcs” in the LCH space. Further experiments on algorithms explored the relationships between hue and chroma to create emotive color schemes.

monochromatic color testing with overlapping arcs

Further experiments building out the algorithm that balanced out hue and chroma to start to create interesting relationships with the colors. Here you can see the introduction of dashed lines on top of solid lines, a property that would later allow us to create a shimmering on top of the water.

At this stage we also started playing with line weight and changing the convergence of the arcs to make lines dance and play, like the flow of the ocean. We started to see visual patterns we found interesting and unique, but we wanted more surprise and serendipity.

Exaggerating arcs to create movement

Through many experiments we discovered Waveblocks could be built up through a series of repeating arcs in a variety of sizes and degrees, much live weaving a tapestry.

Waveblock #400 — Sharps Beach

With the core algorithm completed we set out to add a series of properties that change the composition, colors and energy of a Waveblock that can be randomly assigned to a Waveblock by certain probabilities.

Waveblocks Properties
The final Waveblock algorithm has 8 possible traits Waves, Blue Moon, New Moon, Chroma, Duality, Spectrum, Surface, and Swell. These traits control the look of each Waveblock and are randomly determined by our algorithm.

Waves
Each Waveblock has a certain wave count grouped by minimal, normal and groundswell. Minimal means 2 waves (Occasionally we see the appearance of one wave, due to one wave being drawn on top of another wave). Normal waves are typically between 3 to 5 wave forms and make up a bulk of Waveblocks. Groundswell means there is a ton of wave energy creating many wave forms — these tend to fill up the canvas and have wild energy.

(L to R) Minimal in Waveblock #662 — Steamer Lane, Noral in Waveblock #617 — Dredges, Groundswell in Waveblock #446 — Allerton Point

Duality
This property will split a waveblock in two forming a diptych. Named after the concept that every aspect of life is created from a balanced interaction of opposite and competing forces and that every single human being has good and evil within them. Duality combined with other properties can be quite rare.

Waveblock #651 — Abalolo Reef, Waveblock #139 — Grinders, Waveblock #453 — Ballston Beach

New Moon
This property removes all color from a Waveblock. Named after the darkest nights of the month when the tide is maxed out. The only property that can override the pure black and white is Spectrum. Waveblock #101 is perhaps one of the most rare because a color wash of the Spectrum property overlays the black and white New Moon property, creating an iridescent effect.

Waveblock #101 — Guillotines, Waveblock #419 — Pipa, Waveblock #470 — Sunset Reef

Chroma
Chroma is the pure intensity of color. The color of each Waveblock is generated, not predetermined using the LCH color space. LCH stands for “Lightness Chroma Hue” and is a model for defining and representing color. The Chroma property of a Waveblock can be none,low, medium or high. When there is no chroma the piece is black and white.

Waveblock #471 — Ollie´s Point, Waveblock #610 — Samurai, Waveblock #11 — OumLabouir

Swell
Swell is the amount of wave energy. In the ocean swell forms from the intersection of many sever storms across thousands of miles of water. For Waveblocks, swell can be represented as rising, dropping or pumping. The Swell property controls the positioning of the waves on the canvas. A dropping swell pulls the waves into the foreground and out of the canvas. A pumping swell pushes the waves through and out of the canvas and a rising swell is somewhere in between.

Dropping- Waveblock #559 — Lambe lambe, Rising-Waveblock #601 — Vulamanzi Point, Pumping — Waveblock #332 — Seal Point

Surface
The surface property is fairly subtle, but noticeable once we know what to look for. Surface controls the wildness or calmness of the texture of the water. Waveblocks with a smooth surface receive an additional layer of texture creating a subtle shimmer or shine on top of the water. Waveblocks with a choppy surface receive an additional layer of dotted lines wildly placed on top of the artwork.

Smooth-Waveblock #22 — Nihiwatu, Normal-Waveblock #557 — Quoin Point, Choppy-Waveblock #204 — Garbage dumps

Spectrum
A spectrum is a band of colors and in the case of Waveblocks this property removes black from the artwork. There is an exception if the Waveblock has the New Moon property, in this case spectrum is applied on top of the New Moon in the form of colored lines.

Waveblock #172 — Uluwatu, Waveblock #67 — Les Alcyons Avalanche, Waveblock #287 — Rennies Beach

Blue Moon
The last property we have is called a Blue Moon. In my traditional artwork Ultramarine Blue is used in every painting and is fundamental to his work. To pay homage to traditional painting we added the Blue Moon property which creates a very bright blue ultramarine Waveblock. True to the phrase “Once in a blue moon” — the blue moon property is very rare and has a low probability of appearing. Waveblock #613 — Lage do Pescador is considered the most rare Waveblock. Only 5 Blue Moons exist in the entire collection

Waveblock #613 — Lage do Pescador, Waveblock #602 — Nagatazaki, Waveblock #378 — Lassos

Explain Your Waveblock
Each Waveblock comes with a corresponding step-by-step animation that shows how the Waveblock was constructed. The core libraries used in the creation of Waveblocks is Pts, a Javascript library created by Waveblocks co-founder William Ngan. The explanation animations help explain the structure and creation of each Waveblock. You can see the animation of any Waveblock by visiting the Waveblock Gallery, selecting a Waveblock you like and tapping “animate”

Responsive Resolution
Every Waveblock has “Responsive Resolution” which is the ability to generate your Waveblock at any resolution. As resolution increases, more details are drawn in by the algorithm (limited by your computer power).

Technology is rapidly changing and we wanted people to enjoy their Waveblocks for years to come knowing screen resolutions and output requirements would continually improve. Owners of a Waveblock can visit Waveblock.com and download their Waveblocks in ultra high resolution up to 16k)

Keeping our Oceans Clean
10% of the sale every Waveblock is donated to the Surfrider Foundation to help fight offshore drilling. We have donated a little over $160,000 to Surfrider Foundation through the Waveblocks project.

Waveblocks x Surfrider

Explore Waveblocks
There are two places you can view Waveblocks. On Waveblocks.com we have a visual gallery of every piece minted where you can explore the Waveblocks and see their animations.

The other way to explore Waveblocks is on OpenSea. There you can filter and sort by properties and more easily drill down into the collection. https://opensea.io/collection/waveblocks

Collect a Waveblock
You can collect Waveblocks on the secondary market from Open Sea at https://opensea.io/collection/waveblocks

Waveblocks Community
We would love to have you as a part of the Waveblocks community. Waveblocks holders get to be a part of occasional giveaways (like our collaboration with Album Surfboards) and share in the love of the ocean. Join our Discord (community) here.

Credits
Thank you to William Ngan for his incredible coding artistry for creating the core Waveblock code and contributions to this article. Thank you to rest of the Waveblocks Team, Courtney Guertin for developing our smart contract and Amadeus Demarzi for creating Waveblocks.com.

--

--