Tech: What makes project2891 tick

This page is where you'll references to all the bits that make project2891 tick. If you are trying to work with the project, or just curious how it works, this is the place to be.

Preface

One of the goals of project2891 is to open up the potential of networked artworks to as wide a range of collaborators and types of artwork as possible. Typically, this requires a fairly high level of technical know-how just to get things to talk to each other in any kind of meaningful way. I've attempted to distill the technical requirements a bit, without significantly diminishing the overall capability of the system. However, in order to use any of the tools provided with project2891 or to make a work which interacts with the system, a certain level of technical know-how is required. If the rest of this page makes sense to you, you're probably in good shape. If it's a bit like reading a foreign language, a primer in the basics of physical computing and networking is probably in order. That said, learning to use the technical bit of project2891 would be a good way to get your feet wet...

Overview

The technical aspects of project2891 are essentially a re-working and simplificaton of tools and methods widely used by artists working with networked, digital, and interactive works. In the first instance, this is done in the support my practice; to gather a set of tools which can easily be applied to type of work I make. Equally, the system is designed to be just as easily used by others weather they are interested in collaborating with project or not. To acheive this, the system can be broken down into four basic parts:

Software

The majority of the software written specifically for project2891 is in Pure Data (Pd), Python and the Arduino programming languages. The project is intentionally basic in its implementation, Therefore, languages which are quick to learn and work with are needed more than something that is super efficient. Cross platform compatibility is also important, and all three languages run quite happily on the three most common operating systems (Linux, OS X and Windows).

PureData

For those that are not familiar with it, Pure Data is a programing language using a graphical "data flow" interface for audio, video and graphics processing. A small "hello world" program could look like something like this:

Pd Hello World Screenshot

Whereas the same function in a text based programming environment (like Python) looks like this:

#!/usr/bin/python

print "Hello World!";

Neither example is complicated, but I find the graphical representation of code in PD more compatible with a visual way of thinking.

PD was originally designed to aid in teaching digital audio synthesis. It has grown beyond this, and is now well suited for most things which require realtime processing (like project2891). Any audio synthesis / processing, and many animations produced in project2891 are done with Pd. Additionally, it can be used as a general controller of physical nodes by virtue of Hans-Christoph Steiner's Pduino object. Pd patches (applications) may also be used as discreet components of a node.

Complicating matters, there are different "flavors" of Pure Data available. The two main versions are commonly referred to as "Pd-vanilla" and "Pd-extended". The reasoning behind the two versions isn't going to be repeated here, it's just important to note that all the Pd work for project2891 has been done on Pd-extended, with the Pduino object added. Unless you are comfortable installing your own externals, you'll need the same on your computer if you want to run project2891's Pd patches on your machine.

Hans-Christoph Steiner's installers are probably the easiest way to get what you need on your system. Just follow the instructions, and you should be fine.

Python

Python is used mostly for text processing and some of the networking stuff. It's there to pick up the slack and fill in for stuff that Pd is not well suited for. By in large, unless you want to hack on the code for a node, you're not going to be dealing with the Python stuff directly. However, you do need to make sure that you have Python (version 2.4 or later) installed on your machine to run much of the project2891 software. If you are using any recent distribution of Linux, or OS X (10.4 or later) it's probably already installed.

All the code for each node is available for download. For the time being, there is no version control for any of the files. Just download what you'd like. If you want to provide a patch or a fix for anything, contact me via email with your suggestions. If more than one person starts working on the code, something will be set up..

Hardware

The hardware of project2891 is a combination of computers (modest spec), and Arduino micro-controllers which are connected to devices of my own design. Each node is different, but the construction methods are kept as simple and generic as possible, using mostly common hand and power tools. In most cases, the designs can be easily adapted to other materials to better match the materials available.

The electronics used in the hardware are typically simple on / off sensors and switches. Binary relationships are easier to understand, and are the essence of the digital condition. The nature of the mechanisms are such that the sending or receiving of the digital signal results in an analogue artifact. This could be thought of as an extremely low sample rate.

Arduino

Arduino provides the main interface between the mechanics of a node and the digital. Arduino is a an Amtel atmega based micro controller board and accompanying IDE (integrated development environment) . The board is very flexible in how it may be used, and is reasonably priced. Because it's design and software are released under a FLOSS style license, it's not difficult to construct your own implementation of the board, and have it be compatible with project2891.

PD loves Arduino

Pure Data and Arduino make an ideal combination for rapidly developing this kind of work. Both are relatively easy to learn, and are proving to be favorites among artists who like to hack on things.

The reason they make such a good team is Pduino. This is a PD object and matching Arduino firmware that allows you to control almost all the function of the Arduino board from within PD. There are some limitations, such as using the software serial functions of Arduino. However, the biggest advantage is not having to learn two programing languages to collaboratively engage with the project. As long as the Arduino is going to be connected to a computer anyway, this is a great way to keep things simple. Of course, things are structured in such a way that neither of these are a necessity.

Linux and other operating systems

All of the software / firmware used in project2891 is developed and tested on Ubuntu Linux (currently version 8.04 LTS - Hardy Heron). All the programs used can easily be installed on Ubuntu. If you are running any other version of Linux, you shouldn't have much trouble. Just take a look at the list of required programs, and install them on your computer. Because of their similar "UNIX like" roots, there is little problem installing the same software on a recent version of Apple's OS X. If you are having trouble with OS X playing nicely with project2891, send me an email. I'm pretty much hopeless when it comes to MS Windows XP / Vista. I don't use them, and consequently are not tested in any way with project2891. Project2891 doesn't use any exotic or unusual software, so with a little tweaking, everything should work OK. If you are using either XP or Vista, you are probably more qualified than I am to figure things out.

If you have an Intel base computer, and want to try out project2891 without installing any software on your computer, a "liveDVD" based on Ubuntu which has all the project2891 programs and files pre-installed is available. This allows you to try out the project without having to mess with your existing installation. To save on limited bandwidth, please send me an email to request your free disc.

I've done my best to keep things simple and safe to run on your machine. However, like pretty much all free software, I can make no guarantees that what I've done here won't break your computer or kill your pets.