Blog

Week of Patching Day 2

July 6th - 12th was a self-directed Week of Patching, initiated by Paloma Kop.

“Week of Patching by Paloma Kop, remixed to add colour by me”

Week of Patching is a playful invitation to spend a week, in parallel with other people across the internet, engaging with a patching-based practice.

[…]

Each day, create a patch and then make a recording of its output.

At the end of the week, take pieces of all of those recordings and edit them together into a single composition. (It doesn’t have to be long; for example, you could take 30 seconds of each patch in series to create a 3.5 minute composition.)

From my earliest days of doing creative coding I have been really interested in patching environments, specifically Pure Data. I like how I can trace the flow of data by simply looking at patch cable, even if the actual patch ends up being a mess!

Since 2023 I’ve also been into hardware video synthesis via LZX/Syntonie Eurorack modules, which I really love for the same reason, but also because, unlike software, you can really just plug something in and see what happens. As long as you’re not literally giving something too much electricity it’s pretty hard to generate no output.

I go through phases of being really into patching and then not touching it for weeks or months. Seeing the announcement of Week of Patching I was excited to get the motivation to do it again. Alas, life always finds a way to interfere with plans, so in the end I only did day #2.

The tl;dr is that I wish I dedicated more time to experimenting and not try and rush something to meet a deadline. I should also try and decide on a recording setup ahead of time. And finally, I also think the heatwave massively affected my ability to think and deal with technical issues.

Cardinal (VCV Rack), TidalCycles, monome grid

Creating the Cardinal patch was initially quite challenging. I had big ideas but hadn’t patched in a month or two so spent most of time was spent remembering what modules do. Eventually I settled on a very simple but effective ambient pad sound with some modulation.

To create melody I had a couple of options. In most situations I would just use TidalCycles to generate a melody and send midi to Cardinal, but in the spirit of experimentation and using things I already own I opted to use the monome grid. Early in 2026 they released iii, which basically turns the grid into a standalone instrument. I loaded it with the wake script (a standalone variation of awake) which let me play some nice generative melodies.

Next I wanted to add some percussion and granular sounds using TidalCycles. On paper this was very simple but in trying to keep everything in sync I resurfaced a bug that I discovered in 2020. TidalCycles can use AbletonLink for its clock and bpm syncing. Carla is a plugin host (think virtual pedalboard) which can also use AbletonLink. What this means is that any vsts/lv2s that you load in Carla that use clock/bpm will now all be in sync with TidalCycles. Great!

I used Carla to host the Cardinal lv2 plugin. In Cardinal I used delay modules which used the host’s (Carla) bpm. So far no issues. I then wanted to send the clock, bpm and transport information to the monome grid so that it’s melody (generated via wake) would be in sync with everything else. x42 had made a very useful plugin for sending clock, transport, and bpm over midi called mclk.

There is, however, one massive catch: The moment you enable “Use Ableton Link” in Carla the mclk plugin stops working. Or maybe it’s Carla that stops working. Either way, the result is that the clock/bpm doesn’t get sent to the monome grid. When I reported this “bug” in 2020 a fix for mclk was proposed but ultimately not implemented, with x42 saying that it’s an issue with Carla. Yay. With time running out and the heatwave reducing my patience for tech issues to zero I just ditched the idea of integrating TidalCycles.

Video patching

I similarly had quite big ambitions for creating visuals with the video synth which failed to materialise. What I wanted to do was control my video synth modules with either the monome grid or Cardinal. I would have achieved this by using the Univer Inter module to convert usb midi to CV, and then the SCA-5 Voltage Scaler to scale those voltages down to 0-1v.

I didn’t want to do audio-reactive visuals, but instead have the visuals be closely tied to the audio. In reality, like the audio, I rushed and put a bit too much pressure on myself to create something interesting. A thing that I have learnt about my creative process is that some of my best or most fun work comes out of free experimentation. The moment that I am faced with any deadlines and expectations I essentially freeze up.

I remember reading an interview with Sarah GHP where she talks about her process and has a similar outlook:

So have a goal, have a bunch of happy accidents, and then try to understand things so you can recreate the accidents. You will have more accidents and grow your list of things to understand.

[…]

So, I guess my advice is:

  • Look for your starting point. What do you actually like? What do you like that isn’t what everyone else likes? Being a bit of a hater (in your head!) is also a good way to find a starting point. Don’t be mean, but it is useful to know what you do not want to do, especially if you aren’t sure what you want to do.
  • Go out and fuck up a lot.
  • Find a balance between exploration and deliberation. Don’t try to save everything because you will drive yourself mad.
  • Focus on understanding and avenues will open up around that.

The video patch I created was still really nice and gave me room to play, but there’s definitely some playfulness missing.

Patching it together

I haven’t done many at-home recordings of synth jams but this seemed like a good opportunity to do so even if the conditions were not ideal. An issue that I, and many others living in small apartments, faced is I don’t have a dedicated space where I can leave all of my equipment permanently set up. I have to wait for any shared space to become available and then reconstruct my setup each time. It’s inconvenient and takes time away from creating.

Eventually I found a spot on the dining table to film. I spent more time than I should have arranging the synths and laptop so that everything was in shot.

The layout meant that using the video synth was actually kinda difficult. I couldn’t see all of the modules and had to reach over quite far to turn some knobs.

After about 30 minutes of arranging I settled on a setup, sat down and hit record! Enjoy 8ish minutes of me pressing buttons and twiddling knobs.

I should do this more often

The result was quite pleasant though not musically or visually very interesting. In an ideal world this would have served as day 0 of the Week of Patching, a day to make sure all of the hardware and software was working as expected and create an environment that I could comfortably create in. But, as the saying goes, life… finds a way to mess up your plans!

Hopefully this will serve as a reminder to me to do more experiments so that I’m not caught off guard for the next Week of Patching. Thanks to Paloma Kop for starting this initiative, it was still a fun learning experience!



2021 Year in Review

I don’t have too much to say about this year. It was of course difficult in many ways but there were some moments of relief, especially when I get to see people IRL. Of course the pandemic and everything else in this world is still happening but I really valued those little moments, especially around August - October, where I could just do things. Anyway, on with the overview of 2021!

January

Not much happened in January. The Idle Index exhibition at Phoneix concluded with a talk between some of the artists involved.

February

There were a lot of presentations, lectures and workshops delivered this year and this activity all started around February. After lectures for VCU and The Courtald I did a rather big presentation as part of the Screenwalk series from The Photographer’s Gallery and Fotomuseum . It was a general overview of my practice but also welcomed back a sonification performance but with added Korg Volca synths.

I also started delivering a four-part Blender workshop series. Side note, check out Devon Ko’s amazing thread on Blender resources and in particular why you shouldn’t follow the donut guy.

Finally this month I announced (Algo|Afro) Futures.

This programme is really important to me, and its launch comes/came at a time when it’s more important than ever to address racism and diversity in every aspect of art and culture.

March

This month I did two presentations which came out of my takeover on the Minorities in Stem twitter account in 2020. The first was a presentation about live coding for Nerd Nite London. The second presentation only two days later I had the honour of being a Guest Conductor on The Coding Train!

Although I don’t use Processing/p5.js in my work I do really admire the work that Dan Shiffman does and how accessible his tutorials are. He’s really one of my favourite online educators and so it was an honour to be asked to present my work and talk about live coding to his audience. I followed my presentation with a little performance too!

Fundraisers for both of those events helped to raise nearly £10,000 for Coders of Colour :-)

April

It was fairly quiet in terms of output, partly due to ill health. I spent a week in London delivering workshops for New Town Culture with Company Drinks.

After a long deliberation process I was happy to announce the successful applications to the (Algo|Afro) Futures programme, Jae Tallawah, Samiir Saunders, Rosa Francesca, and Emily Mulenga.

May

The Rules of Engagement exhibition that I curated for ODI happened back in November 2020, but in May I was in conversation with two of the participating artists, Everest Pipkin and Nick Briz, about their work . Always great to speak with them!

I also made a new video work for the Estuary Festival , which took a trip down the Thames Estuary, showing how it was projected to flood over 100 years. The video I created is titled A Short History of Nearly Everything (big-up to fellow Reuben fans).

Making this video was a real learning experience, particularly in making the soundtrack. I feel that since making the soundtrack for Windows Explorer and Nodes I’ve slowly begun to be more considerate about making music, and making a 40-minute soundtrack gave me a lot to think about in terms of pacing and transitions. Still more to learn about mixing and mastering, but I definitely could sense I made progress.

I also did visuals at the Overlap Social event, which was my first in-person performance since February 2020!

And also this month I contributed to an NFT artwork that was sold at the Proof of Sovereignty Christies auction. The artwork, F473 by Coin Artist was an NFT and also a game! I was really happy to be working with Coin Artist/Blockade Games again (I previously did some work with/for them in 2018 with Plasma Bears).

If you’ve been on the internet at all this year you will have no doubt seen the discourse around NFTs. I still have mixed-to-negative opinions about NFTs in general, so it’s very unlikely that you’ll see me “mint” or “drop” my own works,

June

This month I was really excited to finally launch A.M. Darke’s artwork that I commissioned for the ODI Rules of Engagement exhibition, fairlyintelligent.tech. To launch the artwork I was in conversation with A.M. about their work

Another huge announcement was that I Am Sitting in a Room was acquired by the Government Art Collection!

This artwork, originally made in 2010, is a remix of Alvin Lucier’s (RIP) work of the same name. I’m really happy that they chose to acquire this piece as it marked a significant moment in my career as a digital artist.

July

The big thing to happen this month was the conclusion and celebration event for the (Algo|Afro) Futures programme. After a bunch of in-person and online workshops each of the participants presented a new performance at Vivid Projects!

(Algo|Afro) Futures

(Algo|Afro) Futures

(Algo|Afro) Futures

The whole event was live-streamed:

I’m really proud of what they all achieved in just a few short months!

I also made a music video for Affirmation by Echo Juliet

August

I did an online performance for Flash Crash and then presented some illustration work for Birmingham Design Festival’s Creative City exhibition

September

Another month of not much output, primarily as I was busy preparing new works. I celebrated my birthday with a performance at an Algorave in Sheffield, my first in-person live coding performance since February 2020!

I also produced a new commission for Beatfreeks’ Youth Trends report. You can see the commission and listen to a discussion I had about art made with data.

By far my highlight of September was Errorcamp, which saw around 50 live coders spend a few nights in the Lake District. We did some performances, some workshops, and some talks, but the most important thing for me was all of us just being in the same space together. The community aspect of Algorave and live coding is so important and I was really missing the in-person stuff, so I was glad to be there with others :-)

Errorcamp

Errorcamp

Errorcamp

I also appeared as a guest on the BBC Arts & Ideas podcast.

October

This was a big month! It seems as though almost everything that was postponed in 2020 was rescheduled to take place in October 2021! My month of events started with a couple of performances at No Bounds Festival in Sheffield. Part of it was a presentation of prerecorded performances by (Algo|Afro) Futures participants and music by me, and then I performed visuals with both Alex McLean and eye measure.

Then, a week later I presented new video work at the Corridor of Light festival in Manchester. The video, Move Fast And B̴͓̝͉͝r̴̞͕̬͒̾̃e̷̜̖̾̊a̸͙̲̾͐́k̴̡̩̥̆͘ Things is quite possibly my biggest projection and was placed in a very prominent position on Oxford Road. It was such a joy to see people stopping and watching the piece.

Move Fast and Break Things

Move Fast and Break Things

This was another instance where I was really happy with the music that I made. It was made primarily using TidalCycles which I mostly used as a sequencer, and then did lots of editing in Ardour.

I also co-cutrated an Algorave, which saw Bad Circulation do their only public performance of the year.

Corridor of Light Algorave

Corridor of Light Algorave

The following week I was in Nottingham to deliver a few workshops and then to install my work for the Cut & Mix exhibition at New Art Exchange. The conversations with the exhibition’s curator, Ian Sergent, started in February 2020, and so I’m glad that the exhibition was postponed rather than cancelled.

Cut & Mix

Cut & Mix

[video width=“480” height=“432” mp4=“https://www.hellocatfood.com/wp-content/uploads/2022/01/animation_4.mp4”][/video]

The exhibition is quite close to my heart, and it’s the first time I’ve ever really focused on race in my own work, but it’s something I’ve been wanting to do for a long time. I’m already planning an extension of the work and will definitely talk and write more about the concepts behind it in the future. Also happy to see the exhibition get a mention in the Guardian.

On the same night Careful Networks also launched.

November

I started running another short course in Blender and then started doing Hydra workshops at Site Gallery in Sheffield.

I also made a variable glitch typeface and some gifs for the Animate Assembly website.

By far the biggest thing was the Concerning Photography event by The Photographers’ Gallery and Paul Melon Centre. I did a keynote artist talk about my practice on the third day of the conference. I’ll update this post with a recording once it’s published.

December

As usual December was quite quiet. I did a performance for the Between Sound and Concept: Listening with the CCRU event at Coventry Biennial. I was quite ill that day so wasn’t my usual energetic self, but did use it as a chance to do a live debut the Pulse and Nodes tracks. I’m definitely near the point where I’m ready to make an EP or something more official.

I then took part in a discussion with Alexandra Cardenas at ICLC.

We were discussing diversity within the live coding community and the challenges we have both faced in this area. I was really happy to discuss the (Algo|Afro) Futures programme further. In general I really hope that the programme inspires live coders and algoravers in other communities to start their own similar programme. I would hate it if people saw this programme and thought that the work to combat racism is now “done”.

I finished the year by taking part in the TidalClub Longest Night live stream event. My performance was similar to the CCRU set but with a more refined and a new ending piece.

Also in December a remix I provided for Phoneutrian’s Sercle EP was released! My contribution was a remix of the song Crystal Mashup. Lots of other great songs on there!

End

So that was the year! No specific hopes for the future other than to survive and continue to learn and develop. Vague, I know, but then so is the future.


I Am Sitting In A Room acquired by Government Art Collection

I’m happy to share that my 2010 video, I Am Sitting In A Room, has been acquired by the Government Art Collection as part of Art X-UK, a permanent collection of works by 45 visual artists from across the UK.

In this difficult and unusual year, the Collection invited the networks for nine regions in England, and the networks in Wales, Northern Ireland and Scotland, to nominate artists as part of a special project, Art X-UK. Our collection curators went on a virtual tour of artists’ studios from Penwith to Ballygally, to select works for the Collection to display in government buildings worldwide. Art X-UK, supported by the Advisory Committee on the Government Art Collection, was a unique way of responding to the impact of COVID-19 on the visual arts sector.

This project has enabled the Collection to support 45 artists, acquiring over 90 works, and spending £230,000 across the UK. As part of the nomination process, we asked each network to form a group and put forward the artists’ names, providing a statement on their selection process for transparency, including a list of the selectors. Asked to consider diverse representation of artists within each region, 24 of the artists are women, 2 identify as non-binary, 20 as minority ethnic, 6 as LGBTQ+, and 4 with disclosed disability.

I Am Sitting In A Room is my take on the 1969 artwork of the same name by Alvin Lucier, in which he recorded himself narrating a text, then played the recording back into the room, re-recorded it, played it back etc.

In my take I used a process of repeatedly glitching font files. I documented this process in several blog posts at the time, including a recent blog post where I tried to recreate the work in 1920x1080 resolution.

I’m really happy that they chose to acquire this piece as it marked a significant moment in my career as a digital artist. It was one of my first works to incorporate automation/programming and the work being screened at GLI.TC/H 2010 in Chicago represented one my first significant international screenings. The piece even was screened at Alvin Lucier’s 80th birthday celebrations in 2011!

Really happy that my work is part of this round of acquisitions along with a lot of great artists :-)


Controlling Improviz Using Midi via OSC

In 2020 I did quite a number of workshops in using the Improviz visuals live coding environment. Improviz can be thought of as a fork of Livecodelab, especially as its developer, Guy John, is one the developers of Livecodelab. However, it has some key differences that make it stand out as its own unique software:

  • It works on the desktop, and I think it is faster because of it
  • The language is more fully documented
  • You can load your own textures, gifs, 3D models, and shaders

Being able to load your own textures might in itself be a reason for many people to switch from Livecodelab to Improviz. Things can be that just a bit more personalised when you’re using your own images and objects rather than only colours, gradients and basic geometrical shapes. Another potentially useful difference is that in Improviz you can interface with the software using Open Sound Control (OSC). This opens up the possibility of using software or external hardware devices. In this blog post I’ll take you through how you can connect a midi controller to Improviz via OSC and Pure Data.

To get started you first need to define a variable in Improviz that you want to be changed by OSC/midi. The name of this variable can be anything as long as it’s not a name already used as a function or variable in Improviz. Check the reference page for a list of reserved names. In my example I’ve used the variable name size.

size = ext(:size, 1)

Next, we need to connect to it via osc so that we can change its value.

When you launch Improviz via the terminal one of the messages you’ll see printed is the port it is using for sending message over OSC.

2021-03-25 20:53:.732595 INFO: Running at 640 by 480 2021-03-25 20:53:.732733 INFO: Framebuffer 640 by 480 2021-03-25 20:53:.390032 INFO: Loaded 3 texture files 2021-03-25 20:53:.437047 INFO: Loaded 8 material files 2021-03-25 20:53:.441641 INFO: Loaded 5 geometry files 2021-03-25 20:53:.441718 INFO: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 2021-03-25 20:53:.441766 INFO: Creating Improviz Environment 2021-03-25 20:53:.466755 INFO: Loading ./stdlib/variables.pz 2021-03-25 20:53:.466846 INFO: Loading ./stdlib/transformations.pz 2021-03-25 20:53:.466890 INFO: Loading ./stdlib/shapes.pz 2021-03-25 20:53:.466930 INFO: Loading ./stdlib/style.pz 2021-03-25 20:53:.466968 INFO: Loading ./stdlib/textures.pz 2021-03-25 20:53:.467004 INFO: Loading ./stdlib/screen.pz 2021-03-25 20:53:.467039 INFO: Loading ./usercode/grid.pz 2021-03-25 20:53:.467078 INFO: Loading ./usercode/seq.pz 2021-03-25 20:53:.467116 INFO: Improviz OSC server listening on port 5510 2021-03-25 20:53:.467297 INFO: Improviz HTTP server listening on port 3000 2021-03-25 20:53:.467405 INFO: Improviz resolution: 640 by 480

Of course you can, at this stage, use any software that can send data over OSC, but for this blog post/tutorial I’ll be using Pure Data. Alternatives exist but I like using it as it’s lightweight, stable and is cross platform.

To send OSC messages use the [netsend] object to connect to the same ip address as Improviz (usually 127.0.0.0) and same port (5510). [udpsend] will output a 1 from its only outlet to show a successful connection. With the connection established I can now send values from a number box to the variable via OSC!

Right now I’m using number box which has its values being set by me manually clicking and dragging. I could have the numbers being generated randomly by using the [random] object, or even have some level of audio reactivity by using the [adc] object. If that’s your thing you do it! Keeping to this blog post’s title I’ll be using a midi controller to change these values. For this next stage you should know that I’m using Ubuntu (20.10) as my operating system. This means that the instructions, especially those concerning connecting a midi controller, may be different for your operating system. Sadly I can’t help with that.

Connecting a midi controller to Pure Data is quite easy. I’m using an Akai MPK Mini MKII, but the instructions on connecting the controller are the same for pretty much any midi controller. First make sure that Pure Data is exposing at least one midi port. Change your midi backend to ALSA-MIDI in Media > ALSA-MIDI. Then go to Media > MIDI Settings… and make sure you have at least one midi input.

Then, open QjackCtl, click on the Connect button and under the ALSA tab connect the MPK Mini Mk II output port to the input port of Pure Data.

In Pure Data you can now read the Control Change (CC) values of a one of the knobs or pads using the [ctlin] object. On my MPK the first dial (K1) is [ctlin 1]. It outputs values from 0 - 127 (128 values). I want it to change the size of a cube from 0 - 4, so I need to map the ranges. I found this very handy mapping abstraction so I’ll be using that. With the ranges mapped I can use the knob on my controller to change the size!

[video width=“1280” height=“316” mp4=“https://www.hellocatfood.com/wp-content/uploads/2021/03/pd_improviz_4.mp4”][/video] Pure Data patch in Improviz code is here: pd_improviz_4.zip

For my next trick I want one octave, C5 to G5, to alter the shades of grey of the cube. The [notein] object will tell me the current midi number of the key being pressed. From that I can deduce that C5 to G5 is midi notes 48 - 59. Using the [maxlib/scale] object again I can map those ranges to 0 - 256 and send those values over OSC to a variable in Improviz that will be used to change the fill function.

[video width=“1280” height=“316” mp4=“https://www.hellocatfood.com/wp-content/uploads/2021/03/pd_improviz_5.mp4”][/video] Pure Data patch in Improviz code is here: pd_improviz_5.zip

For my final form I’ll use one of the pads on the midi controller to toggle a random colour generator.

[video width=“1280” height=“316” mp4=“https://www.hellocatfood.com/wp-content/uploads/2021/03/pd_improviz_6.mp4”][/video] Pure Data patch in Improviz code is here: pd_improviz_6.zip

One of the possibilities of using a midi controller to control visuals in this way is that you can control the audio and visuals simultaneously, rather than one being triggered in reaction to the other. In my experience of doing live visuals it has been quite normal for visuals to move or, as is quite often the case, pulsate in reaction to the amplitude of the music. In fact I did this many years ago for a video for My Panda Shall Fly.

What I’ve sometimes noticed is that there’s latency and the reactive visuals often feel like they’re coming in too late after the beat/instrument has hit. Of course the latency can be reduced by adjusting the sensitivity of the audio input device (microphone or line in) but then it’s a fine balancing act of both the musician and visualist adjusting levels. Achievable but a pain!

By having one device/controller triggering both you can, in theory, have both happen simultaneously. Here’s a demonstration of this from October 2020

[video width=“1920” height=“1080” mp4=“https://www.hellocatfood.com/wp-content/uploads/2021/03/improviz_pd_7.mp4”][/video]

As you can see the midi controller is controlling both the visuals and the audio. When I eventually get back to performing live gigs this is definitely something I’m going to explore further. Until then, have fun mixing live coding with midi controllers!