Closed vs Open
The designers of commercial software are anonymous behind their brand,
faceless boffins creating features, tools and plugins for a hungry
market. Here artists are constrained within a manufactured, closed
environment, reduced to paying for new possibilities, buying software
to be creative for them. It's too easy to be flattered by the fantastic
results achievable with a minimum of effort, knowledge or
understanding. In reality the creators of the software have encoded
so much of an artistic process that the user is merely guiding it.
The more creative users scratch around the edges trying to push the
software somewhere it doesn't want to go, but still, those edges are
defined by an invisible, anonymous force.
When we come to the F/OSS communities, we find that programmers have
no strong desire or financial imperative to flatter their users, and
it shows in the software. Beyond a couple of clones of commercial
applications, F/OSS artistic software is remarkably open ended.
Whereas closed software packages plugin automatons to generate your
art for you, free software focuses on providing expressive, open ended
tools for artists who want to get their hands dirty.
Some examples
Examples of F/OSS applications thriving in the digital art world
include Processing, Supercollider and Pure Data. There are others
including many general use tools, but these three are comparatively new
examples designed specifically with artists in mind.
Processing (originally known as
proce55ing) is a simplified java-like language built atop of java,
providing an environment for creating visual art. It is startlingly
easy to pick up with with tremendous scope for those willing to put
time in to master it. A tour around its extensive examples provides
many 'wow' moments, where a beautiful visual effect is created by an
algorithm elegantly expressed in a few lines of code. Processing is
not only an excellent entry into programming for a visual artist, but
also an excellent introduction to creating visual art for the
experienced programmer.
Supercollider is
designed to make music. At its heart is a smalltalk-like language but
with c-like syntax. It has a comprehensive library of unit generators
for synthesising and processing sound, and powerful higher level
libraries such as BBCut, which provides an API for automated breakbeat
cut-ups. Previous versions of Supercollider were released as
commercial shareware, but the latest version 3 has a fully open source
license. One of the most exciting aspects of Supercollider 3 is the
provided livecoding abilities, allowing the musician to change their
software while it is running, hearing the changes they make
immediately without any break in sound. Livecoding allows fully
engaged authorship of software-generated music as well as some very
live performances. More information about livecoding can be obtained
from the organisation for the promotion
of live algorithm programming. For more specific information
about livecoding with Supercollider, consult its JITLib library.
My final example is Pure Data.
Unlike the previous two examples, Pure Data is not a textual language,
but it is just as open ended. In Pure Data you create 'patches'
rather than programs, by connecting together boxes, each of which
carries out an operation on the data that passes through it. The
result is a graph through which data flows. The final destination is
most often an audio output, however Pure Data is also increasingly
popular among visual artists and VJs, using libraries such as GEM and
pdp to create live visuals. Although Pure Data doesn't require you to
learn a programming language as such, the operations it allows are
very low level. Luckily the examples are excellent, but to fully understand and go beyond them you'll
need to pick up some understanding of sound synthesis or visual models.
If you want to make the most out of the any of these applications you
have to invest some time and effort into learning them. Initially
this requirement seems old fashioned and unnecessary, until you
compare them with traditional instruments such as a paintbrush or
violin. The mixing and use of painting oils, or the bowing and
fingering of a violin both take years to master. Similarly, you
wouldn't expect to express yourself fully in a foreign language until
you had properly learned it. But with mastery of a medium comes the
possibility of richer artistic expression.
Application programmers vs end-user programmers
Who makes the software for the artistic user? In truth I think it's
false, even insulting to suggest that the creators of software are
less creative than those who use it. If both those who create
software and those who use it are to some extent programming, then the
line between them blurs. One creates an environment, another creates
an environment within it; an operating system contains a programming
language that hosts a computer program that creates a piece of music.
The only reason that we might be more likely to call the final step
art is because it has entered the realm of our physical senses.