art by minimizerScribble Together | "Us" | Scribbled Daydreams | Infinite Scribble | Flow | Waves | Your collectionConnect

My first generative collection, Waves, is an exploration of organic, lifelike motion as well as generative palettes. Each piece consists of a series of concentric rings that are shaped by sine waves as they push against each other and the bounding frame. The rings continuously move and never repeat. The waves of each ring will cancel out from time to time. This can also happen for all the rings simultaneously, a moment I call the convergence.

The palettes are created by moving through the color space with a starting point and direction of travel, stopping to sample a color when it is sufficiently different from the prior one. The algorithm for the color palette has its own visualization below.

Waves #0

The pieces are interactive, allowing the viewer to vary the speed or reverse the motion of the piece (keys: left/right), show the metadata of the piece ('m'), and toggle on the alternative view ('a'). Additionally the viewer may enter full screen view ('f') or capture the current frame ('c').

Waves works with my experimental exhibit feature, a prototype for interactive displays. This allows a collection to be displayed on a large screen and for viewers to interact with the pieces using their smart phones.

Interested in learning more? My retrospective covers the project including shapes, convergence, the color algorithm and bonus features.

You can explore the full collection here.

Color Algorithm

Each piece uniquely selects colors using an algorithm that traverses the three dimensional color space from a random starting point and direction of travel. This algorithm favors high-saturation colors that are not too light or dark. The starting point is more likely to have these attributes, and similarly the path of travel is nudged towards these charactistics like gravity. Each sufficiently different color along the path is chosen for one of the main rings.

I really loved building this methodology and there's more to it, which you can see in action with the visualizer below. Like Waves, use left/right to vary speed.

Choose token (0-276):


Waves is implemented in JavaScript using p5.js. The code is mirrored on chain in the smart contract (waves.minimizer.eth). The contract also implements a "freeze" function which will prevent any further changes by anyone including myself, to be run once minting closes with all files stored in IPFS/Arweave.