Audio DSP

This page collects the libraries (or “externals”) I’ve written to help process and create sound in MAX MSP. These libraries let musicians explore non-linear systems for both sound synthesis, and the creation of rhythms which imply but evade a sense of pulse. These are not complete instruments, but novel building blocks which I have used to create my own music, and instruments for performance. In line with this, the audio demos are raw. They aim to demonstrate the behaviour of the objects rather than polished musical results.


cpg~ objects

A set of objects for working with Central Pattern Generator neural networks in MAX/MSP. See the project page here


hyperuniform~

A weird stochastic rhythm generator. At the start of my PhD I read an article about “hyperuniform” materials, which show a combination of high fluctuation at the small scale, with high uniformity at large scales. I thought this combination of large scale order with moment-to-moment unpredictability might be musically interesting. hyperuniform~ is my, fairly impressionistic, take on a particular kind of hyperuniformity: “hyperuniformity in the disordered, jammed, packing of soft spheres” as outlined in this paper. The library allows for a continuum of control f rhythm, from direct control of rhythmic elements, to looser control within a high-level uniform stochastic rhythmic environment.

Externals, code and more info avaliable at github

Why would you do this?

First off, the overall shape of the thing is just appealing to me: a fixed set of discrete units of time is strung together, and deformed, and this happens in a controllably random way. It balances control and chance and suggests the potential to avoid a rigid rhythmic grid while retaining patterning that the ear might be able to follow.

It’s also slightly inspired by neuroscientific research on rhythm perception, which research suggests is best modelled as combining pulse-based and stochastic aspects. We are thought to anticipate the next rhythmic event based on the regularity of previous events, but via a stochastic estimation mechanism (see e.g. Rhythm Music and the Brain by Thaut).


bounce~

windows download

OSX download

github

This is my iteration on an audio synthesis technique described by Peter Blasser of Ciat Lonbarde fame. This is basically a bank of chaotic triangle wave oscillators. The behaviour of these oscillators can be imagined, very roughly, in terms of a group of idealised particles bouncing around in a tube, free of gravity and friction. When one particle hits another, or hits the top or bottom of the tube, it “bounces” in the other direction. The path of each particle is output as a waveform. With a single ball this creates a crude (non-bandlimited) triangle oscillator, but when you add a couple more, things become much more interesting: you get multiple distinct voices that modulate each other in a way that both feels hard to predict and also somehow intuitively right. It’s great for patterned-but-unpredictable LFOs. And if you like noisy textural sounds (and I do), it’s also fun as the oscillator in a synth.

Things I added to Blasser’s (analogue) version:

If you enjoy rythmically articulated digital chaos it’s a lot of fun. I think it’s very expressive and very playable, and I used to use it a lot for live performance. Here are some (not very musical) demos

The Help patch for bounce~


henon~

github

This is a sonification of the Hénon map equation. It produces interesting noise textures in certain parts of its parameter space, and interesting transitions between noise and pitch in others. There is a choice of interpolation methods (drop sample, linear and b-spline) which affect the sound character considerably. I built this as a framework for sonifying other non-linear equations. I tried a few other equations out, but the Hénon map was probably the most usueable I found. It’s very simple to substitute in other equations you’re interested in. Just swap out my au_henon_calc function for one calculating the equation of your choice, then change the parameter inputs to match.

max msp -