I won’t dive too far into what “generative art” is or isn’t. At a high level, an artwork being “generative” means it was created with a system that was responsible for making decisions that an artist would typically make themselves. This is obviously really vague. That’s part of the fun of working with generative art! There’s so much room for interpretation, and as the artist, it’s up to you to decide what your system should be responsible for, and just how it should even come to the conclusions it does.
If you’re interested in learning more about these systems, or just want to see some cool examples of what forms generative art can take, check out these resources:
- Generative Design by Benedikt Gross, Hartmut Bohnacker, Julia Laub, & Claudius Lazzeroni
- Computational Drawing by Carl Lostritto
- Generative Hut: @generativehut
Ok, but how? 👀
The AxiDraw is a machine 🤖produced by Evil Mad Scientist (they’re in Sunnyvale!) that can move a tool along X & Y axes, and lift & lower said tool. If you attach a pen to the AxiDraw, you can render a physical artwork by giving the machine the right instructions!
Normally when I work on generative work, I use a tool called p5.js. Since our rendering “target” here is a pen, we need a different toolset and frame of mind than we would use for creating art in the browser.
Enter canvas-sketch, a tool by Matt DesLauriers . With canvas-sketch, we get a set of utilities that simplify a lot of things you frequently have to account for with generative code (scaling, hot-reloading, unit conversion, math, geometry, randomness, the list goes on…). As the artist here, you’re still ultimately responsible for composing a piece, but now you don’t have to worry about scaling to your paper size, writing SVG strings, or how Simplex noise works under the hood 😅.
Note: You could absolutely do this with p5.js, vanilla JS, or any other language if you wanted to! I’ve chosen to work with canvas-sketch myself becuase I like the utilities it provides, and I’m already familiar with writing generative code in JS. Use whatever you enjoy working with!
Concept & code
One of the toughest (but also most rewarding) pieces of writing generative code is coming up with what you want to piece to even be. Are you going to cross reference multiple randomly sourced images and output a composite? Generate a varied bunch of little topographies? Periodic motion from an isometric point of view?
Once you have an idea, how do you take it from there to a uniquely rendered piece? Usually, the answer is behind a handful of doors. Some of them include:
- Math! Geometry, trigonometry, and all that other stuff you thought you wouldn’t use again
- Variation: Randomness, noise (Perlin, Simplex, etc), time, and other sources for “making it change”
- “Traditional” components of artwork! Color, texture, lines, shapes, transparency
Often, when I’m working on a generative piece, I’ll write it fairly “static”. This can be helpful during development, especially for making sure it “looks right” to you. My biggest piece of advice for this workflow is to take every “magic number” you add, and hoist them all up to constants somewhere together. That way, while you develop, you can tweak the values in these constants to make quick and easy adjustments, rather than having to hunt down and modify values throughout your code. The second benefit to this development pattern is that once the time comes to make it “generative”, you have a clear set of values that can be modulated for a quick impact!
InkScape & actually drawing
Once you’ve come up with an artwork that you’re ready to bring into the real world, it’s just a matter of exporting & tidying up! If I know that I want to use multiple colors in my plot, I’ll export each color layer as its own SVG, that way I can easily send the layers to my AxiDraw one at a time and switch pens in-between.
Tip: When saving PNG layers, add a lengthless line to the same corner on each layer! That way you have a reference for aligning the layers to ensure they line up properly when drawing.
After collecting all the SVG layers, we’ll import them into InkScape, a free vector drawing software. InkScape in particular is a great choice, because there are extensions for interfacing directly with the AxiDraw! Once the layers are all in and aligned, we set up the workspace (paper, pen, AxiDraw “home corner”, etc) and get started with drawing our first layer!
Moving between layers during the drawing process is as simple as toggling the visibility of each layer, swapping pens, and telling the AxiDraw to draw again.
My partner has been getting really into a growing collection of art supplies, and I’ve been mostly passively participating in those shopping trips up until this week. Now every run to the arts store has me checking out new weights, sizes, & textures of paper; and every variation of pen and marker imaginable.
Some supplies I’ve had good luck with so far:
- Copic Multiliners (black)
- Micron fine liners (multiple colors!)
- Uni-Ball Signo pens (white, silver, & gold have been awesome)
- Legion Stonehenge Aqua Coldpress Black paper (this pairs really well with the Uni-Ball pens)
- Strathmore Bristol 300 Series heavyweight paper (in 9" x 12" & 11" x 17")
Thanks for reading!
If you’re interested in checking out my plotter work, I’m posting updates regularly on Instagram @cef2010!
If you’d like to check out my other generative work (in the browser), you can find most of it at idontwatchfootball.com.
Can I have one?
Interested in commissioning or purchasing plotted generative artwork? Reach out on Instagram!