Tuesday, 24 April 2018

Irregular timing in a MaxForLive LFO...

Previously I have described the design of ProbablyLFO, my 'alternative' LFO for Ableton Live, built using MaxForLive. Since the first release, I have gradually added extra timing sources, and until now, these have all used the MIDI input so that the LFO timing was driven by MIDI notes in the clip. "Genious" was how one user described the use of MIDI note events to drive an LFO...

But recent experiments with Max's 'random' and 'metro' objects have resulted in a new timing mode that extends the functionality of ProbablyLFO in another direction. I have added a timing source that uses the 'Free' mode asynchronous oscillator but uses that to drive a noise generator that clocks the LFO probability grid. The result is an LFO that doesn't output the waveform at a regular rate, but it kind of jerks along across the grid. By altering the 'Smooth' control you can calm it down or make it more jagged, which aren't the kind of words that you normally see used to describe an LFO...

As with all the other timing sources, there is an indicator 'light' that shows when that timing source is generating a clock. The rate of the 'Noise' timing is the same as the 'Free' mode, which wasn't easy to achieve - I had to make two 'metro' objects running at different rates in order to keep the rate the same, and I have to admit that I cheated and set the parameters experimentally, rather than doing the maths. Entropy and probability ain't my strong points.

So what does this give you in terms of control? Well, conventional LFOs output a waveform where each cycle takes the same time, and the shape of that waveform tends to stay the same - so a sine wave always has the same shape, a sawtooth is always a sawtooth... By using random noise to time the movement across a grid that controls the waveform, ProbablyLFO lets you have waveforms that can vary per cycle, and that have an average rate rather than exactly the same time for every cycle. Depending on what the random noise does, some cycles might be short, while others might be longer, and the progress across the grid can vary within the cycle.

Let's look at the output of an unsmoothed sawtooth from ProbablyLFO with 'Free' timing:

So the sawtooth is the same each cycle, and each cycle takes the same time.

And now, the output with the same unsmoothed sawtooth with 'Noise' timing (several examples):

As you can see, cycles vary in their length, and the ramp isn't a nice straight line any longer because the progress across the grid is driven by random timing. The only thing that is the same is the average rate - over a long period of time, the same number of cycles will hap[pen as in the first sawtooth example.

( Note that this is using a fixed waveform in the grid. ProbablyLFO's grid allows you to set the probability of different outputs, and this isn't being used here - this is just the 'Noise' timing. )

Musically, this gives you an LFO where the parameter you are controlling does not change repeatedly with exactly the same timing and waveform. Instead you get a much more variable timing and output - less metronomically predictable...