Waves
My first generative project is an exploration of motion. Concentric rings oscillate and push against each other in a fluid, life-like way. Occasionally, all the movements will momentarily cancel out, which I call "the convergence".
Palettes are generative which allows for a broad range of color selections and variety within the collection. More about this below.
Each piece is interactive: you can use left/right to vary speed, 'm' to see the metadata, 's' for status, 'c' to capture, 'f' for fullscreen, and 'a' for an alternative perspective. Try it on a big screen with the exhibit feature.
The 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.
More Info
I have an article which covers the project including shapes, convergence, the color algorithm and bonus features.
Tech Stuff
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.