We moved to a new shop! head over here to see what's new

MF Twister Ableton Script

Description and Instructions

This script requires Ableton 9.6 or higher , if you are running an older version grab v1.2 from the sidebar


This mapping was made for Ableton 9.6 and is fully compatible with the Midi Fighter’s sequencer mode.

This guide refers to the 2.0 version of this mapping and it will be updated to reflect changes in following versions. 


  • Track Select/Solo/Arm/Mute
  • Track Volume/Pan/Sends
  • Device control and navigation (On/Off, Next/Prev Bank, Next/Prev Device, Device Lock)
  • Focused Track Controls
  • Transport controls


After downloading Twister Ableton Script v2.0.zip from DJTechtools and unzipping it a folder will be created with the same name that will contain this guide and three more files: Twister_Ableton.mfs and a folder named Script.

1. Open the MF Utility and import the Twister_Ableton.mfs file via File > Import Settings.

2. Copy the contents of the Script folder (_Mono_Framework, _Tools and Twister) to your Ableton Live's MIDI Remote Scripts folder.

  • WINDOWS - Located in “C:\ProgramData\Ableton\Live 10 Suite\Resources\MIDI Remote Scripts”. Program Data folder is not visible by default, you might need to enable "Show hidden folders" as shown here).
  • MAC -  Right click on your Ableton's app and click "Show Package Contents” and navigate to “\Contents\App-Resources\MIDI Remote Scripts\".

3. Launch Ableton Live and the script should detect your device and set itself up. If this doesnt’t happen go to Preferences and under MIDI Sync tab select Twister in the Control Surface drop down list and set the correct input and output MIDI ports.


  • Requires August 13th 2014 firmware or higher
  • Changing the side buttons’ order will break this mapping so avoid it to prevent losing functionality: If that is the case, reload the .mfs file.
  • If the script doesn't show up make sure you copied over all contents of the Script folder to the intended destination and NOT the Script folder as a whole.
  • This script was originally made by Amounra for the Livid Ohm64 controller and has been edited to extend part of it's functionality to Twister and PY files are included in this release. If you mod the original script or this one in any way don't forget to credit the original author.

Problem downloading or other issues? Let us know on the forum.
Comments for v2.1.0
Giampiero Recco 16 days ago
Amazing script! I'm trying to map the rotary controller 16 on bank 2 (currently unused) to send standard mod wheel midi signal. Using the utility I changed the Encoder Midi Number from 31 to 1 (which should be the standard mod wheel number) but when I try it I don't see the midi signal being sent to the track. Possibly the script is intercepting it as part of the control surface messages... Am I doing something wrong? Is there a way to get that midi signal to be passed to the truck? I'm trying to understand how the python script works but any suggestion would help. Thank you in advance!
Giampiero Recco 16 days ago

SOLVED. Changing also the Encoder Midi Channel from 1 to 3 did the trick. Of course then your track need to be listening on channel 3.

azo las about 1 month ago
Awesome mapping, exactly what I need. BUT I have a question/wish, is there a way to make the device focus change automatically when I change between buses? Because when I move to another bus, the knobs are still controlling the device on the previous bus. Maybe I'm missing something.. Thanks again
Robert Hinman 4 months ago
Thanks for a wonderful script! I was wondering if anyone else has had any issue with the third bank (mixer B) not sending the Send A and Send B values? Everything else seems to work great. Also, do you have suggestions on where I can learn to modify these scripts? For example, I would really like to be able to switch bank 1 encoders 1-8 to control Send A instead of Pan if possible, but don't know where to begin in the files. Thank you again!
Logan 7 months ago
What does bank 4 do? There's nothing in the pdf about bank 4. As well, I can't figure out how to launch clips to save my life. I'm guessing this is what bank 4 is supposed to do?
padi_04 6 months ago

Bank 4 was left blank intentionally so you can assign it to any extra parameters you might want direct access to. This script currently does not support clip launching since it was designed to be used as an add-on to devices such as Push.

Julian 9 months ago
This mapping is great! But I'm having an issue getting the device bank to control M4L devices. Is there any documentation on how to enable that? I would love to be able to use my twister to control the ML-185 (https://maxforlive.com/library/device/75/ml-185-stage-controlled-sequencer) for example. Appreciate any direction you can point me here. Thanks for a great mapping!
Julian 9 months ago

I figured this out. Turns out this mapping does support controlling parameters M4L devices, but only *if* they are exposed as parameter banks. For example, the LFO M4L device in Ableton 10 exposes some parameters that you can control with this Twister mapping natively. These happen to be the same parameters you can control with the Push 2 as well (not a coincidence!). In M4L you use the live.banks object (https://docs.cycling74.com/max8/refpages/live.banks) to configure which parameters show up as part of a device bank. You can use this to enable native support with this mapping with *any* M4L device, as well as customize device parameter mappings. All you have to do is edit the M4L device in question, add a live.banks object, and configure it to expose however many banks and parameters you wish. Viola! This is HUGE for me, and makes this Twister mapping even more exciting and musical. Thanks again for a great mapping!

bahador 8 months ago

I've used twister for ML-185 too but only with midi mapping which is not very convenient. do you think you can share your edited ML185, cause I have no experience in making or editing m4l devices

Julian 8 months ago

Hey. Someone asked a similar question that I answered on reddit, its not the device but tells you how you to make your own custom mappings. Teach a man to fish! Hope it helps. You're right, it's all about live.banks. All you need to do is add a live.banks object anywhere on your patch and define the banks you want. So, steps (assuming you know nothing about using Max): Open up your device in Max editor (see ableton docs) Right click, select "Edit" to unlock device (aka "patch") for editing Double click, type in "live.banks" and hit enter to create a live.banks object Click lock icon in bottom left to lock patch Double click your live.banks object to open parameter banks editing UI Click "+" icon to add new parameter bank, name it whatever you want Select the parameters you want to map from the drop downs That's it. Push 2 handles the rest, all you need to do is setup the live.banks object with the mappings you want. AFAIK you can add any live.dial object to the bank, and I think the name you see in live.banks is whatever the Long Name parameter is set for that dial object.