The Martin Grids

Martin Grid #4

Some further explorations in a code-based response to art. Last year I stumbled across the Agnes Martin retrospective at Tate Modern. I wasn’t aware of her work at all, but one of the joys of Tate membership is encountering surprising things that you wouldn’t normally seek out. I went back again and again, and subsequently read everything I could about her. I can’t really fully explain why her stark abstraction and pale colour palette has got so under my skin, but I haven’t stopped thinking about it since. I don’t mind saying that I got seriously emotional, particularly in the room that contained The Islands.

The mathematical precision of her grid paintings clearly lend themselves well to a programmatic response, and I wanted to explore this a bit in code. As luck would have it, I recently found that the peerless Joshua Davis (who has been a massive influence on my digital life since onceuponaforest.com) has made his Hype for Processing tutorials in generative art available through Gumroad.

I’ll save some specific thoughts about Hype (a framework that I used to use in Flash for music-reactive visuals) for another post as I explore it further, but for now, it’s reintroduced me to Processing as a language, which will, finally, now replace Flash for me as my creative technology tool of choice. There are some barriers to entry – mostly in the translation model which is exactly what Hype sorts out for you. For this task though, I wanted to try and stay away from helpers but have a pretty stark method of producing random grids. Nothing remotely complex about any of this stuff, it’s drawing API 101. What excites me, however, is the ability to reduce the process to it’s most fundamental quality. As I’ve read more and more about Agnes Martin’s life and practise, I’ve been hugely struck by her own quest for an ordered simplicity in describing her perception of the world and how it’s translated into her art. As someone who has had a difficult couple of years, this appeals hugely to me. In fact the very basis for my finding a minor creative renaissance in myself at the moment (musically mostly, but also in my appreciation of art) has been in a careful curation of my mental environment, removing harmful things and managing the remainder into some kind of order.

Agnes Martin grid paintings
Agnes Martin, Untitled

I’d like to extend this response to Martin’s grids into a more procedural practise, humanising the lines and introducing additional elements outside the mathematical constructs which are her artistic work at it’s most reductive. As she moved through her body of work, an emotional element enters into it, mostly through the use of a muted pastel palette. It’s this aspect that I found most appealing about her. We tend to think of ordering a busy, noisy mind (whether through therapies or drugs) as a removal of those hurtful, uncontrollable emotional elements. Where as I have found, both in my own experience, and how I perceive Martin’s work, that the abstraction of that noise into an ordered form – the grid, a schedule, a structure – gives space for an honest opening up of emotional responses. And perhaps a more authentic creativity as well.

Examples of Martin grid outputs:

Martin Grid #3

Martin Grid #3

Martin Grid #5

Martin Grid #5

Gallery – 10 outputs of the Martin Grids

Code (Processing):

int pad;
boolean frame = true;
int cols;
int rows;
int gridCanvasWidth;
int gridCanvasHeight;
int tStart;
int picNum;

void setup() {
size(600,600);
background(235, 235, 235);
smooth();
pad = 10;
tStart = millis();
gridCanvasWidth = width - (pad*2);
gridCanvasHeight = height - (pad*2);
drawGrid();

}

void draw() {

// draw the grid every 5 seconds
int timer = millis()-tStart;
if(timer>5000)
{
tStart = millis();
drawGrid();
}

}

// press S to save a png
void keyReleased(){
if(key == 's' || key == 'S')
{
saveFrame("MartinGrid_"+picNum+".png");
picNum++;
}
}
void drawGrid() {
// function for drawing the Martin Grid on the basis of a random selection of columns and rows
background(235,235,235);
noFill();
cols = (int)random(2,70);
rows = (int)random(2,50);
float spacerX = (float)gridCanvasWidth/cols;
float spacerY = (float)gridCanvasHeight/rows;
float tracker = pad;
stroke(150, 150, 150);
// columns
for (int i = 1; i < cols; ++i) { tracker = pad + (i*spacerX); line(tracker, pad, tracker, height - pad); } tracker = pad; //rows for (int i = 0; i < rows-1; ++i) { tracker += spacerY; line(pad, tracker, width-pad, tracker); } if(frame == true) { stroke(20, 20, 20); rect(pad, pad, gridCanvasWidth, gridCanvasHeight); } }

Code and a response to art

hep

I took some time the other day to go to the Tate Britain and catch the Hepworth display. I had mixed feelings about it tbh – it was rather short and the curation was a bit odd. I didn’t get a sense of time and influence from the layout of the work so it was hard to get the context of each piece. That said, there were some remarkable pieces in there and it’s worth a visit.

I got home and felt like writing some code and so built this response to what I’d seen. I’ve always been struck by Hepworth’s use of string and the similarity with the mathematical models which I used to be fascinated by at the Science Museum when I was a kid. There is, of course, a direct influence which the exhibition touches upon here and there. In this, we see the influence of science on the arts at this time, and a direct reference in her work to non-artistic methods of visualisation.

It’s a bit of a work in progress this, limited to straight lines rather than the arced forms which Hepworth so beautifully renders. Maths is hardly my strong point but I’d like to crack that next.

What did strike me, though, was how like an artist’s process the workflow of writing code can be. You’re building something through process, shaping function and form from the clay of the tooling (language and frameworks). Making aesthetic decisions, sure, but also following a craft to create your vision. I’ve touched on this before in my experience of playing music, but I think it must be even more so with sculpture.

I suspect that all programmers could learn a lot, not only from the practises of artists, but also from their routines and the development of their craft. When I was in Barcelona earlier this year, and spent a hugely emotional afternoon at the Miró museum, I immediately bonded with the idea of Miró’s trips out of Spain to Paris in particular, where he connected with other artists. This is also true of Hepworth, whose associations, particularly with Nicholson (obviously) and Mondrian can be traced through her early work. In that respect, coding communities do a great job in bringing movements in coding together.

One could argue that we’re in a golden age of community-driven quasi-artistic movement in code. In the spirit of innovation, I’d strongly recommend learning a little about how artistic movements have helped shaped the work of great artists, and drawing some inspiration from the organic developments in the history of art which resulted.

Geek R and D

Andy in carbonite 3d print

Here’s the slides from my Reasons To Be Creative elevator pitch. As usual, they don’t make a massive amount of sense without context but you’ll get the general idea. Have to say, this is one of the toughest things I’ve done. That time limit is brutal, particularly if, like me, you’re more comfortable talking around a subject rather than delivering it concisely.

The point I’m mostly making here is that structured learning just doesn’t work for me, and I think it’s almost impossible in your busy work day. Basically, unless you’re a student or very well established in your field, having extended periods of research just simply won’t happen if you try to make a project out of it. However, it’s SO vital to the growth and motivation of creatively-minded teams of all disciplines, that you really must make it a central part of your culture, and the way I’ve always found to work best is to encourage people to indulge their passions.

Many of the speakers at RTBC talked about the importance of play and exploration and I think this is something we only do when we are genuinely interested in achieving something. For my 4 year old, that normally involves beating his brother at something (or with something more often than not). For me, it’s doing geeky cool – I mean come on, who wouldn’t want a model of themselves in carbonite amirite?

It amazes me that, with a little bit of pissing about, I can achieve things like this:

Andy in carbonite 3d print

…and the lessons that we’ve learned to get there mean the team have a fully rounded understanding of both the theory and practice of 3d printing, which we can, in future, utilise for the benefit of our clients.

Thanks to those that caught it. I’m going to be expanding on some of these themes at my Designer’s Fiesta talk later this month if you’re London based.

oh, the Kinect video will probably be missing from the slideshare, you can find it here.

Andy.:

A quick word clock in flash

word clock

My friend Dom Graveson posted this beautiful clock on facebook today under the heading “WANT”. I agree. After some research (dragging the photo into google search to be precise – we are living in the future!) I found that the clock is made by a guy called Doug Jackson and that he makes these things to order, as well as providing open source code and component kits. The clocks are based on Arduino and just look awesome. I will be heavily hinting for a kit for Christmas this year (Mrs Dobson, if you happen to be lurking…).

Anyway, co-incidentally, I’ve been working on an installation for my office building recently and one of the ideas I had was to build an interesting clock for the foyer – a system that the designers in the team could use as a base to design different digital clocks every few weeks or so. In the spirit of this, I thought I’d quickly knock up Doug’s word clock in flash as a prototype. I think it worked out quite nicely…

The Digitonal Ambient Box

ambientbox

The Digitonal Ambient Box

Over the last couple of weeks I have been revisiting my old MAAP player project, bringing it up to speed to take advantage of some new technologies that flash player 11 offers.  Mostly, this was an exercise in keeping up with my talented team and exploring some possibilities for the Flash platform for some upcoming project work, but I also do like to set myself a challenge every once in a while to stop my code chops from atrophying too much in my largely management and creative role here.  Since the MAAP project seems to have fizzled out, I thought I would purpose it to my own musical project, Digitonal.  I’ve been doing quite a lot of ambient stuff recently and thought it would be fun to write something specifically for it.

The primary technologies I’ve used in this rebuild are listed below and it’s been interesting working with these new frameworks which I think offer much to the flash platform.

Starling: A fantastic framework for gpu-accelerated 2D animation, which makes use of the new Stage3D access (formerly known as Molehill).  The smooth animation of the orbs that I’m getting here, and the effortless particle system are both based in Starling and, whilst it has some quirks (largely due to it’s insistence on mirroring the normal Flash display stack) the results you get from it are stellar.  This is pretty much always hitting 60fps without blinking and I know that my previous implementation of this idea had a performance way, way below that.

NAPE: A very promising new physics engine.  I’ve always struggled with the more or less standard Box2D framework and so this is a refreshingly useable alternative which has been a joy to work with.  Strongly recommended for your physics modelling needs.

Tonfall: Andre Michelle’s fantastic as3 audio framework which I’m using here for the sample-perfect looping, pitch control (couldn’t even have conceived of coding something like that myself) and support for WAV samples (which, whilst it obviously places a huge burden on filesize for online delivery, helps raise this into the realm of something approaching what I’d envisage as an artist).

The whole thing took about 2 days to code and I’ll make the source code available on this post as soon as I have some time to refactor so you can point and laugh.  I’m also keeping a very close eye on AIR’s forthcoming Starling support for iOS and I’m hoping to do an iPad port of the application at some point in the near future.

>> Launch the Digitonal Ambient Box (N.B. – the site uses high quality audio samples about 11Mb in total – fast connection and a little patience required!)