What can I do with these loops?

In my weekends (and the occasional evening) I like to jam with plugins and MIDI, edit up samples, and make little loops. This is a low-pressure outlet for my creativity. In the last few years this has meant I've had a lot more fun, accumulated lots of rendered audio, and almost stopped releasing music. I'd been looking for a way to combine all these loops into some kind of generative audio wallpaper.

Landscapes are nice

A wee while ago I came across @SoftLandscapes (see also web twitter). I like experimenting with primitive (minimalist?) animation, and I wondered if I could implement something similar in canvas or SVG, so I did some prototyping on codepen.

Press play to hear it! Leave it going for an hour or so to hear everything, or leave it going for a week! Full site here, so you can full screen it in a dark room.

Let's learn about new web tech

I was also looking to get more experience with the Web Audio API, Redux, and React. So I combined all these things into a project that I can focus on and then ship (because real artists ship).

What is it? How does it work?

There are a handful of songs, each split into four layers. The algorithm cycles through all the songs, and gradually adds in, and then removes layers. Each of the layers corresponds to one of the scrolling parallax mountain ranges, so they fade in and out too.

When switching to the next song, as layers are removed, the code decides how soon to bring in the next song - how much the parts overlap. The code also randomly chooses different ways for parts to enter and exit – simple start stop, low and high-pass filter sweeps, or volume sweeps.

There's also a selection of texture/field recording samples which are played over each transition – a random section of the sample is selected and then looped, and filtered in and out as the song changes.

Sometimes, to mark changes, there's a little bit of punctuation – a randomly-selected "hit" sample, such as an air horn or cymbal. These are sent to a dub delay using a Web Audio DelayNode and BiquadFilterNode (hat tip Chris Lowis). Gotta have an air horn. No cowbell though (not this time).

The colours of the mountains are randomised – a front and a back colour are chosen, and then these are interpolated for the middle two mountain ranges.

There's a range of styles in there, things that you might call instrumental east-coast hip hop, dubstep, dark ambient electronica, subdued moody piano, break beat.

Look out!

If I make nice sounds when noodling or jamming, I'll add new songs periodically, so check back in :)

Haszari Live at the Library

As part of NZ Music Month I was invited to play in the Dunedin Public Library. Because I love libraries, and this one (a marvellous concrete construction) in particular, I jumped at the chance! And of course I'm generally obsessed with the idea of playing electronic music live.

Cue a month or so of fervent anxious work getting a set together. Because this was a 20 minute slot, I felt that I could pull out all the stops and make this as complicated as I wanted. Over the last wee while I've been making lots of little loops so I had a bunch of material to play with.

The first time through (I had two slots booked - a Sunday morning and a Thursday after work), I had a technical problem, and had to play a (boring old, not even live mate) DJ set instead. In the intervening time I dusted off a custom nodejs websockets OSC UI thing to replace the bits that didn't work (studiomux providing OSC-over-lightning cable). This worked great, turning the iPad into a wireless pattern-trigger controller.

On the laptop I used SuperCollider as a MIDI pattern sequencer and also to play back texture samples. This all fed into Logic Pro X where the synthesis, effects and mix happened (with lots of params assigned to hardware knobs).

Here's the recording - great background music for reading perhaps? Hope it's as much fun to listen to as it was to put together :)

Tracklist:

  1. Like So (live dub)
  2. Maenyb (live dub)
  3. Nevozo (live dub)
  4. Janura Crossing (live dub)