Monday, 19 November 2018

Quick Transpose Customised For Live Performance Usage

This is 'Quick Transpose' customised for live performance, and so it joins the 'series' of devices that arose from me publishing my personal utility to ease my programming of Racks in Ableton Live:

Quick Transpose - my original 'make it easier' personal utility
Quick Transpose BW - with added counter
Quick Transpose Audio BW - audio instead of MIDI, and more 'live performance' oriented

Quick Transpose itself was criticised very effectively and persistently in one of the Facebook 'synthesiser' groups because it could be replaced by keyboard shortcuts for the factory 'Pitch' device. Yes, I acknowledge that this is indeed the case, but I'm a mouse clicker, not a keyboard shortcut user, and I almost always prefer to use a single mouse click to mode-changing combinations of mouse clicks to set the focus, followed by keyboard shortcuts to do the action. Different folks, different strokes.

However, brucewayne247 commented on that what was also needed was what I now call 'Counter' mode, where mouse clicks advance a counter that does the transpose (and this added 'BW' to the name), and JapanLoveStar took this further by requesting via this blog that I should make everything MIDI-mappable, especially a few buttons that I had over-looked (so adding 'JLS'). Somewhere in there, there was also a request for an 'audio' version instead of just MIDI, and before I knew it, I had a series of devices that had strayed some distance from the original 'Make Rack programming easy' goal!

Quick Transpose perf JLS

Previously, when a device gets optimised for live performance, I have added a 'perf' to the end, and so that's where the 'Quick Transpose perf JLS' name comes from. This time the customisation is quite interesting because it moves away from the usual tight timing and synchronisation of DAWs in live performance, into a space where the timing is user-driven instead. I've never been very good with looping, especially not live, and hugely admire those people who have mastered them (see below), so I had to cast my mind back to when I used to do stage lighting. The result is a 'scene' based sequencer that take the output of the counter and makes it available as transposition, plus two additional other tracks that are mappable to parameters inside Ableton Live. For musical use, then I have replaced the words 'scene' with 'section', because that's the closest word I can think of for part of a song, and I'm happy for better suggestions to turn up!

The far left side of 'QT perf JLS' (as I'm going to abbreviate it herein) has the counter from the 'BW' version, but with the added 'zero' button in between the '+' and '-' buttons to clear the count quickly with a single mouse click. I also changed the 'ANO' button so that it not only flushes hanging MIDI notes, but it also sends the basic 'All Notes Off' MIDI message as well. Everything to the right is new, and reflects my new insight into this way of performing courtesy of BW and JLS. 

The most obvious part is the 'section' sequencer, which is a repurposed 'step' sequencer, and yes, the screenshot is out of date because it still has 'step' shown - the current version on has a few cosmetic changes that I made after going from 'dev' to published, and so the graphics here aren't totally in sync. Versions 0.01 and 0.02 were never published because I had a little bit of development hell, but that's another story. There are three tracks: Transpose, as you expected, and C3 is the 'centre' zero, 'no transpose' pitch setting - if you press the 'X' red button on the 'Transpose' track then this resets the current sequence (there are 16 'songs', set by the big number selector) to all C3s. The 'Value1' and 'Value2' tracks are the other two, and they can only be mapped to other Ableton Live parameters using the little 'Map' buttons on the far right.

The grid is always 'live' for editing, and so when you select a track, then moving the mouse around in the grid part will edit the values of the sliders for Value1 and Value2 - for the Transpose track then you have to click in a grid cell to add or remove a pitch entry. The 'Fold' button works just like the same button in the Ableton Live piano roll window, and makes it easier to view pitch sequences with narrow ranges as well as edit within a restricted set of already-chosen values. You can always add the Ableton Live factory device called 'Scale' after 'QT perf JLS' if you want to constrain the pitches.

Immediately on the left side of the grid are the main user control buttons, and these are very similar to the '+' and '-' buttons in the counter, except that '>' moves the sequencer one step to the right, and '<' moves the sequencer one step to the left. (Interestingly, using the characters '>' and '<' in the description caused me some problems, because the web-site detects them as 'HTML', and you aren't allowed to use HTML in the description field...) Anyway, as you go across the grid, then the middle purple box shows the transpose value, and so the buttons work in much the same way as the counter immediately to their left. Above the buttons, there is a tiny 'show/hide' button that allows the whole of the remaining right hand part of the device to be hidden (or revealed again!) so that you only have the main buttons visible. The idea here is that you spend time setting up the grid with the transpose and other values that you want, and then in live performance, all you want to do is advance through the sections by clicking on the upper '>' button, or maybe the middle hidden 'go to step 1' purple button. (I'm kind of assuming here that most people will start on 'no transpose' in the first section...)

On the right hand side of the grid there are the 'Song' selector (big, 1 of 16 numbered songs), the 'current section' indicator which is now echoed in the minimised tab view, the section lengths (2 section to 16), the tracks control buttons, and finally, three rather cryptic buttons that are alternatives to the '>' and '<' buttons. '|<>|' moves back and forwards across the grid, repeating the first step and the last twice, whilst '<>" moves back and forth across the grid with only one output of the first and last step. The 'R' button move across the grid randomly. All of these 'movement' buttons can be controlled by mouse clicks, or by assigning them to MIDI controller buttons.


The workflow for using 'QT perf JLS' goes something like this:
1. Click the little round 'show/hide' button to reveal the expanded view.
2. Set the song number (1-16)
3. Decide how many sections you have in your song/piece-of-music. (<16!)
4. Set the section count to the nearest larger number.
5. Choose the Transpose track and fill in the transpose values for each section (C3=no transpose)
6. Map the 'Value' tracks to two other parameters (volume, filter cut-off, chorus, reverb, etc.)
7. Set the values for each section for the two Value tracks.
8. Reset the sequencer to section (step) 1. (The transpose and value settings should now happen!)
9. Click the little round 'show/hide' button to hide the expanded view.
10. Start the performance.
11. Click on the '>' to advance to the next section. Click on'<' if you change your mind an want to keep playing in the previous section!
12. Click on the middle button (the transpose value in the purple box) to return to section 1 and end the performance. (You could also use '3rd Hand' to help automate the volume fader...)

Masters of looping - a personal selection...

Getting Quick Transpose perf JLS

You can download Quick Transpose perf JLS for free from

(The links above should now be fixed!)

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...)

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars was pretty straight-forward. It is just a couple of 8 step sequencers chained together and some patch cables - so 2ME altogether, plus maybe one or two extra ME for the random selection (which depends on how 'basic' the step sequencer is...).

Buy me a coffeeBuy me a coffee

Friday, 16 November 2018

Defacing a Laptop Keyboard For Use With Ableton Live's Virtual Keyboard

I use the virtual keyboard in Ableton Live a lot - and I keep telling myself that I should tidy up and reorganise my working space so that I have room for a real keyboard, but...

The problem I have with the virtual keyboard is the black notes. Firstly, ALL of the keys on the laptop (Qwerty) keyboard are black (with white letters), and so although the two rows are pretty obvious, here's something that I did to my laptop to make it even easier to avoid pressing the Q and the R and (hardest of all) the I...

All I did was get one of the fine point fibre-tipped permanent pens and add a few bits of black to the anodised aluminium between the keys on the laptop keyboard:

And that's it. A quick, simple and very useful way to deface your laptop that makes using the virtual keyboard much easier. Yes, I know that there are various commercial keyboard overlays that also do this, but I already have other bits of black marker pen on my laptop anyway to indicate where the sockets are (I do the same with MIDI sockets so I don't have to go feeling around the back of synths...), and this cost nothing (except the use of the pen's ink), plus if I ever need to remove it, then a cotton bud and isopropanol should remove it easily.

What I'm not doing is correcting the characters, so A is not being replaced with C! Although F and G are correct, and H looks a bit like A. The D key being an E really annoys me every time, but I'm definitely not going to do this:

I know from seeing many synthesisers that are used live, that lots of people add various embellishment to their instruments - from tactile, glowing or coloured dots on keys for use in the dark, to set-list sheets, and even 'A', 'B', 'C', 'D'. etc., marked on the keys... Well, I have just extended this approach to my laptop. 

Note that I'm just showing you what I did to MY laptop. I'm not advocating, suggesting, or proposing that you should deface your laptop. What you do with your equipment is your responsibility. So you do any defacing like this at your own risk!

Sunday, 11 November 2018

Distortion using Irony - a Max For Live experimental device

For too long, I have been working on an update to Waverne, the 'wave-sliding' synth written in Max For Live for Ableton Live, that I adapted from Laverne written by White Box Synth Makers (Now known as Flintpope (who makes superbly amazing devices for Reaktor, DAWs etc.), who said:

"I really enjoy the sound of this. You've done a terrific job. I was going to try and mix your work into my prettified visual version of laverne but so far I'm not up to speed on all that patching.

You've made a "working class synth" sound classy."

(I couldn't find Laverne on the web-site when I searched today, so I guess that makes it a collectors item!)

Anyway, one of the recent additions to Waverne 2, the 'project that won't finish', was inspired by zipper noise, which anyone who lived through the early days of the analogue-to-digital transition in the 1980s will immediately recognise as one of the least wanted of the many ways that signals get degraded: hiss, aliasing, quantisation noise... and zipper noise. Zipper noise is particularly nasty because it isn't continuous, it only appears when you move a controller, and so your ear is naturally attracted to this nasty unwanted intrusion. So, naturally, it is a useful side-effect for Waverne 2's armoury of 'crazy things you can do with wavetables that don't get used very often...'.

And it got me thinking. Suppose that, in the future, digital acquires the same sort of nostalgic appeal as analogue has now. Instead of 'Vinyl' plug-ins that add hiss and clicks, you would have plug-ins that add all of the distortions associated with the digital sampling and reproduction process. Yep, so now you know how my mind works, because before I knew it, I was deep in another project that sucked more development time away from Waverne 2, yet again...

(When I demoed the then-current prototype of Waverne 2 at Ableton Loop 2017, I thought that the release would be happening soon...)

Irony as distortion

The result, after a tidy-up of the initial release, is 'Ironic Distortion mr 0v02', a Max For Live device for Ableton Live that allows you to add distortions inspired by Aliasing, Quantisation Noise and Mains Modulation to any audio, which probably belongs in the 'Mastering' section of your audio effects library. (I think this is my first 'mastering' tool ever...) This isn't totally serious - the distortions are not exact scientifically honed reproductions of real-world digital distortion, and they have not been rigorously tested using trained ears and expensive measuring equipment. Instead, I have used irony, a powerful technique that works well in comedy, satire and wit, and that sometimes has alternative applications in music technology. What Ironic Distortion does is provide vague emulations of the sort of digital distortion that you get in digital audio processing systems - using a digital audio processing system!

Ironic distortion has four sections, although the final section (on the far right) is just the Input monitor/switch and the 'Reset' button. The three main sections provide the aforementioned distortions: Aliasing, Quantisation Noise, and Mains Modulation. Each section has controls at the top, graphic displays showing the spectrum and a scrolling sonogram, and a combined level meter, gain control/fader and Mute switch. The gain controls let you adjust the mix of distortion types, and the Mute switch allows you to switch them in and out quickly.

All of the sections are based around spectral mirroring (followed by various other bits of processing), something that I wrote an unreleased Audacity plug-in for some time ago, and which is another on the list of 'things to release at some stage'. Cycling 74's Max makes it easy to do the required frequency-domain processing (ring modulation, alternate sample inversion, etc.) and so made turning an ironic idea into a digital reality very quick and easy.

Version 0.02 changes the 'Mains Modulation' to replace the low-pass filter with a 'Drive' rotary control because I found that I was always opening up the filter anyway, and there wasn't enough 'Umph'. This modification sounds much more like the sound that I associate with problems like faulty power supplies and hum loops, and could be used maliciously to upset recording studio engineers...

Version 0.02 also adds in preset storage, and should store settings between sessions in Live.

Back in the pre-digital days, things called 'exciters' and 'enhancers' were used to add small amounts of distortion to audio to try and counter/hide/disguise/obfuscate the hiss that using analogue tape recorders ends to generate, and you could think of Itronic Distortion as a re-imagining of this type of thinking for a digital world.

If you are used to distortion devices that work in the time-domain and directly affect the waveform, then a frequency-domain device like Ironic Distortion could be an interesting alternative approach. Use at your own risk, and don't forget to apply your own irony to the results.

I'm gradually getting more experience at doing 'demo' videos, so one may appear here at some stage...

Getting Ironic Distortion mr 0v02

You can download Ironic Distortion mr 0v02 for free from

(The links above should now be fixed!)

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...)

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars presented a number of problems, since many of the modules I have are digital inside, not analogue, and so they are already intrinsically 'corrupted' with their own digital distortion. In the end, I resorted to my stand-by: that useful, catch-all, vaguely-described 'utility' module (no matter how many you have, you always need another one with a new and different function that you never knew you needed or would ever use), a couple of VCOs and VCFs, and giving a sub-total of about 6 ME per section, which makes an impressive grand total of 18 ME for the whole thing. Basically, that's an entire small Eurorack just for this one MaxForLive device...

Buy me a coffeeBuy me a coffee

Saturday, 10 November 2018

Ableton Loop 2018 - 'Start Here' Creative Challenge - My 'Too Late' Entry

One of the interesting bits of this year's Ableton Loop event (in Los Angeles instead of Berlin) was the 'Start Here' Creative Challenge, where a sample was provided and you had 12 hours to submit a 90 second piece of music using it.

Here's the start-here web-page that gave the background instructions.

My Non-Entry

Well, for me the timing wasn't good (PST is awkward in Europe), and so what with one thing and another I didn't get my piece finished in time, so I have put it on SoundCloud instead. I used only the sample provided, and I used a lot of stuff from my MaxForLive devices as found on this blog and available from

There's a lot of sample manipulation of the basic sample, taking my research on residuals and using it to do unusual things to the timbre. I also used flams (OK, reverse flams, as a Facebook person corrected me recently) on short sample fragments (there's a point where flams and granular cross over...), and my usual Auto-Pan and reversing of audio. Basically, everything I do, I did, which explains why I ran out of time - although the visualisation running in my head was a major distraction. (You will see what I mean when you hear the track!)

Given the title of the original sample: 'Snow' then I was particularly pleased at the crunchy 'snow' sounds that I managed to produce. Again, it helps to have the context - so imagine what the two words: 'Snow' and 'Chase' suggest to you...

And finally, here's the SoundCloud piece: 'The Chase 02' that didn't make it into the 800+' entries. Enjoy.

The Sample by Flora Yin-Wong

Flora Yin-Wong was asked by Ableton to produce a sample for the challenge. It's a wonderfully atmospheric snippet of ambient music, with a diverse content eminently suited to re-use by producers.

Here is some collected information on Flora Yin-Wong to save you the effort of searching the Interweb:

Twitter: PetitFlo

Flora tweeted: " asked me to create a sample loop to be used by producers for their Loop challenge - v interesting to hear ppl’s reworks:"

SoundCloud: floraytw

Lots of interesting tracks and a live set from Boiler Room. Granular, Paulstretch, mixes of real and digital, and fascinating textures a-plenty. I can understand exactly why Ableton asked her to provide the sample!

Events: Sat, 24 Nov 2018, Flora Yin-Wong at Grow, Tottenham, London, UK

Grow Tottenham is an interesting mix of gardens, community and event space, etc.

Interview in As If: interview-flora-yin-wong

A bit more depth on her music, her techniques, etc.

Cafe OTO: flora-yin-wong

Friday, 9 November 2018

Dj On Button - a MaxForLive live performance device for Ableton Live

When I added the two round black buttons to 'Quick Transpose Audio BW', I thought that they were an interesting way of providing a live performance element, and that set me thinking...

So here's the result of taking the idea and making it more generic. I call it: 'DJ On Button', because it emulates the effects On/Off buttons that you see on DJ Mixers for ad-hoc live insertion of effects into audio. But rather than add it to lots of audio devices, I took the Max code from 'Quick Transpose Audio BW' and made a general-purpose mapper that turns clicks into parameter settings. The basic 'DJ On Button' device has three buttons, but with 'hide/show' buttons that enable 1, 2 or 3 of them to be shown, depending on your application.


To use this utility, all you do is click on the 'Map' button, then choose the Live parameter that you want to control, then adjust the 'Min' and 'Max' rotary controls to give you the parameter values you want. Then when you click on the big round black 'On' button, the 'Max' value will be sent to that parameter. When you stop clicking, then the 'Min' value will be sent. That's all there is to it!

In live performance, you pre-assign parameters, and then just click on the buttons at the appropriate time - just like you would on a DJ mixer. It's a bit like the toggle buttons in the classic Ableton 'EQ3' audio effect, but turned into momentary action buttons instead.

Here's a video showing 'DJ On Button' in use.

Getting DJ_On_Button_mr_0v01

You can download DJ On Button mr_0v01 for free from

(The links above should now be fixed!)

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...)

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars required nothing more than a momentary switch and a utility module, giving 2 ME.

Buy me a coffeeBuy me a coffee

Thursday, 1 November 2018

An audio version of the 'Quick Transpose BW' MaxForLive device for Ableton Live...

One of the questions about QuickTranspose BW was: 'Does it transpose MIDI or Audio?'. The answer was 'MIDI', but this set me thinking, and so here's a quick test of what happens when you put the enhanced (maybe 'over the top') user interface of 'Quick Transpose BW' over an audio-domain pitch shifter.

Above is a screenshot of what the result looks like. The left-hand side is 'Quick Transpose BW' just moved into a MaxForLive Audio device instead of a MIDI device, but the right-hand side isn't just a bolted-on pitch shifter, because when I played with the draft version, I got inspired. So those two big black 'DJ' effect 'ON' buttons are intended for live performance use (or you can map an LFO (etc.) to control them (etc.), and provide mouse-gated Detune (which is a chorus effect that you can just gate in and out, or the same sort of gating, but for a transposition. The idea is that you choose a transpose value, then press the 'Set button (and the value will appear in the purple box), and then you revert back to no transposition (all zeroes across the middle), but clicking on the 'On' button gates that transpose on and off. So that's two liver performance buttons... Oh, and the 'Glide' button lets you set how long the pitch transposition takes, so you can do all sorts of sweeps and drops on whatever audio you are processing. Overall I had great fun making this cross-dimensional variant!

Here's a video (updated) showing two LFOs mapped to the Octave buttons and the 'DJ' detune trigger button... For some reason, you need to choose '480p' to get better quality video playback than the default blocky '144p'... The source material is just a synth arpeggio, and there are no effects other than 'Quick Transpose Audio BW' - which just goes to show what you can do with a pitch shifter and 2 LFOs.

Getting Quick_Transpose_Audio_0v01

You can download Quick_Transpose Audio_0v01 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...)

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars required a pitch shifter, and whilst the Bose module was a part of some old classic modulars, it isn't exactly a 'basic' module in these 'interesting' times. So I'm temporarily extending my definition of 'basic' to encompass a pitch shifter, and then it requires just a couple of utility processing and button modules. Overall, the core is about 3 ME. I can't recall having ever seen a live modular performance using this kind of effect (although performers like Caterina Barbieri are imho, remarkably accomplished!), but I'm sure that the Interweb will provide lots of examples that I overlooked.

Buy me a coffeeBuy me a coffee

Wednesday, 31 October 2018

Quick Transpose Special Edition - an extended MaxForLive device

One of the interesting bits of feedback that I got for the original 'Quick Transpose' was a request by someone with the user-name of 'brucewayne247' for some additional controls: single steps and user-presettable. My initial thought was that this was gong to be a quick and easy edit, but the reality turned out to be slightly trickier... So here's a 'behind the scenes' special post.

The original device, 'Quick Transpose', has gone through two quick updates recently (0v02 - to update the user interface, and 0v03 - to fix a minor user interface weakness), It has only two columns of buttons: Octave transpositions on the left, and Fifths on the right. There is a small grey box (with a '=') in the lower right hand corner shows the total transposition from the two columns, and the 'ANO!' button is a panic button that sends 'Notes Off' messages for any held notes in case any held notes occur. Despite the name, it doesn't send a MIDI 'All Notes Off' message!

The Extras 

My first thought was to just add a third column of buttons, but instead of fifths, to provide a user-controllable input. The fourth set of buttons would just be semitone steps and could use the same buttons as all the previous columns. Finally, I had an idea for something that I hadn't seen before: an up/down counter that would control the transposition interval. Here's what the user interface looks like, taking all of the elements into account:

And here's an overview of the Max code that does all the 'under the covers' work to make the user interface actually do things:

The code for each of those columns is in the centre of the screenshot. From left to right, the boxes show the code for each of the columns. The leftmost column does the octaves, the next column does the fifths, and underneath them are the objects that cascade their outputs to give the final transposition value. The first of the new added columns is the large box in the middle - and it is very different from the two previous columns - getting user-settable buttons wasn't s easy to do as I had expected. The next column is the semitone selector, and the difficulty here was fitting it onto the screen - a single vertical column would have had buttons so tiny that they wouldn't have been readable. Instead, I decided to do two columns next to each other with 12 to 7 on the left side, and 6 to 1 on the right side, with two zeroes in the middle. Unfortunately, this order doesn't translate very easily to the way that the buttons ae ordered, and it took some experimentation to get the right order. The final box is the 'counter' column, and you can see the up and down buttons at the top, then the counter, and finally, the 'count' display at the lower right. 

So the three new columns weren't just repeats of the original two, they were all very different, and so what seemed like a quick programming task became something slightly more time-consuming. But eventually it was completed, and I had something that did everything that 'brucewayne247' had requested, plus that extra 'counter' just as a wild extra.

So what is it? It's a completely over-the-top transposer, with many ways to transpose, including a counter mode that you may well have never seen before and will very likely never see again. Like many of my devices, it is a bit of an experiment (Probably LFO and LFOLFO are good examples). Enjoy!

Obfuscation - a brief aside

'Obfuscation' is a wonderful word. It means to hide something: the process of making it 'obscure'. In the past I have seen MaxForLive devices which covered everything behind panels, devices which partitioned code into many sections, devices with nested patchers, and more. But recently, I saw a different approach: taking a patch, selecting everything and then expanding everything. As a result, undoing it will probably take quite a bit of time and effort. Simple and reasonably effective.  

Using Quick Transpose BW

'Quick_Transpose_BW_mr' can be used whenever you want to make quick transpositiions in Ableton Live using the mouse. Any of the transpositions can be selected with a single mouse click. I tend to use this type of device inside Instrument Racks when I'm making custom instruments:

The screenshot shows Quick Transpose BW being used inside an Instrument Rack to do rapid octave switching controlled by the Rack Macro Controls - although you could also assign other Macro Controls to the other columns. The 'Pitch' device is the standard Ableton device, and is shown here for comparison purposes.

Getting Quick_Transpose_BW_mr_0v02

You can download Quick_Transpose_BW_mr_0v02 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...)

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars was harder than I thought it would be. I settled on a step sequencer and a manual clock and ended up at about 3 or 4 ME. One of the interesting things about modulars is that the mundane labour-saving modules are often the hardest to find, and I end up designing my own, and then end up with something very custom and personalised - which is what my Ableton Live looks like too...


Yep, you can use the factory device from Ableton: 'Pitch', to do exactly the same function. But it requires setting the focus to the rotary pitch control (with a click on the control) and then using 'shift-up arrow' to jump in octave steps. Or you can type in '12'. As I say, my preference is to do just about everything using the mouse, not the keyboard, and for me, continually jumping back and forth between mouse and keyboard is a big switch in context each time. Your preferences may differ, of course.

(You could also use the 'Transpose' box in the 'Scale' device - the 'shift-up arrow' shortcut works there as well.)

Buy me a coffeeBuy me a coffee

Saturday, 27 October 2018

Flamming, Fluttering and just plain echoes...

Lots of other people have already noted the 'slightly less immediately obvious' devices inside the Ableton Live 'Max For Live Essentials' pack (for Live9!), but there is often an interesting alternative angle, and that's where I come in. In particular, Note Echo caught my eye, because it is a MIDI-domain echo, and it is programmed in MaxForLive...

Here's what I'm working towards in this post:

But first, some more background... 

Note Echo looks very similar to the long-established, factory default 'Audio Effect' called 'Simple Delay', but instead of processing in the audio domain, it processes the MIDI messages that control the production of the audio itself. So instead of having an Instrument produce a note that then gets echoed, Note Echo gets the Instrument to play several notes, delayed in time. So the echo happens before the audio is produced (which makes me think of the amazing fictional substance called thiotimoline...). 

Sometime during my Live9 to Live 10 updates, I got two versions of Note Echo. (Notice that the two Note Echo devices are MIDI Effects, so they go BEFORE the Instrument, whereas Simple Delay is an Audio Effect, and so goes AFTER the Instrument):

Producing echoes in the MIDI-domain enables some interesting special effects that aren't easy to achieve in the audio domain. The 'Feed Delay' rotary control in Note Echo allows you to control the amount of the incoming note's velocity parameter that is used in the delay section, and if timbre is influenced by velocity, then this means that the echoes that are produced are going to sound different depending on the velocity! In the audio domain, then an echo can merely work with whatever audio it receives at its input, but Note Echo transcends that limitation. I often program lots of velocity sensitivity into my sounds, and so I tried a few of my more extreme DX7 FM sounds that use velocity to make radical changes to the timbre, and these sounded really interesting when driven by Note Echo.

Another advantage of doing delay in the MIDI-domain is that you can control precisely what it is applied to. A few edits (Note Echo is programmed in MaxForLive) later, and I had a stripped down version of Note Echo that only affects a single MIDI note and had the pitch shift removed. After adding an LFO and a control mapper, I had an M4L device that does flutter echoes, but only on a single chosen MIDI note number. Now, you could use a separate track with just a single note on it, and process that using 'Simple Delay', but having a purpose-built device that works on an ordinary track is much quicker and more convenient, and I quite like both of those features!

My grateful thanks go to Ableton and Cycling '74 for Live and Max For Live - having example devices like Note Echo are a great inspiration for further exploration, and the ability to extend/enhance/tweak existing devices is wonderful!

Drum Flammer - as shown up at the top of this post!

What I found my quickly-hacked-together device very good for was producing 'flams', something which I hadn't really used since back in the 1990s, when drum machines first started to have enough polyphony to allow clusters of time-overlapping sounds.  Back then I used to create flams by manually editing MIDI Notes to give notes that rapidly repeated, in a brute-force approximation of the drumming technique where the name 'flam' comes from - which is kind of a cue for some of the flam rudiments...

There's quite a lot going on in that user interface, so here's the same thing split out into the major sections:

As you can see, the left hand side is very similar to the source M4L device, Note Echo. I have added the lower set of electors, which control the range of time change that the LFO can make, plus at the very top, there is the incoming MIDI note number indicator (on the left), then a 'Copy' button, and then the 'Note Selector' (with the blue triangle) that lets you choose which note will be echoed. The 'Copy' button just lets you set the chosen MIDI note number to be the one that is being displayed. So you just play a MIDI controller or keyboard to send the appropriate MIDI Note On message, and then click on the 'Copy' button. (I first used the technique in my MIDIQuantCC controller quantiser... But this was for MIDI Controller numbers, of course!)

The middle section is the LFO. Having produced some wild and totally-over-the-top LFOs recently ( example 1, example 2 ), this one is rather ordinary by comparison. Perhaps the only feature of note is the 'Random' waveform, where I haven't used the traditional Sample-and-Hold waveform, but instead I have used a rate-multiplied piecewise-linear waveform that seems to give good results in this application (and now that I have it done and dusted, I may well use it when I next revisit my other LFOs...).

The right hand side is just the standard parameter mapping controls that I have gradually been adding to my devices. It allows you to use the LFO to control the internals of the device itself, AND to control another parameter somewhere else in Live. This can be very useful for all sorts of interesting and unusual effects.

User Tips

For flams, turn the Offset rotary control (in the middle of the device) almost all the way anti-clockwise ( the shortest times) and set the time buttons on the left to '1'. Use a little bit of LFO Depth to give some movement to the sound, and set the two feedback rotary controls as far clock-wise as you dare. You will find that Drum Flammer can eat up processing power, so you may find that little bar in the upper right hand corner of Ableton Live is higher than you normally see!  

For flutter echoes, then higher values of Offset and the time buttons will suffice. Even slower times will give echoes, but without many of the artefacts that you normally associate with delays. I have to say that Note Echo is a wonderful device, and well worth the processing power that it can consume sometimes - and Drum Flammer is slightly more specialised, but I love the way it can add all sorts of unexpected variability to sounds.

Despite the name, Drum Flammer can also be used for non-drum sounds! There's an example on my SoundCloud pages that very eloquently shows how you can bury an interesting sound in way too much echo... Blame it on my formative years being spent adding too much reverb to synths. 

The best tip is to get familiar with Ableton's 'Note Echo' device first. It can do some very cool effects on its own. Me, I just like to go that little bit further...


Here are links to two SoundCloud examples of Drum Flammer in action.

Coming Up

Yes, there's a typo in the UI. I will fix it in the next update. 

Getting Drum_Flammer_mr_0v01

You can download Drum_Flammer_mr_0v01 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...)

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars just required the sort of MIDI note mapping to 'round-robin' synth 'voices' that is quite widely available, plus a digital delay, an LFO, and the usual Utility modules. Overall, the core is about 4 ME, but that flamming is going to eat up synth voice modules, so you would need to add 1 ME for a simplistic synth voice module per overlapping flam note... At a minimum, that would be 2 extra ME, making 6 ME in total.

Monday, 22 October 2018

Quick Transpose - a free MaxForLive utility device for Ableton Live

I'm doing some tidying up at the moment so that I'm kind of ready for the upgrade to Max 8, and so some of my older MaxForLive devices are getting a fresh lick of paint...

As you probably already know, Ableton Live comes with a 'Pitch' MIDI Effect - it has a minimalistic user interface that provides a rotary control for semitone shifting of incoming MIDI notes... Now I do lots of sound design and synthesis research inside Racks, and so do lots of octave and fifth transpositions - if you have seen me demo my RUSS residuals synthesis technique at NAMM or Synthfest UK then you will have seen me do lots of live transposes as I edit sounds), and so I have spent quite a bit of time clicking on the control and then using the up or down cursor keys to adjust the pitch of a layer. Twelve clicks per octave is a lot of clicks (Using the keyboard: 'Shift and Up arrow' jumps in octave steps, but I prefer using the mouse for just about everything), so I made a utility device that reduced the amount of clicking. My usual approach with controlling things in live performance with a mouse is that the number of mouse clicks should be as few as possible: single clicks if possible...

The original device was called 'Quick Transpose', and it was a simple device with a vaguely seasonal 'late December' colour scheme that didn't fit in with any of Live's skins, and looking at it again now, it definitely doesn't look good with Live 10's 'Dark' theme. Time for an update...

The new update (to 0v03!) adds a bit more explanation (The left hand side is for selecting Octaves, whilst the right hand side is for Fifths...) and tries to make things clearer.

There are two columns of buttons: Octave transpositions on the left, and Fifths on the right. The small grey box (with a '=') in the lower right hand corner shows the total transposition from the two columns, and the 'ANO!' button is a panic button that sends 'Notes Off' messages for any held notes in case any held notes occur (although I have tried to minimise the chances of this happening in the M4L code). Despite the name, it doesn't send an 'All Notes Off' message!

The screenshot above shows the obvious way to use Quick Transpose, and this is probably where most Live users would place it automatically - the last MIDI processing device just before the 'Instrument' in a track chain. (Also notice how my colour theme kind of works in a dark skin...)

But you can put Quick Transpose anywhere in the MIDI part of a track chain, which means that it can go in front of a synthesiser inside an Instrument Rack:

This allows you to quickly transpose one of a set of synthesisers to parallel fifths or octaves with a quick click of the mouse, and you could always put another instance of Quick Transpose in front of the whole Instrument Rack to avoid needing to select notes and shift-octave them in the piano roll view. (The 'Select, Shift-Arrow' octave transposing is another way of transposing the whole sequence, but splitting poly tracks apart into mono tracks is usually a bit fiddly and slow to do.)

Here's the 'Operator' of the three parallel synths in the Instrument Rack, transposed down by one octave.

And finally, the 'Wavetable' transposed up by one octave. I have often wondered about making a device that puts controls deep inside Racks up at the top level, but I'm still learning about the programming model for Live, and I don't think my knowledge is quite up to it yet...

Getting Quick_Transpose_mr_0v03

You can download Quick_Transpose_mr_0v0for 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...)

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars was harder than I thought it would be. I settled on a step sequencer and a manual clock and ended up at about 3 or 4 ME. One of the interesting things about modulars is that the mundane labour-saving modules are often the hardest to find, and I end up designing my own, and then end up with something very custom and personalised - which is what my Ableton Live looks like too...


Yep, you can use the factory device from Ableton: 'Pitch', to do exactly the same function. But it requires setting the focus to the rotary pitch control (with a click on the control) and then using 'shift-up arrow' to jump in octave steps. Or you can type in '12'. As I say, my preference is to do just about everything using the mouse, not the keyboard, and for me, continually jumping back and forth between mouse and keyboard is a big switch in context each time. Your preferences may differ, of course.

(You could also use the 'Transpose' box in the 'Scale' device - the 'shift-up arrow' shortcut works there as well.)

Inside a Rack

As I said, when I'm doing sound design and synthesis research, I spend a lot of time inside an Instrument Rack, tweaking synths and sample players and transposing to get the right feels from the layered output. What I've been working on for quite a while is a single device that puts all of that transposing into a single UI, instead of it being spread throughout the layers of the Rack. But I have always wondered if this is too specialised a device for general use... Anyway, it turns out that you can use Macros to do this...

So here's a typical three-layer synth sound, using Analog, Operator and Simpler. I have added a Quick Transpose and a Pitch M4L device in each layer, and mapped Macro Controls to each of them. This undoes the burying of the transposition controls inside the Rack, and presents them at the top level, where they are very easy to get at...

( Of course, in a real-world Rack, only three of the Macros would be assigned to transposition - the other five would be to other parameters! I'm showing the two sets of macro assignments for comparison purposes only. )

As you can see, the 'use Ableton devices' method uses Pitch to do the transpositions, and so the basic mapping gives a range of +/-128 semitones for the Macro rotary control. A quick edit to the Mapping Browser, and this rename can be set to +/-12 semitones (see the screenshot collage below). Unfortunately, Macro rotary controls do not respond to the 'Shift and Up/Down' keyboard shortcuts, and so there's quite a lot of shifted cursor key presses required to transpose by octaves (12 presses per octave).

The 'Quick transpose' method maps the three Quick Transpose devices to the three rotary Macro controls, but this time, the '' Max object isn't very well supported in the Mapping Browser - you can't change the range, and can't invert the range. As a result, transpositions downwards require the rotary control to go clockwise, and so high values of the 0-128 value indicate low transpose values. But the object quantises the values to octaves, and so there are really only five values for the rotary controls that matter: 0-15 maps to +24 semitones (+2 octaves), 15-47 makes to +12 semitones (+1 octave), 48-79 maps to zero (no transposition), 80-111 makes to -12 semitones (-1 octave), and 112-127 maps to -24 semitones (-2 octaves). So selecting one of the five octave transposition settings is very quick if your preference is to use a mouse for most editing in the Live user interface, but transposition is slower if you use the keyboard cursor keys to move up and down one semitone at a time...

You can see the effect of the lack of an 'invert' option in the screenshot above. The 'Ableton Pitch' method gives a rotary Macro Control that goes clockwise for transposing up in pitch, whereas the 'Quick Transpose' method results in a rotary Macro Control that transposes down in pitch for clockwise rotation. But the quantisation makes it easier to set the transposition because there are only five positions for the Macro that is mapped to the 'Quick Transpose' object - and the lack of a 'Shift-Up/Down' keyboard shortcut makes the 'Pitch' method more fiddly since it requires careful mousing to move the exact multiple of 12 semitones, or requires multiples of 12 ip/down cursor key presses to shift in octaves.

For completeness, the 2 octave view is shown above.

In conclusion, then there are advantages and disadvantages for each method. The 'Use Ableton devices like the Pitch device' method doesn't require an additional M4L device, but suffers from a missing keyboard shortcut and requires lots of key presses or precise mousing. The 'Quick Transpose' method requires an additional M4L device, but has a user interface that is easier and quicker to use with a mouse, but requires huge numbers of cursor key presses. It all depends on your preferred method of interacting with the Live user interface - my preference is for mousing, but I also use the cursor keys for precise control!

Sunday, 14 October 2018

ProbablyR v011 - Updated MaxForLive Probabilistic Sequencer. for Ableton Live

I have just released a new update to my Probably MaxForLive generative, probabilistic sequencer - this is ProbablyR, and it adds a lot of new functionality, although not everything that was requested has yet been added - there are more updates coming.

The above graphic shows a summary of the main changes:

Memory slot grid

(This memory grid is in 'Setup' mode, only four slots have been filled, and there are no white spots because they don't do anything in 'Setup' mode! They just recall the contents of memory slots when in 'Play' mode.)

The memory slot grid now has 16 steps. Previously this only had 8 steps, and so whilst you could store 12 memory slot (the square grey boxes in the 'black' section), you could only control which one was playing using 8 steps. Using the maximum length of 16 steps, and if you select the maximum number of repeats (16), then you have 256 (16x16) bars before the sequence repeats. Having more steps than memory slots means that it is easier to use a couple of memory slots to allow organisation of slots and their contents.

(This memory grid is in 'Play' mode, and there are four filled memory slots (on the right hand side). The Length is set at four, and so steps 1 to 4 will repeat again and again until you stop Live. The four white spots select memory slot 1, then 2, then 3, then 4, and then 1 again. ProbablyR is currently playing step 2...)

The workflow is intended to consist of:
0. When developing a new sequence, use the 'Clear' button in the lower right hand corner of the 'Length' section (it is deliberately kept well away from everything else). This will wipe the contents of the memory slots forever, and they cannot be retrieved. Only do this if you want to start from a clean set of memory slots.
1. Developing memory slots using the 'Setup' mode, and using Shift-Click into slots to store a snapshot of the coloured sections for each major change.
2. Using the 'Play' mode and the memory slot grid to determine the order in which the slots are played back, with the shortest sequence being a length of 1 bar, repeated once, and then starting again (and the longest being 16 bars, repeated 16 times, and then starting again).
3. Jumping back to 'Setup' again to make an edit to a memory slot. (If you don't do this then the recall of the memory slots will keep overwriting your changes! Whenever you find that your grid edits are being overwritten, check that you are not in 'Play' mode!)
4. Using 'Play' mode to play the memory slot grid.

I'm working on ways to make this workflow more intuitive...

Here is a compressed screen shot of that 'memory clear' action (step 0 of the workflow above). Notice the round red button with an 'X' in the lower right hand corner of the Length section, and the red square memory slots on the right of the Memory section. In the memory section, red squares mean 'empty', grey squares mean that the slot has something in it, and a white square is the memory slot that is currently being played.

Remember that the memory slot grid has the same probabilistic control as all the other grids in ProbablyR, so if you have two white spots in a vertical, then they will be chosen on average 50% of the time. If you have three, then 33% each, and so on. You can use just single spots if you want to know exactly what will happen, but using more than one white spot gives you controlled randomness...

So in the above screenshot, the second set of 4 bars is playing the recalled memory slot 2. When the 9th bar starts, the two white spots in the vertical line (one to the right) will select either memory slot 1, or memory slot 3 - with a 50% probability. After another 4 bars, then the two spots in the right-most vertical mean that either the 3rd or the 4th memory slot will be played - again with 50% probability. So there are 4 ways to play the memory slots: 1213, 1214, 1233, or 1234. Because there are two sets of 50% choices, then each of these possible ways will happen about 25% of the time.

Remember that a memory slot contains all of the settings in the coloured sections (except for the step length and the memory reset!). So those 4 ways of playing are actually 16 bars where there could be additional probabilistic operations set...

Order grid

The 'Order' grid controls the order in which steps are played. The default grid is a diagonal line from the lower left corner to the upper right hand corner. You can set this by clicking on the '1' round button on the right of the purple 'Order' section. The steps will then move from left to right, and the sequence plays 'forwards'.


The opposite to this is set by clicking on the '-1' round button, and this puts a diagonal line from near  upper left corner to near the lower right corner - the exact positioning depends on the length of the sequence. In the screenshot the length was 16 steps, and so the last two steps in the grid are not used. The sequence now plays backwards.


The round button with '4' in it is a special case that sets just every 4th white spot, and is typically used when you are working with a sparse number of notes per bar. The screenshot shows this situation...

'4': every fourth note

There are 5 white spots because the full grid is actually 18 steps in length, and so an extra white spot is required. In the case of 16 or less steps, then the 5th spot is ignored.

Forwards and backwards in the same bar

By setting the order grid so that it goes forwards for part of the bar, and backwards for the rest (16 steps are shown here), then the order of playback of notes will go forwards for part of the bar, and backwards for the remainder of the bar. This type of control over the order of playing of steps is quite unusual in sequencers (software or hardware). 

Order randomisation

Instead of just forwards, backwards, and any combination of those, there is also an experimental randomisation function that allows the order of the steps to be randomised, every bar, every 2 bars, every 3 bars, etc. This only works on the 16-step grid at the moment (the code to produce different random grids is not straight-forward!), but it has two controls: the small square button containing 'N' or 'R', and the small number underneath it, which sets how many bars have to be counted before a new randomisation is generated. When the button shows 'N', then a new randomisation set is produced every so many bars, and when the 'R' is shown, then no new randomisation is generated (so you can leave one in place if you want). The large white number is the bar count.

A random order grid held by the 'R' button setting.

The random grid about to be replaced (the button has just been clicked to change the 'R' to an 'N' ('No randomisation')) - the bar setting is '1', and the bar count is '1', so at the end of this bar, a new random order grid will be produced.

Note repeat

The order grid can also be used as a shortcut way of repeating a note. If you set up the order and pitch grids like this:

...then the dark highlighting that I have added across the order grid is actually a time plot of the note in step 4 that is highlighted by a vertical bar that I have added in the pitch grid. So the second white spot causes the note to be played again. This can be a very quick way to add little extra 'busy' notes to a sequence, and can be combined with the probability controls via multiple vertical spots. There are lots of ways to exploit this to make interesting patterns with many variations.

Step length

Probably the most important change is the step length. Instead of being locked to 16 steps, you can now choose a step length from 9 steps to 18 steps. This equates to time signatures of 4.5/8 to 9/8. If you put a copy of ProbablyR in more than one track inside Live, then you can have different step lengths for each track. Combined with the probability settings , this can be used to create music with very large numbers of variations (and a long time before it repeats the same music).

Here is the length box, with the length control set to 16. The range of the control is from 9 to 18 steps.

Note that the length control is NOT stored in the memory slots. Experimentation with the beta versions showed that this was not a good idea because it caused nothing but confusion.

That completes this update report for ProbablyR. At some stage, I will gather all the material in these blogs posts on Probably and edit it into the user manual...

Tutorials and further information

The 'Probably' sequencer is a complex plug-in with an unusual user interface. The following online resources are recommended until I produce a full user manual:

Video Demonstration

Here is a YouTube video that shows how to use ProbablyR.

Getting ProbablyR_mr_v011

You can download ProbablyR_mr_0v11 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...)

Modular Equivalents

In terms of modular equivalents, then reproducing this functionality in my modulars looked like it would require several sets of four 8-step sequencers (plus additional logic modules), or it would require the use of advanced sequencers that I can't count as 'basic' modules, so I would rate this version as being about 140 ME. This is not something that I would want to make for real in a modular.