With a large task ahead of us it became clear that we needed to distribute the work between us efficiently. We did this by designing each part of our system separately but taking the integration of our components into consideration. I decided to design the digital signal processing proportion of our system while Oisín decided to look after the circuit bending of the Casio keyboard.

I gave myself the task of creating a device that could take the limited range of sounds from the Casio keyboard and and construct them into a multi-timbral piece of music in a performance setting. I used MAX/MSP as my platform to construct the software element of our DSP  device because of it’s flexibility, signal processing abilities, and detailed documentation.

With this concept in consideration I decided that I needed to record the keyboard output into a buffer (rather than processing the continuous audio), so that I could pull it back at anytime and then layer snippets of sounds over each other. During the performance this allows me to take a motif from Oisin’s keyboard and continue to develop on it while he is free to move to explore other material.

In max I used an add-on object called karma~, it’s a basic sample looper with varispeed controls. It’s particularly useful in a live performance because it avoid issues like clicks and other artefacts that plague other methods of looped sampling in Max. (Constanzo, 2015)

Basic karma~ seup

With a basic patch set up, I began experimenting by looping and layering samples of the the keyboard but it quickly became too thick and  had little contrast to the direct output.

I started experimenting with the varispeed functions of karma~ and found that the MIDI note output of a”kslider” keyboard object could be used to control the varispeed with accuracy and ease. Then by using the poly~ object I can have multiple instances of the same loop running with different varispeed parameters.

Expansion of karma~ with poly~ and addition of varispeed and window size controls

I found that layering the same loops in octaves of each other creates a strong sense of metered rhythm and works really well with noise-like samples to create polyrhythmic textures.

To fully utilise the affordances of  karma~ I added control over the window size and start position of the loop. This allows me to dramatically change the loop length while the audio is playing, creating large synth like granular sounds that quickly disintegrate to noise-like rhythms. I plan to find a way to manipulate these parameters using some form of arduino based controller that can make this action more natural and physical.


Here are some test sounds that I generated with these tools. As you can hear, vastly contrasting and evolving sonic character can be achieved simply using one five-second sample from the mic input of my laptop:

I plan to develop this max device further by implementing more buffers that can loop in karma~ simultaneously and by exploring the possibilities of multi-channel expansion. Oisín and I have also discussed creating a visual element with jitter that could be used as a form of communication or a score to establish repertoire and structure within our performance.


Constanzo R. (2015) Karma~, .

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s