Scratch is a Zen-inspired generative art project that explores the captivating patterns that sanding discs create on metal surfaces. The digital artworks can be pen-plotted at any scale, and an alternate physical output can be created on sheets of metal using CNC machines.

Scratch #0 (live render)

Inspiration and Creation


Scratch continues my exploration of Zen-inspired generative art (published from Zenerative.eth). It also continues the trend from prior Zenerative projects in that it explores new output technologies, specifically it explores plottable art and CNC machinable art.

During my undergrad and graduate study (BS from an engineering program and MFA from a imaging arts and science program), I worked in a machine shop that my then father-in-law owned and operated. I was a bit of a apprentice there, doing various odd jobs, but after a while I was mostly smithing custom tools and restoring various metal parts. I’d frequently use a die-grinder with an abrasive pad attached, and I noticed how it left the most interesting patterns of arcs on metal surfaces. These intricate patterns made by simple motions never left my mind, and they inspired the Scratch algorithm.

This project is dedicated to the artistry and creativity in ‘blue-collar’ workers, something that is often unnoticed or underappreciated.

The Generative Program


This project utilizes p5.js to create the artwork. Each generated image uses values from a unique transaction hash provided by the platform ( powered by to determine material, finish, number of rings, density of rings, style of rings, and more—all with the goal of creating a simple yet serendipitous artwork.

The source code is on-chain, on mainnet Ethereum. It’s nearly 400 lines long and 12.4 Kilobytes of data, which took .33 Eth in gas to deploy (don’t worry, I offset the environmental impact). Each NFT image can be rendered directly in the browser, utilizing only standardized JavaScript and the official JavaScript library from the Processing foundation. Scratch images are fully deterministic and resolution-agnostic.

Additionally, when rendered live, the NFTs have interactivity with a keyboard:

  • S‘ saves the SVG.
  • C‘ previews the CNC paths.
  • E‘ exports the CNC paths.
  • H‘ hides the signature stamp.

Note that the images on this site are static images – they are not live renders of the NFTs.

Scratch NFTs #1 – #9 (testnet)

These were created by the Scratch algorithm; notice how different each one is! As soon as a purchase confirms, the token is made, and from it, a deterministic output can be reproduced from on-chain data. Only then does the buyer see the beautiful artwork that the program generated for them.

You can see these (and all the others that have been created) in the gallery views at and at

Scratch Plotted Outputs

Scratch is a project released on, which makes plotting the artwork very easy!

After launch, I hope to see many owners’ plots, and I plan to share them here. Below are some test plots by Stephen of Generative Artworks.

An early Scratch WIP plotted by Stephen of Generative Artworks.

Plotter Notes: To replicate the density of the digital image, choose a pen for the main area of a Scratch that is 1/1000th the length of the sides of the plottable area. For the signature, a pen that is 2.6 times thicker than the one used for the main area is suggested. For instance, for a 10″ square plot, a 0.25mm pen for the main image and a 0.65mm pen for the signature will closely mimic the density of the digital output. While bolder pens can create more visually striking images, denser Scratches plotted with thicker pens might require a heavier paper stock.

Scratch CNC Outputs

Scratch includes code and instructions to create alternate-output physical works on metal using CNC machines. A friend let me play with their CNC machine to create this test/proof of concept.

Note: as a test, I used different types of sanding pad, and I did not polish the base. I also didn’t have it carve the ‘MATTO’ signature piece (I only had an hour on their machine!). Mint funds will allow me to build a CNC machine of my own, and I hope to use it to create metal ‘prints’!

CNC Notes: Experienced CNC technicians can faithfully execute the outputs on 24″ x 24″ sheets of metal by using 1″, 2″, and 3″ sanding discs and a 1/16″ end mill. The choice of material and finish should be based on the specific characteristics of the Scratch output. If the Scratch output includes the ‘Dark’ feature, anodized aluminum or copper with a patina can be used. Clear coat the piece after machining to prevent tarnishing.

More info on DIY CNC

Because CNC machines and CNC software is not standardized, the CNC exported code from the algorithm will have to be tailored to the equipment and workflow being used. Here is what is needed when using Inkscape and Canbam.

  1. Open the exported svg code in Inkscape, and in document properties, change the Display format to use inches, and set the width and height to 24 (inches). Set the scale to 0.024 in per user unit.
  1. Select the outer lines of the signature, and in the Path menu, select ‘Object to Path’. Repeat with the upside-down-V polyline of the A.
  1. Save as a .DXF file (R14), and have ‘use LWPOLYLINE type of line output’ selected. Do not check the ‘use ROBO-Master type of spline output’.
  1. In CanBam, open the .DXF file and visually compare the file to the token to be etched. Edit> Select All. Edit> Join. Enter 10 for the distance.

From there, a lot of variables and factors will determine your next steps. But stay tuned here! I’ll post what I believe to be the best process to create these!

Zenerative Prints?

Traditional prints of Scratch are not available from the artist. However, token owners will be able to order plots and etchings of their tokens – stay tuned for updates!