Processing and Arduino to manipulate digital content
How open source is enabling the digital art age
When I was in college, software development seemed much more difficult. I went to school for electrical engineering, so many of the courses dealt with programming tiny computers in assembly language. There were complicated toolchains, expensive compilers, and thousand-page manuals that described how to set the registers so that these chips would even operate.
My perception completely changed when I took a class called "Conducting Robots," where students were tasked with making a robot, in one semester, that could conduct a ten-piece orchestra. The professors recommended that we use two open source tools: Processing and Arduino. These tools took care of the low-value parts of a project so that we could focus on what mattered: queueing instruments, demonstrating the intensity of the piece, and keeping time for the musicians.
This project was incredibly exciting to me because it demonstrated the freedom that digital art represents. Digital art allows traditional audio and visual methods to take on new forms by adding layers of data and interactivity. This means that your project can respond to events happening in its environment, or on the other side of the world. When a project begins acquiring hardware components like lighting or moving objects, the term digital art seems inadequate since the entire environment becomes the art piece.
It is well-established that the open source movement has created an enormous amount of value for businesses and organizations. Often overlooked, however, is the amount of value that it has created for those looking to pursue creative ventures. The open source community has created a plethora of libraries and frameworks that reduce the barrier of entry for aspiring digital artists and musicians. Though there are many out there, I would like to focus on Processing and Arduino because they have most shaped my approach to both art and programming.
Processing is a framework that gives artists a blank canvas on their desktop, and a toolkit for programmatically creating visual art. There is little setup, and a user simply uses two functions to create a program:
setup function is called once at the beginning of a program and typically sets up the canvas. Then the
draw function is called on a loop until the application finishes running. While simple, it is a powerful way to think about animation. Processing helps make it easy for beginners to create something and provides a framework for creating advanced pieces like installations.
What Processing got right for visual art, Arduino expanded for hardware. Instead of technical manuals and complicated development environments, Arduino asks you to implement two functions:
loop (sound familiar?). All of the common things that you do with hardware of this size are included in the box: turning things on and off, reading signals from sensors, and talking to other chips all become easy. Arduino can be used to make pure hardware projects, or combined with Processing to make a staggering number of hybrid projects.
At Smashing Boxes, we have been working on an open source art platform called Fraqture that explores glitch art and manipulating digital content. It uses a Clojure adaptation of Processing called Quil to talk to an Arduino that is driving 540 full-color LEDs. Originally designed to be installed in a storefront window, it sources content using a forward-facing camera and social media.
There has never been a better time to open up your favorite editor and create digital art. The open source community has made it easy and cheap to build and scale your ideas into fully realized pieces. In particular, Processing and Arduino provide a compelling story for creating interactive experiences in the digital and analog worlds. If you want to work on something new, do yourself a favor and give these frameworks a try.
If you are interested in how to get going on a project of this scale, Brian Carrigan will be speaking at All Things Open about the journey from an empty file to a fully-baked art project.