Riffing on the sound of Paulstretch

Most of you have probably heard of Paulstretch, an algorithm by Paul Nasca that takes a song and, to utterly bungle the methods behind it, smears it out to a massive length.

One of the things I most enjoy about the resulting sound is this wonderful shimmering effect that the stereo field gets.It’s a bit like a chorus without the detune. It’s the kind of effect that can be used to make this simple child’s toy I recorded:

…into the backing to this track:

It can also turn Justin Beiber into an epic ambient drone masterpiece, but I’ll leave that up to the curious reader to Google for themselves.

Paulstrech’s secret sauce

Having read up on how Paulstretch works, I think the effect which I enjoy is caused by the overlapping windows of stretched sound. In effect, it grabs a windowed chunk of the input, works out the component frequencies of that chunk (FFT), then repeatedly prints out overlapping instances of that window, each time with randomised phases.

The techniques behind some of it’s methods are explained here: http://www.microscopics.co.uk/blog/2010/paulstretch-an-interview-with-paul-nasca/

I’ve seen a few people ask why there isn’t a real-time version of Paulstretch e.g. as a VST or AU. This proved to be more difficult to explain to people than I expected as most people seem to think the problem is a performance issue.

Even if you had a computer capable of running it in real-time, a Paulstretch DAW plugin is not possible for the following reasons:

An audio plugin (e.g. VST) streams audio from inputs (e.g. a vocal) through onward to the mixer. Inherent in that premise is the requirement that the plugin processes a block of audio input into an equally sized block of audio output; you can’t have the playback position moving slower for some tracks than others or the whole band would get out of step.

Paulstretch, on the other hand, is designed to output more audio than it inputs – that’s kinda the point of it. It could not be turned into a VST because it doesn’t fit the problem they solve.

But, dammit, I still want a nice shimmering chorus that doesn’t sound detuned. So I turned my mind to how I could make something that might borrow the sonic qualities of paulstretch in real time.

As I said, randomising phases is, I believe, the secret sauce here. However, randomising phases is not a trivial problem. I mean it’s easy if you’ve already put the sound through some form of transformation like an FFT, but an FFT implies complex processing and delay (in order to give it the required window). So FFTs were out.

Head scratching time – The All Pass Filter

Another thing that can alter phase is an all pass filter. In simple terms an all pass filter is like a low pass or high pass filter except that it lets all the frequencies past. What it does change is the phase relationship between frequencies.

AllPassExample1If you have a suitable tool kit to hand (Reaktor, FL sytrus or anything with an all pass module) you can have all kinds of fun summing an all pass with a polarity inverted version of the same signal in order to re-create low pass and high pass filters. The picture to the left is of a quick Ensemble I made in Reaktor to show how an All pass filters becomes low pass filter when summed with the original signal. The ensemble for this is available here: All Pass Combination Example Ensemble for Reaktor 5. Needless to say, this will not work with the free Reaktor player.

All pass filters see a lot of use in reverb plugins presumably for the random phase cancellation they can create when placed in parallel and inside delay loops.

So I experimented with All pass filters, but I didn’t get the sound I wanted.

To Be Continued…