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 MaxForLive.com 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 live.tab 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.

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

Alternatives

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