rosemary
rosemary copied to clipboard
Generative Artwork by Danielle Navarro
Generative Art by Danielle Navarro
Making generative artwork reminds me a lot of gardening. Both are aesthetic exercise, creating a pleasant and relaxing evironment that the artist/gardener can enjoy no less than anyone visiting the space. Both are hard work, too. Learning how to prune, learning which plants will thrive in the land that you have, knowing what nutrients differnt plants need, taking care of the garden in hard times, et cetera, none of these are easy. At the end you might have a sustainable native garden that blends in seamlessly with the environment and brings you joy, but growing the garden is itself a technical and sometimes physically demanding exercise.
Artwork is the similar in that respect, I have discovered. I make all my art using R, and rely heavily on the ambient package that provides an interface to the FastNoise C++ library for generating multidimensional noise of various kinds. Taking the time to learn (a little of) the technical skill required to work with these tools allowed me to start writing my own jasmines package that provides me with a collection of tools that I enjoy using. It has been (and still is) a demanding exercise that has made me think a lot about how to design programming interfaces, and while I doubt anyone except me will find much use for the jasmines package, the act of writing it is giving me joy in and of itself. Much like gardening, I find the construction process itself inherently rewarding.
Nevertheless, as with gardening, there is the personal act of creation that brings joy to the artist or gardener, and then there is also the products of that creation. Back when I still had room to garden, one of my favourite things about the jasmine vine I trained to run along the edges of our deck overlooking the valley was that at the end of every winter it would come into bloom along with the surrounding plants, and it was my favourite place to sit with a cup of coffee in the sunrise… though the children would inevitably drag me back to reality.
The rosemary
package is where I’ve bundled a collection of generative
art pieces I created using the jasmines
package. The pieces themselves
are publicly available as a flickr
album
release under a CC-BY licence, as is the rosemary
package itself
(jasmines
is released under the more permissive MIT licence). I chose
the name jasmines
for the underlying engine not just because I love
jasmines, but Jasmine is my middle name. I chose rosemary
not just
because I love rosemaries, but because I associate rosemary hedges with
my mum who taught me to garden. To me, building the tool is a thing I do
for myself, but the art is something I can share with others. If you
would like to install the rosemary
package, yourself, it’s the usual
method for installing from GitHub:
#install.packages("remotes")
remotes::install_github("djnavarro/rosemary")
Each function in the package creates a single png file with the corresponding image, or, in a few cases, creates a few png files with different variants. To recreate the “incantations” piece, for instance, all you need to do is:
rosemary::incantations()
You would probably need to specify the dir
argument so that the
function knows where to create the incantations.png
file, but if
you’re lazy like me and don’t want to keep specifying it every time
you can specify a default location by adding a line like this to the
.Rprofile:
options(rosemary.images = "/home/danielle/Desktop")
Enjoy!
