Need advice before embarking on code additions

I’m envisioning a section of code that would send individual preset numbers to each of the effects in my Ableton Live set. I know my Live set structure is overkill, but I have the same 4 effects in each of 20 tracks. This gives me more flexibility than having three return tracks (one for each effect). This way I can have a different preset for the same effect for each track

The way I’m thinking of doing it would involve a huge set of conditionals. Embedded in that structure would be the specific preset numbers to be sent to each of the effects. I don’t know of a way to set up tables in MIDI Translator. I wonder if there’s a way to set up a table external to MT, and then access it via MT. That way I could just use indexes in order to derive the preset numbers to send the Effects.

If you know of a way I could access such tables, please let me know… you don’t really need to trudge through my tedious description of my system. If it somehow helps to understand what I’m after, then yes, please read on.

I typically play a predetermined set of clips depending on which clip I launch in track 1. Knowing that, once I launch a clip in track one, I can choose which preset I want to send to each effect in each track.

Seems simple enough, but there are really REALLY a lot of presets I would be sending out.

  • 4 effects per track
  • 16 possible presets per effect
  • 20 tracks

A complication is that each of the effects is a plugin. I already have the infrastructure that allows me to "target each effect per track. Here’s an example:

State of affairs as I start the process of sending effects presets:

  • I’ve chosen Clip 1 in Track 1
  • Knowing this, I know which preset I want to send to each of the 4 effects in each of the 20 tracks in the set.


  • Send preset x to Effect A in Audio track 1… then
  • Send preset y to Effect A in Audio track 2… then
  • Send preset z to Effect A in Audio track 3…
    This is repeated until each of the 20 tracks has its preset assignment.
    This is then repeated for Effect B in each of the 20 tracks
    And again repeated for Effect C and for Effect D in each track.

How I do it:
Having launched Clip 1 in track 1, I allow the clip to be launched before sending the presets. This prevents timing problems that might occur if I were to try sending out a big stream of preset selections while trying to launch a clip.

  • MIDI Translator activates MIDI track 1 in Live. (and deactivates any other MIDI track)
  • MIDI Translator sends preset x (a program change) to MIDI track 1.
  • MIDI track 1 relays this preset number specifically to Effect A in Track 1

The next steps are duplicates of the previous ones.

  • Activate the MIDI track that targets Effect A in Track 2, and send the specific (predetermined) preset number to it. It relays the preset number to that Effect.
  • Do this again for Effect A in Track 3
  • Continue until all 20 tracks have their Effect A preset assignment.
  • Repeat for Effect B, C, and D.

I think there’s not much of a time constraint. Certainly I have at least 10 seconds during which I can allow the first Clip to play. During that time, all the presets can be sent out while Midi Translator and Live have nothing else to do.

But the logic structure of the code is pretty tedious. I don’t know of a way to create tables in MIDI Translator. If this were possible, I could stuff the tables with the presets that go out to each Effect, and then just use indexing to retrieve the correct preset number for each instance of each effect. As it stands I need to have a huge series of conditionals…

  • Test to see which Track 1 clip has been selected
  • if it’s clip 1 then send a certain program number to Track 1 effect A
  • if it’s clip 2 then send a different program number to Track 1 effect A
  • if it’s clip 24, then send a certain program number to Track 1 Effect A
  • if it’s clip 24, then send a certain program number to Track 20 Effect D
    etc etc ad infinitum.
    I hope there’s some way…

Pretty much just if then Constucts and enabling and disabling presets by number with well ordered and planned out preset numbers that you don’t move around.


Thanks for the answer Steve, though it’s not a welcome one. I’ve sure got my work cut out for myself.

Alas, I wish I had a better solution, however enabling and disabling presets by number has the advantage of using rules and 1 translator to output changes of enabling or disabling multiple presets with the same translator.

I can use a repeating timer input to a single translator to iterate through a number of preset changes. So only three translators to control any number of presets using rules to select which one to affect.

  • Timer
  • Preset Enable by Number
  • Preset Disable by Number

Steve Caldwell
Bome Customer Care

Also available for paid consulting services: