Within/Without

Generative artwork is about making something which makes something. An artist creates instructions, sometimes with code, which in turn creates a visual or audio output. Where does the art lie then, in the instructions or in the output? Is the artwork the code or the print on your wall? For on-chain generative artwork such as Within/Without, it is both, simultaneously. You cannot have one and not the other, they are intrinsically connected, body and soul.

There is a direct lineage traced from Sol LeWitt’s Wall Drawings to Larva Labs’ Autoglyphs to Aaron Penne’s Within/Without. Each of these projects decouples the artist's instructions from the visual output, and those instructions are interpreted according to some element of chance. Sol LeWitt wrote step-by-step instructions for other people to follow, Larva Labs generated symbols with Solidity code which are to be interpreted as instructions, and Within/Without generates symbols with Javascript code which are interpreted internally to then generate colorful abstract artwork.

Watch this video for a closer look at the project:

In the 1960s and 70s Sol LeWitt famously created artwork made up of written instructions for drawings, such as “draw 50 dots on a wall then connect all the dots.” Another person could take those instructions and interpret them on their own wall to create a Sol LeWitt artwork. The artwork is within the instructions, the idea itself represented on paper. The artwork is also the visual output, made up of the dots and lines physically marked onto a wall.

Sol Lewitt’s Wall Drawing #118 - School of the Museum of Fine Arts at Tufts University

In 2019 Larva Labs brought this concept to Ethereum with Autoglyphs, the first on-chain generative artwork. Code is run to create a 64x64 array of symbols (#, \, /, -, +, o, .) which are accompanied by instructions on how to interpret these symbols into a grid of marks. For example if the symbol is + then “draw centered lines vertically and horizontally the length of the cell.”

Autoglyph #134 and its instructions

This seemingly simple system is a monumental step forward for generative artwork as a medium. The "old" way of creating a work was to build a system capable of infinite outputs and tending to it like a gardener, in Brian Eno's terms. The only way to reasonably share these systems was to take several specific snapshots of that system. This means the outputs shared with the world were typically a small representation of the artwork. The full artwork existed only on my personal computer unable to be realized in its intended form. As Larva Labs showed, with NFTs generative artists are able to package both the code itself along with the output, putting both into the NFT. This means the artwork has potential to be a more complete representation of the artist’s vision. Autoglyphs were the first step, but they don’t quite realize this vision. The output of glyphs is the ASCII string, a human still must parse this string according to the English instructions and configure a plotter or rendering library to create an image from this string of symbols.

 
 

Within/Without takes this one step further by using newly generated Autoglyph instructions to generate Javascript/GLSL instructions which in turn create colorful and abstract artwork. The underlying structure of the glyph is apparent, but the output is something altogether new. The lines and circles are translated to create complex rectangular structures, dreamlike gradients, and soft edges made of pixelated digital artifacts. Within/Without captures the duality of soft paintings and geometric digital art, intentionally preserving the artifacts of striking this balance. This project is artwork that generates instructions which generate instructions which generate artwork.

Eight uncurated random outputs from the Rinkeby Testnet

Time

There are 4 possible loop times depending on a combo of the Delta and Speed traits: 308 hours, 42.3 hours, 6.5 minutes, and 1 minute. Both the composition and the color position of each piece slowly shifts over time, with the majority taking as long as 308 hours to loop. The calculation done here is as follows:

  • color loops every 3223 frames

  • form loops every 2837 frames

  • the lowest common multiple of 3223 and 2837 is 9,143,651 frames, meaning if both color and form are moving it will take ~9 million frames to loop.

  • Conceptual takes 120 milliseconds per frame which equals 8.3 frames per second. Meditative runs at 60fps.

  • This means one loop takes:

    • 308 hours at Speed:Conceptual and if Delta is anything other than None (9143651 frames / 8.25 fps / 60 sec / 60 min = 308 hours)

    • 42.3 hours at Speed:Meditative and if Delta is anything other than None (9143651 frames / 60 fps / 60 sec / 60 min = 42.3 hours)

Note that these long loops are a result of two sinusoids driven by different phases, 3223 frames and 2837 frames, for color and form respectively. The form does not move for all outputs, it is static for Delta:None. Those pieces loop every 3223 frames rather than every 9 million frames. This leads to much faster loops of 6.5 minutes for Conceptual and about 1 minute for Meditative when it has Delta:None.

Displaying your artwork

Within/Without is intended to be displayed in two ways: live on a large screen or as a static print capturing the first frame. The best practical way to showcase the work is by streaming or casting a computer screen to a TV using Chrome in fullscreen mode. The second best way is to print the work on high quality paper with archival inks and frame it. You can save high resolution outputs using the dl=true URL parameter described above. You can also get a lower resolution output by hitting the S key at any point during the artwork's cycle.

Recreating your artwork locally

You can recreate your artwork on your own directly from the blockchain using two smart contract functions and this simple html template. You will need to navigate to the smart contract and run the tokenIdToTokenData function to get the unique hash (tokenHash) and the initial balance of PRINTS of the wallet that minted the token (printsCount). You'll also need the artwork script which can be retrieved from the script function. The artwork script can seen more clearly at the transaction data for the most recent setScript call by viewing the data as UTF-8 on Etherscan. The places to enter these 3 pieces are in the HTML template below. Once you create your withinwithout.html file you can load it into any browser and see your artwork generated live.

Traits

A breakdown of the traits and associated rarities is available in a Google Sheet compiled by @zerobeta.

Acknowledgements

Thank you to 0x__jj for building the contract and minting website. Thank you to Dollar Monopoly for patiently driving this project forward for months. Thank you to Arihz, Gremplin, and the members of #genartclub for support. Thank you to all members of the Fingerprints DAO for continuing to solidify on-chain generative art as a culturally important medium.

Further Reading

 

Next
Next

Apparitions