a screenshot from polyrhythmic timeshift delay

polyrhythmic timeshift delay

a digital audio effect

link

This is a digital audio effect that I built in Max/MSP. The design is something I had been thinking about for a while and I finally decided to sit down and build it. When I was in college, I created an album of sample-based music - it was something akin to vaporwave in terms of genre. One of the techinques that I used on the album to manipulate samples was to import a sample into my DAW, and play the sample back at different speeds (timestretched to preserve pitch) that were related to the original tempo of the sample. This would create a polyrhythmic effect that I really liked. I wanted to create a digital audio effect that would allow me to do this in real time.

The user can set the length of the buffer using a sort of tap-tempo-like function. The wet signal is a timestretched playback of the buffer. Speed of the wet signal is always set as a ratio of the original sample. The user can set the numerator and denominator of the ratio to numbers between 1 and 16. So the playback can be between 1/16 the speed to 16x the speed of the original. There are two "delay" lines which can each have their own timestretch ratio and can be adjusted in volume.

Techincally, the patch uses a digital signal processing algorithm called a phase vocoder which takes a slice of a digital audio signal (that is, a discrete set of samples arranged by time) and converts them to a set of sine wave frequencies and amplitudes. The phase vocoder allows for the manipulation of speed and pitch independent of each other and is the basis of most modern time-stretch and pitch-shifting techniques in digital audio. The patch just takes the phase vocoder and uses it in conjunction with a live audio buffer in order to create the pitch-shifting effect in real time.

I was really happy with the results here. The effect captures something that I really appreciate in electronic instrument design in that it does something simple and fundamental, divorced from any specific application, and yet it can be used to create a wide variety of sounds - whether it's slowing down an incoming signal to extremes to create artifacts, used with drum loops to create interesting polyrhythms, or used as a sort of off-kilter delay.

Currently, the effect can only be controlled with a monome grid input. When I have time to take the project back up, I'd like to make it less tech-specific and get it in a state where it can be used with any midi controller.