Sunday, 12 May 2019

Frozen Echoes - a sneak peak inside my M4L development pipeline...

I'm going to break my usual routine this time. Instead of a finished MaxForLive device, I'm posting an early prototype so that you get to see something before I have smoothed any rough edges.

For a long time, I've been fascinated by syncopation, and so the '3' and '5' buttons in Ableton Live's Ping Pong Delay have always been my defaults. Whilst working on my re-inagining of that device, I realised that the extended 'Freeze' buttons that I had added could also be pushed further - into territory that my AUDhexECHO partly covers, but with a different, more rhythmic, more performance-oriented slant. The result is a 'Plus' version of AUDpiPOde, but there's a lot of extras in that 'Plus'! (I also removed the input filtering, but I think the additions make up for that!)


Here's the basic device: AUDpiPOde split into two separate channels, and without the common time and feedback controls - so just an echo effect.

The left half of each to the channel panels is just taken from AUDpiPOde, and in this mode, you get two different delay times for each channel, so the ping-pong echoes just bounce back and forth in stereo, as you would expect - but because the time delays are different, the timing is more... interesting.

The two buttons marked 'Free' mean that the two channels are separate. If you click on the one above the 'ms' time setting in the Right channel then it changes to 'Anti', which indicates that the two time delays work in opposition. So the time delay for one channel goes up as the other channel goes down.

So 1750 ms in the Left channel equates to 2250 ms in the Right channel, and notice that the time delay adjuster is greyed out in the Right channel - using the 'Anti' button just makes syncopated echoes easier to set up for 120 ppm (at the moment), but it is a good starting point for the next stage.

The panel on the far right contains common controls, including 7 'performance' controls. The largest three are just common versions of the three 'Freeze' buttons: Freeze (Ping), Freeze (Ping and Pong) and Freeze (Pong), where 'Ping' is a 'same channel' echo, and 'Pong' is an 'other channel' echo. The Dry/Wet rotary control controls the mix between the straight-through audio and the processed audio, and the 'MakeUp' slider/indicator is only active when 'freezing' is happening. The final four buttons are connected to the 'freeze' loop processing...

The right half of each of the channel panels contains two processors: a limiter; and a frequency shifter. These two audio processing effects are not inside the feedback loop that is associated with the 'Feedback' rotary control. Instead they are inside what I will call the 'freeze' loop - because this echo effect breaks two of the 'rules' that people often apply to echo units:

1. 100% feedback will cause the delay to oscillate, which is generally considered to be bad.
2. Don't put any audio processing in the feedback loop, because it will affect the feedback and might cause it to exceed 100%, in which case the first rule applies.

Luckily, inside the 'freeze' loop, things are slightly different, and this design has 100% feedback plus audio processing, and it is much harder to get it to oscillate than you might expect. In fact, the freeze loop is specifically designed to avoid the usual runaway feedback, although nothing is perfect! When the 'freeze' mode is selected, the input is switched from the audio input to the output of the freeze loop processing, so the delay is looped around itself, and only outputs audio signals. The Dry/Wet balance control shifts the all 'Wet' when 'freeze' mode is active, so that only the frozen audio is output.

One of the major changes between the plain and the 'Plus' versions of AUDpiPOde is hidden away in the Max code, and it is the audio switching. The Plus version fades in and out smoothly between audio signals, whereas the plain version just switches immediately. The freeze mode only works when the transitions in and out are as smooth as possible, and the fades help to minimise them. This design does to use cross-fades - I'm still trying to get my head around a way to do this, and it remains one of those 'one day I will figure it out' aspects of my programming.

And so to 'freeze' mode:

The selected button is 'P' , which is 'Freeze Pong', so the output goes round each delay in series, and with the 'Anti' time delay setting, this means that the audio will be delayed by 1000 ms, then 3000 ms, the 1000 ms, etc. The frozen output is thus 4 seconds (4000 ms) long in total, and so it repeats every 4 seconds. And because it is frozen, it can repeat indefinitely - although if you activate the Limiter or Frequency Shifters then this isn't true! (because they alter the audio) And when you want to stop the repeats of the frozen echoes, then you just click the 'P' button again and the Dry/Wet control will return to the previous setting, smoothly restoring the echo effect as before the freeze was activated.

So the performance process goes like this:
1. Set up the echo timings in 'Anti', so that the echoes stay in sync (or alternatively, you could just abandon sync!)
2. Click on one of the three 'Freeze' buttons.
3. Let the frozen echoes repeat...
4. Click on the highlighted 'Freeze' button to return to echo mode.

Things to fix

There's quite a lot of extra text needed here to describe the operation of the Limiter and Frequency Shifter effects. The timings in the time delay selection tabs aren't in the right order! I need to fix this. Also, there's that cross-fade that has so far defeated me! (Which means that the frozen echo loop is not quite perfect...) Finally, I'm wondering if I should put filtering inside the 'freeze' loop, which might be quite interesting...

Anyway. Enjoy!

Getting AUDpiPOdePLUS 0v03

You can download AUDpiPOdePLUS 0v03 for free from

Here are the instructions for what to do with the .amxd file that you download from

(In Live 10, you can also just double-click on the .amxd file, but this puts the device in the same folder as all of the factory devices...)

Oh, yes, and sometimes last-minute fixes do get added, which is why sometimes the blog post is behind the version number of

Modular Equivalents

In terms of basic modular equivalents, then AUDpiPOdePLUS would require two delays, two limiters, two frequency shifters, some utility switches, and two mixers, giving a total of about 9 ME.

No comments:

Post a Comment