Tuesday, 26 December 2017

Two-step, two-bar triad chord, film music generator...

The festive season is here, and the end of the year approaches rapidly, so here are a couple of free utilities to entertain you over the holidays…

I’ve released quite a few sound generators already, but this time I thought I would do something slightly different - a chord sequence generator. I will then show you a few ways that it can be used (simple orchestration and arranging tips for Live), as well as show you how to make a ‘missing’ preset for the Ableton ‘Random’ MIDI Effect.

What it is...

TR2gen_mr is a 2 step sequencer. Yes, just two steps, each one bar long, and looped forever. All it does is generate 2 chords made up of major or minor triads, so just three notes in each bar. You can set the pitch of each chord, if it is major or minor, how you want the fixed or random inversions to be applied to the three notes, and how long the notes last. Simple - in fact, so simple that you are probably wondering how this could be useful!

You may know that quite a lot of the music used in films follows some basic rules, and there are some excellent tutorials, explanations and demonstrations available on YouTube. Here are some examples:

How to Imitate a Whole Lot of Hollywood Film Music In Four Easy Steps:

How to Imitate Even More Closely a Whole Lot of Hollywood Film Music with One More Easy Steps:

(The two links above by Scott Murphy are nicely made and give very clear explanations - thoroughly recommended!)

Film Score Harmony: Chords by Thirds:

(The above link goes into music theory a bit more deeply...)

…and this link includes a very useful compilation summary chart of the first two links by Scott Murphy (Different intervals between the roots suit different genres of film!):

With all of this in mind, all that TR2gen_mr does is make it easy to create pairs of chords that have a fixed pitch interval between their roots, and have either fixed or random inversions applied to them.

The Controls

The main user interface element is the 2-step grid, which uses the standard M4L ‘live.step’ object, and so may be familiar to you already. Using a mouse, trackpad or other controller, just click, hold and drag the music keyboard up and down to choose the pitch range you want to use, and drag from side to side to zoom in and out. Click to the right of the music keyboard to set the two notes, which follow the usual left to right time ordering of Ableton’s piano roll.

Each of the two single bar steps has the root note set using the grid, and underneath that are the playback controls: duplicated for each bar. (I could have used the live.step object to do everything in this utility, but that requires multiple layers of controls, and from simple utilities I prefer to be able to see everything at a glance…) The uppermost buttons control the type of chord: MAJOR or minor, following the convention of major chords being in capital letters (M) and minor chords being in lower case letters (m).

Underneath the ‘MAJ/min’ buttons are three horizontal rows of buttons that control the three notes in the chords: Root at the top, then the 3rd, then the 5th. Each of these rows has a ‘note name’ that gives the fixed ‘no inversion’ form, and so is shown by ‘R’,’3’, and ‘5’. Each row has the same order, so, from the left hand side: the first button is ’-‘, indicating that the note will either be randomly inverted downwards by an octave, or will not be inverted at all. 50% chance of either occurrence. The next button to the right is the note name: ‘R’, ‘3’, or ‘5’, and these are all fixed (so no randomness), with no inversions. The next button to the right is ‘+’, and this works like the ‘-‘ button, but inverts upwards by an octave approximately half of the time. (In a future version, then I may provide fixed inversions without the randomness, but I’m in a bit of a ‘randomness is cool’ period at the moment…). The final button on the right is ‘+-‘, and this randomly inverts up or down by an octave, or doesn’t invert at all - so there’s a 33% chance of each of these happening this time. (Note: If you look at the 'Random' MIDI Effect plug-in from Ableton, they use 'Add', 'Sub', and 'Bi', where I have used '+', '-', and '+-' - my excuse is that I was running out of space...)

(Note also that the rows are horizontal - unfortunately the UI makes it look like they are vertical!)

The final control is the ‘Length’ rotary control, which sets the length of the notes that are produced. At 120 rpm, then this covers the range from staccato through to just over a bar long, and at very slow tempos then it may not completely fill a bar - one of these days I will figure out the transport-to-note-length conversion…

Playing and Recording

To set TR2gen_mr running, you just start Live's transport... To stop it, you stop Live's transport. You may find that the notes in the first bar are not correct, and so you should wait until the first repeat (bar three) before trusting the output. This means that if you are recording the output of TR2gen_mr, you should always ignore the first one or two bars...

I mentioned the MAJOR/minor notation convention earlier, but didn't say that you can include the interval between the two root notes in between, so a major chord followed by a minor chord with an interval of 5 could be written as 'M2m' - this is how the summary chart is annotated in the link above.


The TR2gen_mr M4L plug-in can be connected to any of the Ableton Instruments, although my favourite for listening to harmonies and chords is a basic piano sound. This will produce a very simple sustained chord (for most of the bar: set by the ‘Length’ control), but it is easy to extend this using Live’s built-in MIDI Effects. The first thing I did was to add an Instrument Rack and drop a Piano instrument into it. Block chords are a bit boring after a few repetitions, even with added inversions, and so adding the Arpeggiator MIDI Effect can turn it into something rather busier.

The ‘classic’ instrument sound to accompany a piano is a string pad (as in the well-known example from the Korg M1, for example), and so dropping a String Ensemble instrument into the Rack and increasing the attack and release times gives the ‘hold notes to get the strings sweeping in, play staccato to hear just the piano’ time-based control between the two sounds. But Ableton Live’s Instrument Racks let you do much more interesting things that that, and so I added additional random inversions using the ‘Random’ MIDI Effect.

(The reason I didn’t do a much simpler TR2gen_mr device and let the Random MIDI Effect do the random inversions was to maintain detailed control over exactly which notes are inverted…) The presets that Ableton provide for the Random MIDI Effect don’t include one which randomly inverts notes up AND down, and so I’ve produced my own, and saved it as a ‘adv’ file. The screenshot shows exactly how to produce this ‘Random Inversions’ plug-in, and all you need to do is set Random up like this, and then save it as ‘Random Inversions’ for future use. (That’s the second ‘free’ giveaway this time, by the way…)

By dropping other instruments into the Rack, you can extend the ‘Orchestra’ that is playing the output of TR2gen_mr. I added some Double Basses and used the ‘Pitch’ MIDI Effect to drop them by an octave...

...and a Brass Ensemble that uses a separate instance of the ‘Random Inversions’ so the strings and brass are not just paralleling each other (paralleling is bad!).

The end result of all this ‘arranging’ is a lot more interesting than the block chords that TR2gen_mr produces, and could be used as the backing music for all sorts of projects. (YouTube/Vimeo (etc.) videos, animation demos, etc.)

The 'Arranger' Instrument Rack can be downloaded here:

So there’s this blog’s seasonal presents to you! See you in the New Year.

Some examples of using TR2gen_mr are on SoundCloud:

Downloading TR2gen_mr

You can download TR2gen_mr for free from MaxForLive.com.

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



  1. Great article! Would you mind sharing that instrument rack you made? Never thought of putting it all in one track/rack. Very cool!

    1. Oh wait, I suppose those are just built-in Live effects. We can just re-make it ourselves!

  2. OK, Instrument Rack shared as requested (not quite as in the screenshots, sorry!) Look just after the final screenshot...