The Basics of Ableton Live MIDI Controller Scripts: Auto Mapping!

Many Ableton Live users know there is a simple and easy MIDI mapping engine available for controlling synths and tracks with any control surface. Map, click, turn, and control! Super easy – but did you know many controllers have more advanced “Remote Scripts” that give them instant -and more importantly dynamic- control over Live’s devices?


When in the throws of music production creativity, one hardly has time to stop and MIDI map your controller to each synth – especially when quickly previewing instruments and tweaking their parameters. Wouldn’t it be nice if your controller dynamically mapped to any instrument, effect, or drum rack you have selected? Well, it can!


Many major controllers have scripts pre-bundled with Ableton – you just need to enable them. Two octave keyboards with encoders and pads are particularly useful for song writing without touching the mouse. Here are the basic steps:

  1. Go to Ableton’s Preferences window
  2. Click on the MIDI/Sync tab
  3. Look for your controller in the Control Surfaces column
  4. If it’s there, select it – if not, move to the next section
  5. Make sure the appropriate Input and Output are also selected for that controller
  6. For recording control signals, enable Track and Remote by changing “Off” to “On” under the MIDI Ports section

Many people get confused on the last point – here’s a quick explanation:

Most controllers that you plug in only have Track turned “On” by default so when you go to record MIDI automation, the notes get recorded but not any control automation from knobs, encoders, or faders. To get this data into Live, you need to always arm “Remote” which is never enabled by default. Sync is not usually used unless you plan to sync the MIDI clock between Live and your controller.

Once you have successfully connected your controller to Ableton Live and have data coming in and out of the computer, your control surface can both take over and display each parameter. Controllers with endless encoders and LED rings such as the BCD, Nocturn or Midi Fighter Twister are perfect for switching between devices and enjoying instant updates of the control surface.


While the list of controllers supported out of the box is long and distinguished, it’s far from complete so chances are high your favorite MIDI axe is not there. For that problem, we just need a few extra steps to enter the fabled gates of auto mapping heaven.

1. Find a control script mapping with a Google search – there are many user-created ones out there! 

2. Most of these come in a zip, so unpack it and locate the script folder (it does need to be in a folder) 

3. Place that folder into the appropriate Live MIDI remote scripts directory

  • Windows: Place the folder in C:\Program Files\Ableton\Live\Resources\MIDI Remote Scripts
  • Macintosh: Right-click on your Ableton Live application and select “Show Package Contents”. Place the folder into Contents/App-Resources/MIDI Remote Scripts

4. Now we need to get the routings set up: 

  • Open the Preferences window
  • Select the MIDI tab
  • Select your new control script in the Control Surface menu
  • Make sure to define your controller in the Inputs and Outputs section as well!


There is a reason there are so many custom Ableton Live controller scripts out there: they are very easy to edit and create yourself! Simply by opening the text file, and using a little bit of syntax – it’s possible to edit an existing script of build one on your own from scratch. This is a fairly detailed topic which will get further coverage later but here are the basics.

1. Navigate to your MIDI Remote Scripts folder

  • Windows:  C:\Program FIles\Ableton\Live\Resources\MIDI Remote Scripts
  • Macintosh: Right-click on your Ableton Live Application icon and select “Show Package Contents” and go to Contents/App-Resources/MIDI Remote Scripts

2.  Go into Contents/App-recourses/MIDI- remote Scripts/_Tools

3. Read and download the following documents 

Basically, you follow the instructions in the How To document and edit the User Configuration file.

  • Create a directory in ‘User Remote Scripts’. The name of the directory will show up in the list of Control Surfaces in Live.
  • Naming: The name of the directory should not start with ‘_’ or ‘.’.
  • Copy the file ‘UserConfiguration.txt’ into your directory. The name of the file needs to remain unchanged.
  • Edit the copy to adapt it to your needs. The comments in the file will tell you what to do.

Over to you: What are some of your favorite and most useful Ableton Live Controller scripts?  

Abletonableton livecontroller scriptsdevice mappingMidi Controllersmidi mapping
Comments (15)
Add Comment
  • Joseph Waid !

  • Richard Ellicott

    these controllers are probably too ergonomic, it would probably better to have equipment that looks like it actually does stuff, and then learn to use envelopes

    empty stacks etc

  • biin

    Its not quite super easy to set up midi mapping with the Twister, yet.
    Although the Twister acts fine sending control data to Ableton, it doesn’t seem to update its toggle status properly when Ableton sends data back, despite the RGB changing state. Which can mean that loading a new song leads to discrepancies between the song and the twister, and having to push buttons several times to get in sync with Ableton. I assume this is a firmware issue.

    Second, its not true you need “track” or “remote” armed to get data into Ableton from a control surface, if there is a midi remote script active for that surface. All you need to do is enable “automation arm” at the top of ableton’s window. Track is needed to send midi notes from a non scripted surface e.g. a Nord Lead, and “remote” must be active if you want to midi map your control surface to a parameter (using command M). I have an APC40 in front of me without track, sync or remote armed and it works fine!

  • Jonathan Luther

    Thought DJTT was going to release an Ableton rack(s) for the Twister? Haven’t seen it yet…

  • CUSP

    I’ve been trying to find/make a script that will map many of Maschine’s dial and display functions (as well as LCD read outs) to my Novation Remote 25SL mk2. I’m sure there is an appropriate thread for this somewhere, but not that I’ve seen so far. Mapping LCD displays seems… Nebulous.

  • timtilberg

    It would be really awesome if someone were to put together some more specific .py scripting articles. I thought that’s what we were about to get into here and got really excited. I hate that there is no proper documentation. The existing resources out there are few and far between, and not easy to follow.