Alex McLean

Making music with text

smoothdirt

by Alex on March 14, 2012

I’ve got some sounds out of my new live coding system, codenamed “smoothdirt”.  Here’s an mp3 for you.  The sounds are triggered with some C and structured and scheduled with some Haskell.  Plenty more to do, but already really happy hearing embedded juxtoposition of timescales, smooth multichannel panning (2 channels in this test, but I’m playing on a quadrophonic cinema soundsystem at lovebytes) and sample accuracy, which I test at the end by playing a kick drum sample a lot.

My new representation also allows me to treat musical structure as both a discrete pattern and a continuous signal, which I’m very happy about, but haven’t explored the depths of yet..

Anyway with a few tweaks and effects it’ll be ready for the algorave in London this weekend.

Events

by Alex on March 13, 2012

A busy couple of weeks ahead:

  • This weekend (Saturday 17th March) I am playing as part of slub at a live algorave in London.
  • Then the following weekend I’m doing a few things at the 2012 Lovebytes festival in Sheffield:
  • Friday 30th March – A performance at PRISM in Sheffield, in collaboration with choreography hacker Kate Sicchio.
  • Plus heads up for April 5th, a live coding seminar followed by performances at King’s College, London.

Patterns in Haskell revisited

by Alex on March 6, 2012

A while back I came up with this way of representing musical patterns as pure functions in Haskell:

data Pattern a = Pattern {at :: Int -> [a], period :: Int}
These patterns can be composed nicely with pattern combinators, creating strange polyrhythmic structures, see my earlier post for info.
This turned out just great for representing acid techno, see for example this video of people dancing to Dave and I.  I was using Tidal which uses a representation similar to the above (and Dave was using his lovely SchemeBricks software).
However lately I’ve been wanting to make music other than acid techno, in particular in preparation for a performance with Hester Reeve, a Live Artist.

After a lot of fiddling about, I seem to be settling on this:

(more →)

PhD Thesis: Artist-Programmers and Programming Languages for the Arts

by Alex on February 22, 2012

With some minor corrections done, my thesis is finally off to the printers.  I’ve made a PDF available, and here’s the abstract:

We consider the artist-programmer, who creates work through its description as source code. The artist-programmer grandstands computer language, giving unique vantage over human-computer interaction in a creative context. We focus on the human in this relationship, noting that humans use an amalgam of language and gesture to express themselves. Accordingly we expose the deep relationship between computer languages and continuous expression, examining how these realms may support one another, and how the artist-programmer may fully engage with both.

Our argument takes us up through layers of representation, starting with symbols, then words, language and notation, to consider the role that these representations may play in human creativity. We form a cross-disciplinary perspective from psychology, computer science, linguistics, human-computer interaction, computational creativity, music technology and the arts.

We develop and demonstrate the potential of this view to inform arts practice, through the practical introduction of software prototypes, artworks, programming languages and improvised performances. In particular, we introduce works which demonstrate the role of perception in symbolic semantics, embed the representation of time in programming language, include visuospatial arrangement in syntax, and embed the activity of programming in the improvisation and experience of art.

Feedback is very welcome!

BibTeX record:

@phdthesis{McLean2011,
    title = {{Artist-Programmers} and Programming Languages for the Arts},
    author = {McLean, Alex},
    month = {October},
    year = {2011},
    school = {Department of Computing, Goldsmiths, University of London}
}

RIS record:

TY  - THES
ID  - McLean2011
TI  - Artist-Programmers and Programming Languages for the Arts
PB  - Department of Computing, Goldsmiths, University of London
AU  - McLean, Alex
PY  - 2011/10/01

Motivation

by Alex on February 15, 2012

Now here’s an hour well spent, Bret Victor giving a talk on “Inventing on Principle”:

He demos some really nice experiments in live interfaces, including some javascript live coding with a nice implementation of time scrubbing.  He uses this great work as an illustration for his main point though, which is about why he has done these things. He puts forward a vision of the inventor as someone who isn’t motivated by building a career, making a startup, or engineering challenges in industry or research, but clear moral principles.

Among others he mentions Richard Stallman, which reminded me of the MOTIVATION file that comes with emacs.

Anyway watch it — I’m going to watch it again before commenting further..

Live notation

by Alex on January 30, 2012

I’m really excited to be working with Hester Reeve on a project funded by the AHRC digital transformations call, bringing together live artists and live coders for a dialogue, hopefully leading to new ideas and approaches within both fields.  Live artists work with their body as a medium, and live coders work with abstract symbols, and it will be fascinating to see how these seemingly completely different practices approach one another.

The project is called Live Notation: Transforming Matters of Performance, and the first event will be a performance involving Hester and I on Thursday 22nd March as part of the soon-to-be-announced LoveBytes festival (more on that in my next post).  We are not sure what we will do yet, except it will be in a large cinema and involve sound-based dialogue in some way.  It will be an experimental performance (as in risky and prone to failure) and we’ll learn something whatever happens.

Later on we will be holding workshops leading to a big conference/performance event around June/July.

Computational thinking

by Alex on January 11, 2012

Some great news today that the UK school ICT programme is going to be replaced/updated with computer science.  As far as I can tell a lot of schools have actually been doing this stuff already with Scratch, but this means targeting teacher training for broader roll-out.

This has immediately triggered bike shedding about the issue of which programming language is used.  To quote twitter, “iteration is iteration and variables are variables. Doesn’t matter if its VB, ASP, Java, or COBOL”.  Apparently one of these should be used because they are “real languages” and Scratch isn’t.

This brought to the fore something I’ve been thinking about for a while, “computational thinking”.  This seems to most often be used interchangeably with “procedural thinking”, i.e. breaking down a problem into a sequence of operations to solve it.  From this view it makes perfect sense to focus on iteration, alternation and state, and see the language as incidental, and therefore pick a mainstream language designed for business programming rather than teaching.

The problem with this view is that thinking of problems in terms of sequences of abstract operations is only one way of thinking about programming languages.  Furthermore it is is surface level, and perhaps rather dull.  Ingrained Java programmers might find other approaches to programming difficult, but fresh minds do not, and I’d argue that a broader perspective would serve a far broader range of children than the traditional group of people who tend to be atypical on the autistic spectrum, and who have overwhelmed the programming language design community for far too long.  (This is not meant to be an outward attack, after all I am a white, middle-aged male working in a computer science department..)

I’d argue then that computational thinking is far richer than just procedural thinking alone.  For example programmers engage mental imagery when they program, and so in my view what is most important to computational thinking is the interaction between mental imagery and abstract thinking..  Abstract procedures are only half of the story, and the whole is far greater than the sum.  For this reason I believe the visuospatial scene of the programmer’s user environment is really key in its support for computational thinking.

Computation is increasingly becoming more about human interaction than abstract halting Turing machines, which in turn should direct us to re-imagining the scope of programming as creative exploration of human relationships with the world.  In my view this calls for engaging with the various declarative and multi-paradigm approaches to programming and radical UI design in fields such as programming HCI.  If school programming languages that serve children best end up looking quite a bit different from conventional programming languages, maybe it’s actually the conventions that need changing.

There must be no generative, procedural or computational art

by Alex on January 1, 2012

This blog entry feels like a work in progress, so feedback is especially encouraged.

Lately I’ve been considering a dichotomy running through the history of computer art.  On one side of the dichotomy, consider this press statement from SAP, the “world’s leading provider of business software”, on sponsoring a major interactive art group show at the V&A:

London – October 08, 2009 – Global software leader SAP AG (NYSE: SAP) today announced its exclusive partnership with the Victoria and Albert (V&A) Museum in London for an innovative and interactive exhibition entitled Decode: Digital Design Sensations. Central to the technology-based arts experience is Bit.Code, a new work by German artist Julius Popp, commissioned by SAP and the V&A. Bit.Code is themed around the concept of clarity, which also reflects SAP’s focus on transparency of data in business, and of how people process and use digital information.

As consumers, people are overwhelmed with information that comes from a wide variety of electronic sources. Decode is about translating into a visual format the increasing amount of data that people digest on a daily basis. The exhibit seeks to process and make sense of this while engaging the viewer in myriad ways.

As far as art sponsorship goes, this is pretty damn weird.  The “grand entrance installation” was commissioned to reflect the mission statement of the corporate sponsor.  I found nothing in this exhibition about the corporate ownership and misuse of personal data, just something here about helping confused consumers.

Of course this is nothing new, the Cybernetic Serendipity exhibition at the ICA in 1968 was an early showcase of electronic and computer art, and was similarly compromised by the intervention of corporate sponsors. As Usselmann notes, despite the turbulence of the late sixties, there was no political dimension to the exhibition.  Usselmann highlights the inclusion of exhibits by sponsoring corporations in the exhibition itself as excluding such a possibility, and suggests that this created a model of entertainment well suited for interactive museum exhibits, but compromised in terms of socio-political engagement.  Cybernetic Serendipity was well received, and is often lauded for bringing together some excellent work for the first time, but in curatorial terms it seems possible that it has had lasting negative impact on the computer art field.

As I was saying though, there is a dichotomy to be drawn, and Inke Arns drew it well in this 2004 paper.  Arns makes a lucid distinction between generative art on one side, and software art on the other.  Generative art considers software as a neutral tool, a “black box” which generates artworks.  Arns gets to the key point of generative art, that it negates intentionality: the artworks are divorced from any human author, and considered only for their aesthetic.  This lack of author is celebrated by generative artists, as if the lack of cultural context could set the artwork free towards infinite beauty.  Arns contrasts this with software art, which instead focuses on software itself as the work, therefore placing responsibility for the work back on the human programmer.  In support, Arns invokes the notion of performative utterances  from speech act theory; the process of writing source code is equivalent to performing source code.  Humans project themselves by the act of programming, just as they do through the act of speech.

Arns relates the generative art approach with early work in the 60s, and software art approach with contemporary work, but this is unfair.  As could be seen in much of the work at Bit.Code, the presentation of sourcecode as a politically neutral tool is still very much alive.  More importantly, she neglects similar arguments to her own already being made in the late sixties/early seventies.  A few years after Cybernetic Serendipity, Frieder Nake published his essay There should be no computer art, giving a leftist perspective that decried the art market, in particular the model of art dealer and art gallery selling art works for the aesthetic pleasure of ruling elite. Here Nake retargets criticism of sociopolitical emptiness against the art world as a whole:

.. the role of the computer in the production and presentation of semantic information which is accompanied by enough aesthetic information is meaningful; the role of the computer in the production of aesthetic information per se and for the making of profit is dangerous and senseless.

From this we already see the dichotomy between focus on aesthetic output of processes, and focus on the processes of software and its role in society. These are not mutually exclusive, and indeed Nake advocates both.  But, it seems there is a continuing tendency, with its public beginnings in Cybernetic Serendipity, for computer artists to focus on the output.

So this problem is far from unique to computer art, but as huge corporations gain ever greater control over our information and our governments, the absence of critical approaches in computer art in public galleries looks ever more stark.

So returning to the title of this blog entry, which borrows from the title of Nake’s essay, perhaps there should be no generative, procedural or computational art. Maybe it is time to leave generative and procedural art for educational museum exhibits.  I think this is also true of the term “computational art”, because the word “computation” strongly implies that we are only interested in the end results of processes that halt, rather than in the activity of perpetual processes and their impact on our lives.  Is it time to return to software art, or processor art, or turn to something new, like critical engineering?

Best known and wrong: Dreyfus and Dreyfus

by Alex on December 21, 2011

Since dipping my toe into cross-disciplinary research, I’ve noticed that it seems the best known results of a field are often derided or ignored within the field.  For example:

  • Speech perception: Motor theory – based on outmoded idea of there being a special module that evolved for speech perception and action
  • Linguistics: Inuit words for snow – it turns out that they don’t have a particularly large number
  • Neuropsychology: We draw things using one side of the brain and do maths with the other – it’s a bit more complicated than that I believe, although I’d like to know more..
  • Psychology of emotion (?): Kübler-Ross model – the model of five stages of grief doesn’t have any experimental basis
  • Music psychology: Mozart effect – rather questionable hypothesis, with conflict of interest, that doesn’t seem to be replicable (except to the extent that it’s also true of death metal). I’ve not met any music psychologists who take this at all seriously.

I’d be interested to hear of more examples..

I guess research is nuanced, and ideas that can be understood from bite-sized quotes get ingrained in folklore over a couple of decades and are impossible to dislodge if/when they are superseded.

These things really get in the way of understanding of a field though. For example Alan Blackwell’s pioneering masters module on programming language usability found its way on to reddit lately.  One commenter couldn’t understand how the course text could have a chapter on “Acquisition of Programming Knowledge and Skills” without referencing the Dreyfus model of skills acquisition.  The Dreyfus model is detailed in a 30 year old paper, which while is enjoyable to read, does not introduce any empirical research, makes some arbitrary distinctions and does not seem to figure in any contemporary field of academic research.  In their paper, Dreyfus and Dreyfus suggest  that people should not learn by exploration and experimentation, but by reading manuals and theoretical instruction structured around five discrete modes of learning.  It is surprising then that this model appears to be highly regarded among agile development proponents, who through a lot of squinting manage to fit it to the five stages of becoming an agile developer.  For example this talk by Patrick Kua somehow invokes homeopathy in support of this rather fragile application of Dreyfus’ air pilot training manual design to agile development.

On the surface this seems fairly harmless pseudoscience, but for anyone trying to take a more nuanced view of applied research in software development practices, it can be extremely irritating.  There is no reason why Rogalski and Samurçay should mention Dreyfus’s model in their review of programming skills acquisition, but because it is fashionable amongst agile development coaches, its absence seems unforgivable by agile practitioners.  This reddit thread is a clear case where pseudoscience can act as a serious barrier in dialogue between research and practice.

That said, I’m quite naive both about agile development and education studies, so am very happy to be enlightened on any of the above.

To add on a positive note, perhaps the answer to this is open scholarship.  As campaigning and funding organisations lead us towards a future where all public funded research is freely available, practitioners are increasingly able to immerse themselves in real, contemporary research.  Perhaps then over-simplistic and superseded ghosts from the past will finally be replaced, so we can live our lives informed by more nuanced understanding of ourselves.

PhD Viva and Silicone Bake

by Alex on December 1, 2011

Last month was a bit crazy, lots of grant applications in the air and amongst it all my PhD examination with Alan Blackwell and Matthew Fuller.  Both are leaders in different fields, it was a real privilege for me to have time with them.  It turned out to be a really enjoyable discussion, and they identified only minor corrections which should take me a couple of days to fix..  So a pass!

November also included a fine trip to Piksel festival, where I performed as “Silicone Bake” with Jake Harries.  Here’s our blurb:

A new collaboration between singer/guitarist Jake Harries and live coder Alex McLean, a bridge between semi-improvised pop and live coded techno, brought to life with unsolicited tales of sex, death and capitalism.

With live coding increasingly widespread in arts festival calls, live coders must confront the new normality of their practice. Live coders have always argued for focus on the human role in the algorithm, but now they leave the comfort zone of the radical, they find themselves at last on equal terms with traditional musicians who can touch and resonate with their instruments rather than try to weave their music from the functional compositions of computer language.

Through this collaboration ‘Silicone bake’, Jake and Alex explore the algorithmic limits of the 3.5 minute pop song, distracting themselves from the task with the constraints of spam, ignoring the question of the human in the algorithm to celebrate love, death and counterfeit watches.

All lyrics will be taken from spam emails and sung live. All guitars will be plucked and strummed live. All generative algorithms will be edited live. Nobody will die.

It turned out nicely and was a lot of fun, here’s a write-up from pixelache:

“Silicone Bake” -performance ended the saturday evening at USF with a wonderful contrast from the predominant “corporeal volume” of the previous performances with singing, acoustic guitar & live-coded beats & bases. Live coder Alex McLean with his Tidal music improvisation software collaborated with singer/guitarrist (&FLOSS advocate) Jake Harries. The lyrics of the “3.5 minutes pop-songs”, sung beautifully by Jake Harris, were all from spam emails, with themes of love, death and counterfeit watches. Reading the projected Alex’s coding on Tidal was surprisingly effortless and entertaining. The low light & mellow sounds carried us back in time to the intimate small-club-feel of the best MTV Unplugged gigs in mid 90′s, only to be interrupted by frequent and hysterical bursts of laughter from the spam lyrics.

We also improvised a cover version of the Free Software Song with Jag, a spooky, late night cafe performance fuelled by fine Norwegian pancakes..