Friday, 16 January 2015

Pitch Progression MIDI Effects

Pitch Progression Grid and Pitch Progression Follow are two MaxForLive MIDI Effects for Ableton Live. They provide control over the transposition of bar-length sequences, and so can quickly produce progressions of transposed sequences.

Pitch Progression Grid

Pitch Progression Grid grew out of a simple transpose control that I created. It allows semitone or octave transpositions, and I thought that it would be good if it could be extended so that it was more flexible, and the result is a mini-sequencer that runs at the 'bar-rate', and which allows whole bars to be transposed according to the settings on the grid (pitch or velocity).

(You can see the remains of the original transposer on the far left hand side... Note also that this is a MIDI Effect, so it is on the left hand side of the track area, and requires an 'Instrument' to be on the right hand side, otherwise you will not hear anything from the track. The 'Lectric Piano' from Simpler is shown here just as an example - you can use any Live Instrument.) 

Moving across, the next vertical set of controls are the LFO, which normally runs in 'Sync' mode for this effect. (If you run the LFO free-runnng, then the transpose is not tied to the bar boundaries, which can cause hanging notes and other problems. Please leave it in Sync mode at first!) The transpose amount is shown in the large box. The transposition in this first version is crude - it transposes chromatically, so for a transpose setting of 1 semitone, then every MIDI note input will be transposed by 1 semitone. Future versions may be more flexible and do more musically useful transpositions. 

The next vertical set of controls are for the 'Position'. The transpose change normally takes place at the end of the bar. You should not have any notes in the last part of the bar - the 'Position' control sets where the transpose changes. If you set it to 50% then it will happen in the middle of the bar. The normal position is at 99.2%, right at the end of the bar. The 'Position' of the transpose change is shown as a percentage of the bar (0% = start, 50% = half way, and 100% = end) as well as more conventional beat and unit (480 ppq) notation. The block of presets allows the storing and recall of grids of transpositions. Click to recall a stored grid, and Shift-click to store a grid.

The next vertical set of controls allows the number of Repeats to be set (1 gives one bar of this mini-sequencer per bar of the sequence in the track, 2 repeats the transposition twice before it moves to the next bar, so you could think of this as being a rate of half a bar, etc.) The 'Steps' control lets you control the number of steps in the mini-sequence. This is limited to 32 (Max allows 64, but the UI becomes too small for the layout I have used!) The steps that are not in range are still available, so if you set up an 8 step transposition, and then reduce the steps to 2, then you can always increase the steps to 8 and the mini-sequencer will loop around the 8 steps. So you can control this as part of a sequence using the unlinked Envelope section of the sequence controls. 

The grid is the next and largest section. Notes rise in pitch vertically, and horizontally, the sequencer runs from left to right, and loops when it gets to the right hand side. The higher the number of steps, the shorter the notes appear, but remember that each one is still one or more bars long (unless you are in async mode). You can also transpose the velocity of the notes in each bar by using the Pitch/Velocity button at the top right. 

For anything to happen then you need to set up a sequence (one bar in this version) in the track. When you play the track, incoming MIDI notes are transposed per bar - in the edited screenshot above, the end of the bar is inverted, and this is where the transposition change will happen - this is where the 'Position' control points at. So the first bar might not have any transposition (and the sequence will play as you see it), but the first repeat could be up a fifth (as shown in the top screenshot), the next bar might be up by a fifth again, and then back down a fifth and back down a fifth again, and then it repeats. The top screenshot shows exactly this transposition grid. 

Here's a diagram that reiterates the operation. Remember that this is not a conventional 'sequencer' - it advances by one step for every bar when set to 1/1 and Sync. (It advances less slowly if you set the Repeat to more than one bar.) The sequence itself is not transposed - only the notes that are passed through the MIDI Effect to the Instrument are changed. So if you want to edit the sequence, then you need to be aware that there is only one sequence - the untransposed one. If you edit the sequence, then all of the transposed ones will be altered as well. Also recall the previous note: the transposition in this first version is crude - it transposes chromatically, so for a transpose setting of 1 semitone, then every MIDI note input will be transposed by 1 semitone. Future versions may be more flexible and do more musically useful transpositions.

The Max For Live 'code' for this is pretty straightforward:

Incoming MIDI Note messages are filtered out of the stream, then unpacked into the note number and the velocity value. The note value is then transposed (r trans) from the mini-sequencer section, flushing for held notes is attempted, and the transposed notes are clipped so that they can't go outside the 0-127 allowed range. Then the transposed MIDI Note messages are passed to the rest of the track processing - normally the Instrument. This code doesn't show the velocity transpose, because that's made slightly more interesting by release velocity...

Sustained notes longer than a bar may not work correctly (remember the 'no notes in the last part of the bar' limitation.) Basically, the effect works well when there are notes or chords in the main part of the bar and there is a gap at the end of the bar. 8 or 16 staccato note sequences work nicely, and I leave the cliched transposition progressions up to the user!

The right hand set of vertical controls allow editing of the contents of the grid. 'Random' is not a very useful option to choose, but some may like it!

Pitch Progression Follow

If you want to transpose another track in sync, then use the Pitch Progression Follow MIDI Effect in that track. This will receive the transpositions from the 'master' Grid Effect track and apply them to the notes in the 'Follow'ing track. There is some delay in the transfer, so notes at the start of the 'Follow'ing track may not be transposed until the following bar (try moving the position to a lower value...). Again, you can see the simple roots of this project here - this is very similar to the original 'transpose' MIDI Effect where I started.


This pair of MIDI Effects are very much a work in progress. They are not finished, they may well glitch, the transposition is crude and limited musically, and they are definitely not 'production-ready' in any sense.

As usual, they can be downloaded from . Enjoy!

No comments:

Post a Comment