Sunday 29 October 2017

sFreez_mr - 4-phase LFO looped sample live performance tool in M4L for Ableton Live

When I programmed gFreez_mr, I was exploring granular synthesis, and so an 'atmospheric sound generator' was a logical way to use the results of my experimentation. sFreez_mr takes the underlying  'live performance' framework of gFreez_mr, and turns it into a sound generator based on looped samples. So the way you work with both M4L plug-ins is the same, but the sound sources are different. Maybe in the future I will make a hybrid of the two...

So this blog entry is a rambling user manual for sFreez_mr...


sFreez_mr allows the simultaneous playback of up to four separate samples in a way that is designed for live performance, but it can also be used in the studio as well. Instead of manually mixing between the sound samples, it uses a four-phase LFO with variable 'overlap waveforms' to control how the mixing happens. A simple sine wave just mixes between three sounds at any one time, whilst other waveforms can mix between pairs or even all four. (My original plan was to make the phase shits between the four LFO outputs user-controlled, but this required three controls, and actually, there weren't that many useful sets of settings, so (unusually for me) I went for the classic audio plug-in design approach of 'less controls is better').

There's a clear design decision here. DJs normally mix between and process (with effects) two main sources of sounds (vinyl, CDs, decks, sample players... (insert your favoured technology here)), and fly in additional sounds from other sources - and they do this live. This treats the sound sources as components in a music instrument that works at the level of samples of audio, and there's enough abstraction from the one detail (down at the sample level) to allow them to 'play' those samples expressively in a performance that has structure and connects at an emotional level. sFreez_mr removes just the mixing part and automates it, leaving the performer/DJ free to work with 4 separate sources of sound at once - and actually, by changing the LFO rate or using the On/LFO/Mute buttons, the mixing is controllable too. So you can think of the 4-phse LFO as a 'helper' that enables the assembly of more sound sources into a live performance by reducing the loading on the performer/DJ. I'm expecting great things from talented performers /DJs when they start to get the hang of what sFreez_mr lets you do...

Now this wouldn't be one of my M4L creations if it didn't have LFO-controlled panning, and here four separate LFOs are used to animate the four LFO-controlled samples components into a constantly shifting atmospheric sound. sFreez_mr is particularly good for slowly evolving background sounds, and it has a number of functions that are specifically designed for live use.

Let's look in detail at each of the sections that make up sFreez_mr:

Sample Players

There are four looped sample players, which can be 'Load'ed with AIFFs (or WAVs), or you can drag and drop samples onto the four waveform displays. The four samples are each colour-coded: red, yellow, green and blue. Each sample player waveform display has several sections: there's the central waveform display, the sample name on top of that, and two rows of buttons (above and below). That's a lot of functionality in a small space!

Left-most are four big 'Load' buttons that allow direct loading of samples. On gFreez_mr, these were the record or 'capture' buttons for grabbing the source material for the granular players, and I did consider  having the same functionality here, but eventually went for providing dedicated buttons AND drag & drop. These buttons cycle at the rate set by the 4-phase LFO, so you can always see which sample track is not currently in the mix. When the button is bright, then the LFO has set that tracks fader to off or very low, and so you can make changes to that track without being heard. So when the button goes bright, that is when you replace the sample (or drop a new sample in the waveform display - one technique is to grab the sample and hover over the waveform display, waiting for the button to light up!).

The top row of little buttons transpose the sample, whilst the lower row of buttons stretch or shrink it. The range of transposition is limited, so I made some decisions about the available settings, and so you get fifths purely for usability (a future version might allow these to be customisable). The centre setting is the 'no transposition, real time' setting, and either side of this the sounds get more and more altered. In the centre default, then you get a mildly conventional sample playing device that operates in what many people would class as 'DJ' territory, whilst away from the centre, you get more atmospheric and experimental sounds - but I encourage everyone to break through any barriers, recommendations or preconceptions of use. I debated for quite a while if I need a Play button, and eventually decided to leave it in, (although for me it stays on all the time, and so need not be there, but I wanted to leave the control there for other performance styles...). The 'Play' button is the rounded edge button next to the 'chevron' forward (to the right) or reverse (to the left) buttons. You can use the chevron buttons to change the sync of samples by reversing for a time and then going back to forwards. I use this for rhythmic samples where I want to change timing relationships , and I do it when the 'Load' button is bright so that the next time that sample track gets back into the mix it is different.

Track controls

The next three buttons are linked and only one can be selected at any time for each coloured sample 'track': On (the sample plays all the time), LFO (the sample volume is modulated by the 4-phase LFO), or Mute (the sample audio is muted). These buttons fade the sound quite quickly, and so shouldn't cause too much audio hassle (like zipper noise), but they are intended to be 'played' live, so don't just dismiss them as being used in setup (especially since 'setup' can be happening live during a performance, not just beforehand).

The thin buttons in the middle are 'group' controls that affect all four sample tracks simultaneously - once again, this is intended for live performance use - so you can quickly stop everything happening by muting all four small tracks, or alternatively, you can blast all four tracks full on by using the 'On' button. Normally, the 'LFO' middle position is where the buttons will be set, and having a single button that restores this can be very useful. On you have learned this user interface, then you may find yourself wishing that other button-based UIs had similar shortcuts...

The final part of the track controls are the LFO displays, which show the 4-phase LFO as four colour-coded virtual faders. Left is off, no coloured bar) and right is full volume (full coloured bar) - just listen to a single track to get your head around this (press the thin central 'Mute' button, then the 'LFO' button for the sample track that you want to audition...). Remember that when the fader bar vanishes, then the 'Load' light will be bright, and you can make changes to that sample track without being heard in the output mix. In performance, your head needs to be in sync with the 'Load' buttons or the LFO fader displays.


The next section is kind of a 'mixer', but very specific to what is needed in this context.

First, there's a display of the audio level for each sample, which helps you keep track of what is playing, and which can be very useful to all you if a track is playing a slow continuous sound, or a bouncy rhythmic sound. I'm never sure if this display should be part of the previous 'track control' section, or if it should be included in the mixer...

Then there are trims for volume for each sample track, and then the Pan LFO controls; frequency and phase. To fix the pan position in the stereo image, you low it right down and use the phase to set where you wan the pan position to be. Note that the phase does NOT map directly to L and R (i.e. All the way left on the has control is not necessarily hard Left panning) - watch the little pan display blob to see where the actual position is in the stereo image.

4-phase LFO

The 4-phase LFO has a rate control that is how you interact with the LFO, but the main number that is shown is how long it takes for a complete cycle (in seconds). The wo things are inversely related - the 'how long' display number is, again, designed for use in live performance. The LFO has additional 'waveforms' that set how the samples are faded in and out, and so I suspect that 'transfer function' is a more accurate description. Anyway, try the new waveforms out: they allow you to vary the number of samples that are mixed at any time. Each waveform gives a different 'feel' to that way that the sample tracks get cyclically mixed together.

Finally, the 'Makeup' control adjusts the overall output volume, whilst the 'Mute' button and 'Gain' control are inherited from gFreez_mr, and allow you to monitor the input audio - which adds to the live performance possibilities...


sFreez_mr is intended to be a live performance tool that can also be used in the studio. To get the most out of any tool when performing live, you will need to have spent time learning how to use it effectively. Also, don't forget that this is 'work in progress'...

sFreez_mr can be downloaded for free from

SoundCloud demo1 - wind
SoundCloud demo2 - rain
SoundCloud demo3 - seq
SoundCloud demo4 - loop
SoundCloud demo5 - fx
SoundCloud demo6 - fx2
SoundCloud demo7 - drum
SoundCloud demo8 - drum

Sunday 22 October 2017

ProbablyS tutorial - using the newly added memory sequencing

Probably was my first attempt at an 'antidote to step sequencers' - a simple monophonic step sequencer that took a different approach to step sequences by adding probabilistic control over events, as well as legato note lengths.

ProbablyZ added extra time features, a well as separating the octave transposition from the notes in an octave. The controls that you get over time allow probabilistic control over time-warping, which isn't a common feature of sequencers...

Since I first released ProbablyZ, I have fixed the state memories (the little grey squares)(thanks to Cory at Ableton for his help on this!) and improved the sync with Ableton Live's transport. Whilst I was fixing the memories, I tried out one of my further extension ideas, and this is now ready for release...

ProbablyS (available from

ProbablyS adds extra control over the state memories. There are now 12 'State' memories (each grey square can save the state of all the grids to the right - just Shift-Click in one of the grey squares in the black 'Memory' section). To recall a state then just click on the grey square, and it will turn white.

The 'Memory' grid on the left of the vertical bar of memories allows you to sequence thee. Each row corresponds to the associated memory on the right, and so if you set all of the memory cells to the top row only (white cells all along the top of the grid), then ProbablyS will play back just the state stored in that memory. Here's an ASCII text illustration of the layout:

State Grid  OOOOOOOO []  State Memory
            OOOOOOOO [] 

The default setting for the state grid should be similar to the basic setting for the other grids - a horizontal line o white 'cells'. (As with the time grid, the 'cells' are round, not squares...). Time scans horizontally across the cells - and this is shown by a darker cursor line.

If you set the 'repeat' to 1 and the length to 2, and set the second grid position to a different memory, then the memory grid will cycle between those two memories. If you set the 'repeats' to 4, then each memory will play for four times, before moving to the next memory. If you set the 'length' to 8, and the 'repeats' to 8, then it will play each memory 8 times.

The two screenshots above show the 2nd and 8th stage of the 8 step state sequencer (which drives the underlying 16 step grids). The 2nd stage is playing the top memory (see the white square in the vertical memory bar in the 'Memory' section?), which has a very simple set of grids, whilst the 8th stage gas chosen one of 9 possibilities, and has chosen a memory four steps lower, with a much more complex set of grids controlling the output.

As with all the other grids in Probably, you can have more than one white cell in a vertical column, and the choice between the two cells will happen at random. This means that you now have probabilistic control over which memory is playing at any time.

(I'm still working on providing a separate way to store the 'State' grid - and I may provide a preset state in the next version, plus some new functions...)

Looking at just the state grid (plus the time grid so you know where the new Memory section is positioned):

The first two stages (which could each be from 1 bar through to 8 bars long), are set to play the top memory. The next two stages play the next memory down, and the same for the firth and sixth stages. The final two stages are different - they each provide a choice of any of the remaining 9 memories for each stage. So the first couple of stages could be simple introductory patterns, the next two could add some extra detail, and the next two might add some more detail. The final two stages are chosen from a range of memories, and could provide lots of variations of the basic patterns. 

In this state grid, the second repeat stage for the first six stages provides a choice of 1 of 3 memories. As you may be realising, the key to using the state memories effectively is to fill them with fried patterns, and to keep track of where you store each pattern, so that you can then sequence them into builds, breaks and other pats of your song structure. 


Here's a hint derived from hours of playing with state memories:

"Keep shift-clicking to save your work!"

The sinking feeling you get when you click on another memory and you realise that you have just lost that brilliant pattern you were working on, is not a good one... Save, save, save...

My recommendation is that you start with Probably, then try ProbablyZ, and then ProbablyS - the features increase each time if you try them in this order, and this should give a smoother learning curve. ProbablyS is the most complex step sequencer so far in this series, and I have more ideas in the pipeline. 

New to this?

(If you are new to Probably's way of working, then don't forget to set the transpose by setting the record focus to the track with ProbablyS in it, and then playing a note - otherwise you just get very low MIDI notes. Transpose from a clip in the track can still be used to transpose ProbablyS, of course...)

Tutorial for Probably (1st in the series):

Tutorial for ProbablyZ (2nd in the series):

SoundCloud demo for ProbablyZ: