Category: events

Coding with knots

My first Quipu attempt

Being inspired by Quipu, and also Dave and Julian‘s work on visualising and sonifying Quipu data (their “coding with knots” paper is here, will link to preprint soon..), I thought I’d have a go at making some. Quipu seem to be ancient databases, used to archive and communicate information. They were in use by Andean people over hundreds of years. The goal is to encode Tidal patterns in a similar manner, which I think was also Dave’s idea. So far, I think this should work very well.. Some initial (and of course, naive) thoughts about trying to make Quipu are below.

Representation of a real Quipu (Meyers Konversations-Lexikon, 1888)

I started with four-ply 100% cotton handknit yarn, which was less fluffy and easier to work with than sheep’s wool. It did cross my mind to try to find Alpaca wool for authenticity, but it was not very easy to find, and I read that cotton was used in the Quipu too. After a bit of knotting things weren’t going too well, due to the stretchiness of the yarn it was difficult to get the knots close together, and it was all a bit fiddly.. Especially for the ‘end knot’ in a number which requires you to pass the yarn through its own loop up to nine times, securing itself in neat spiral. I wondered whether this yarn had the right structure for the task..

Looking closer at the diagrams and photographs of Quipu on-line though, it became clear that the Quipu yarn was ‘doubled’ – folded in half and twisted together to create a loop at one end, which could then be used to attach to another piece of yarn with a ‘cow hitch’. I found I could double small pieces of wool quite easily by hand, by twisting it with the direction of the existing twist until I met resistance, folding the yarn in half, and letting it twist together. Happily, the result was a yarn which was not only easy to hitch (and un-hitch) from another piece, but also was much easier to work with, in terms of tying the knots and getting them to sit in the right place, with a little help from a 20mm crochet hook.

It seemed important to start knotting at the bottom of the doubled yarn, otherwise it would start to unravel back to its original 4-ply. In terms of the Quipu representation of natural numbers (which handily, is base ten), this meant starting by knotting the unit, and then the tens, and so on. Once attached, the threads were easy to move along the thread they were attached to, and un-hitch if necessary.

I’ll need a lot more practice to make the knots more ‘readable’. Yarn is twisted in a particular direction – in this case the ‘Z’ rather than ‘S’ direction, so perhaps the knots have to match in terms of whether they’re right or left handed. There is a suggestion that the direction of twist and handedness of the knot is significant in terms of information storage, I’m a bit sceptical about this, as least they appear to be dependent on one another. For now I’m putting a little bit of twist into the yarn as I tie the knot to make sure the ply doesn’t ‘open up’.

Anyway, I think I have some grasp of how this can work now. The next task is to try to notate Tidal patterns. The ability to hitch threads to the side of others should make knotting together the parse tree of a TidalCycles pattern fairly straightforward. I’d also like to use beads to represent things which aren’t directly numerical, such as sound samples — Hama beads look perfect for this, the right size, available in bulk in a wide range of colours, and cheap! Hopefully I’ll have something to show at my lunchtime talk at the ODI this Friday.

*Update* I did indeed manage to transliterate some Tidal code into knots and beads, in particular taking this by Kindohm:

jux (|*| speed "1.5") $ foldEvery [3,4] (0.25 <~) $ stack [
  s "less:2([3 5]/2,8)" # unit "c" # speed "4",
  s "less(3,8)" # cut "1" # up "{0 -3 1}%32",
  s "{~ [~ cp] ~ less:3/2 ~}%4",
  s "[less:1*2 less:1]*2"]

I created this:

I’ll post again with more explanatory detail, but from my notes..

  • Knots are numbers, including a slightly awkward attempt at representing rational numbers
  • Values which are not directly numerical are represented with beads. Samples are yellow for cp and purple for feel (the sample number is a number, so is a knot). As an exception, single letters of the alphabet are treated as ordinal numbers and so represented with knots, e.g. c = 3.
  • Function names are a bead followed by a brown bead. In particular, red brown for jux, pink brown for foldEvery, blue brown for ~>
  • Subpatterns and functions-as-parameters are separate strings tied on to the side (currying works out fine)
  • Parameter names are a bead followed by a black bead. red black for sound, green black for cut, blue black for up, pink black for speed.

The parse tree comes out rather nicely I think, and is almost a complete representation of the original pattern (I decided to overlook the difference between # and |*| for this first attempt). I’m trying to minimise the use of beads, treating colours as logograms feels like cheating, simply making a text out of an alphabet of colour. The branching structure is what takes it away from one dimensional text though, and into something which is much closer to that of a running computer program (particularly a pure functional one like a Tidal pattern).

The next step is to try to compose a new pattern directly as string, to explore its affordances.. Maybe this could inspire a breakthrough in usability for my Texture interface for Tidal..

Stream to Algorave Montréal

A recording of a stream I did to Algorave Montréal this morning

TEDx Hull

Looking forward to talking about Algorave, live coding, TidalCycles and a cultural grounding for it all in pattern at TEDx Hull tomorrow. I have been a bit unsure whether the showbiz 15 minute talk was for me but preparing for it has been a nice exercise in organising my thoughts, and I am now really looking forward to it. I’ll do some semi-improvised live coding, hopefully won’t crash and burn.. The rest of the line-up is really interesting too.

Spring things

Things coming up in 2017..

  • Running Tidalclub Sheffield with Lucy Cheesman – every third Thursday of the month, the third edition this 16th March
  • 17th Mar – Algorave wearefive – celebratory online stream with 48 performances beaming from round the world + clock
  • 23 Mar – Algorave Berlin – a really nice line-up, I’ll be playing solo
  • 31 Mar – TEDx Hull – a talk about algorave, and algorithmic dance culture
  • 22 Apr – Eulerroom 6 – haven’t done one of these for a while.. Hosted by Tidal Club, I’ll be organising with Lucy but not actually playing.
  • 28 Apr – Algorave Leeds – another huge line-up, live coding solo again
  • 16 May – Taking part in a panel session at Thinking Digital Arts, Gateshead
  • 26/27 May – Running a two-day TidalCycles workshop with the multi-channel system at Call&Response in South London
  • 2 Jun – Back to the Open Data Institute in London, launching the outcomes of my residency there
  • 7 Jun – An evening TidalCycles workshop at London Music Hackspace, Somerset House
  • 9 Jun – Algorave activity as part of No Bounds festival, Hope Works Sheffield, I’ll be performing with Joanne
  • 23 Jun – Talk and probable algorave activity at Bump festival, Brussels
  • 9 Jul – Canute performance at the Bluedot festival algorave, Jodrell Bank
  • 18-20 Aug – Another collab with Joanne at the Green Man festival algorave in Einstein’s Garden
  • 9 Sep – Organising evening performances at FARM Workshop 2017, Oxford
  • 8-12 Nov – Organising Algomech festival in Sheffield again

More TBA

Musicbox controller

For upcoming collaborations with musicbox maestro David Littler, and to explore data input to Tidal as part of my ODI residency, I wanted to use one of these paper tape-driven mechanical music boxes as a controller interface:

You can see from the photo that I have quite a messy kitchen. Also that I’ve screwed the musicbox onto a handmade box (laser cut at the ever-wondrous Access Space). The cable coming out of it leads to a webcam mounted inside the box, that is peeking up through a hole underneath the paper as it emerges from the music box. With a spot of hacked-together python opencv code, here is the view from the webcam and the notes it sees:

Now I just need to feed the notes into Tidal, and use them to feed into live coded patterns. Should be good enough for upcoming performances with David tonight at a semi-private “Digital Folk” event at Access Space and another tomorrow in London at the ODI lunchtime lecture.

By the way the music in the above was made by my Son and I clipping out holes more or less at random. The resulting tune has really grown on me, though!

UPDATE – first live coding experiment:

Algorithmic and Mechanical Movement

flyerI’ve been working on the Festival of Algorithmic and Mechanical Movement (AlgoMech for short) lately, curating it with Lovebytes and funded by Sheffield Year of Making and Arts Council England. It’s going to be a big week for me, bringing together lots of strands into one festival featuring concerts, a day symposium, hands-on workshops and an algorave. It’s diverse enough to be a bit hard to sell but is exploring a bit of a different take on technology in performance, a long view on algorithms and machines, with focus on the people involved. If it gets good audience support then we’ll be doing our best to make it an annual event, and so I’d absolutely love it if you came along, and/or helped spread the word via twitter, facebook or by sharing the algomech.com website, this nice write-up, or the video below or by telling someone nice about it who you think might be interested. Thanks a lot!

Thinking Out Loud exhibition

Cm26290WYAAlLkfThe Thinking Out Loud exhibition is up! I’ve been working on this with curator Hannah Redler, during my ongoing sound-artist-in-residence at the Open Data Institute in London (supported by SaM). We’ve brought together a great group show consisting of work from some of my friends, collaborators and inspirations, in particular Felicity Ford, David Griffiths and Julian Rohrhuber, Ellen Harlizius-Klück, Dan Hett, David Littler, Antonio Roberts, Sam Meech and Amy Twigger-Holroyd.

There were many other artists we wanted to invite and include, but these pieces sit very well together to create an alternative view on digital art and open data, for example presenting weaving and knitting as digital art forms, and Precolumbian Quipu as unfathomable data.

The exhibition is free to visit by appointment, full info here.

Here’s some photos gleaned from twitter (will improve on these next time I’m down!).

Sound to light for light to sound

xynaaxmue
xynaaxmue

I collaborated with xname on a performance as xynaaxmue on Saturday, audio+video up soon I hope.. xname performs with circuits that turn light into sound, improvising noise using stroboscopic lights. I was live coding with tidalcycles, as ever.

In the past I’ve created flashing patterns on an external monitor for xname’s circuits to feed off, check here for a recording of that one. This time I wanted to control a pair of RGB flash panels over DMX.. I used a tinkerit DMX hat for the arduino, officially retired but you can still find them online and the library is downloadable on github.

I hacked together a Tidal interface the night + morning before the conference, and it worked pretty well.. The Haskell and Arduino code is here.

With everything loaded up, Tidal code like this triggers flashes of light as well as sound:

x2 $ every 2 (slow 2) $ (jux (rev) $ foldEvery [5,7] (slow 2) 
   $ (slowspread (chop) [64,128,32] 
   $ sound "bd*2 [arpy:2 arpy] [mt claus*3] [voodoo ind]"))
  # dur "0.02"
  # nudge (slow 4 sine1)

The basic features:
  • sound – (sample name) is translated into colour in a semi-arbitrary way (a mapping which falls back on some crypto hashing)
  • pan – (kind of) pans between the two lights
  • dur – controls the duration of the flash
  • the flashes have a linear fade, which works across chop and striate
  • it is kind of polyphonic but the colour mixing can be improved.. mixing coloured light seems to get into the realm of philosophy though !

Will update with documentation of the performance itself when it’s up.

Forkbomb.pl

forkbombThis is how it began, with a forkbomb.. In 2001, Ade encouraged me to enter the Transmediale software art award, that he’d won the year before. I ended up submitting this:

my $strength = $ARGV[0] + 1;

while (not fork) {
  exit unless --$strength;
  print 0;
  twist: while (fork) {
    exit unless --$strength;
    print 1;
  }
}
goto 'twist' if --$strength;

It basically creates a process that keeps duplicating itself, while printing out zeros and ones, creating patterns from a system under heavy load. It won (half) the prize, and ended up being part of the touring Generator exhibition curated by Geoff Cox and Tom Trevor, alongside Adrian’s auto-illustrator and work by other pretty amazing artists.

I’ve been co-curating the Thinking Out Loud exhibition at the Open Data Institute, and we’ve ended up including it in a couple of different forms.. A print of the original forkbomb output that appeared on the Generator exhibition guide, the (now rather scruffy) fanfold paper output that was printed during that exhibition, and a new print showing outputs from a range of different computers and operating systems contributed by some brave people (download PDF).

The original script, including some background and instructions for running it, is here.

Project stock check

Not much time to reflect right now, but taking some time to think about ongoing and upcoming activities at least..

Making Spicule LP is going pretty well, the crowdfund is past the halfway mark, the graphic and hardware design coming together with ace collaborators I’m hardly worthy of working with, and I’m looking forward to spending a lot more time in my studio over the summer.

My Open Data Institute sound art residency isn’t going too badly either, I’ve been working on an exhibition there called Thinking Out Loud with curator in residence Hannah Redler which opens soon. It’ll include great work by Felicity Ford, David Griffiths and Julian Rohrhuber, Ellen Harlizius-Klück, Dan Hett, David Littler, Antonio Roberts, Sam Meech, and Amy Twigger-Holroyd, and a ‘looking screen’ where I’ll be able to make my activities during the residency public, as I move from a research phase to making some strange things. I’ve also brought my 2002 “forkbomb.pl” software artwork out of retirement.

A few writing projects wrapping up – the Oxford Handbook on Algorithmic Music coming out of its formal review stage, a special issue of Textile journal coming together, polishing off an article in a special issue of Contemporary Theatre review with Kate Sicchio about our Sound Choreographer <> Body Code collaboration (deadline tonight, erp).. Plus a collaborative book project on live coding emerging nicely.

Quite a few events coming up, including organising an euleroom event, an Algorave tent at EMFCamp, and looming on the horizon — a new festival on Algorithmic and Mechanical Movement (AlgoMech for short) in November. AlgoMech will be a big focus really, but I’m on the way I’m looking forward to some collaborative performances, an audio/visual noise performance with xname (interleaved as xynaaxmue) at the third iteration of Live Interfaces, and a performance at computer club in Sheffield with Alexandra Cardenas. Hoping to play again with Matthew Yee-King as Canute soon, and maybe Slub will burst out on the scene again as well.

I’m also finding more time to contribute to TidalCycles, which is starting to feel like a proper free/open source project now, with quite a few exciting developments and side-projects spinning off it.

I’ve had a great time there, but am wrapping up my research and teaching work in the University of Leeds, just a spot of supervision to do now and I’m done. All being well, I’ll be joining a new five-year project in a research institution, starting in a couple of months time, lead by Ellen Harlizius-Klück and working also with FoAM Kernow.

That’s about it I think.. It seems like a lot, but it actually feels like everything is coming together and becoming easier to think about.. Especially the AlgoMech festival which brings together just about everything I’ve been doing and interested in since.. forever, really.. and can’t wait to get stuck into a new strand of research.