Snapback & Auto Arm for Ableton Live

Snapback & Auto Arm for Ableton Live

I built and sold a plugin to streamline looping in Ableton Live


Intro ๐ŸŽต

Snapback & Auto Arm
is available on Gumroad!

I've been producing and performing with Ableton Live

for many years now. It's a fantastic piece of software that allows for a lot of creativity and flexibility. However, there are some things that have always bothered me about it.

The Snapback Issue ๐Ÿ”ด

Performing live with Ableton Live

means using the Session View, where you can trigger clips and loops in real-time. However, recording clips live is a serious liability:

If you stop recording a clip just a millisecond too late, it will always keep recording until the next bar.

There is no way to change this behavior. This can be incredibly frustrating and throw off your entire performance. Snapping to the nearest bar is absolutely essential in my opinion and the default on hardware loopers such as the Boss RC-505


The Auto Arm Issue ๐ŸŸฅ

Another issue I've encountered is the need to manually arm MIDI tracks. Say you're playing live and want to switch to a different instrument. You have to manually arm and disarm the MIDI tracks, which can be a hassle and disrupt your flow. Some MIDI controllers have a feature that automatically arms the track when you select it, but not all do. I wanted to have this feature available at all times.

There is an auto arm feature you can enable using "the Secret Options File"

, but that works differently from the controller auto arm feature and is not compatible if you want to have any other track armed.

The Solution ๐ŸŽ‰

I decided to build a plugin that solves both of these issues. I called it Snapback & Auto Arm. It's a simple plugin that snaps the end of recorded clips to the nearest bar and permanently enables auto arm for MIDI tracks. It's a small quality-of-life improvement that makes a huge difference in my live performances.

It's available for purchase on Gumroad

. If you can relate to the issues I've described, I highly recommend checking it out. If they never bothered you, you probably don't need it.

How I Built It ๐Ÿ› ๏ธ

The plugin registers itself as a MIDI Remote Script in Live. These usually define and implement the behavior of MIDI controllers, but they can also be used to add custom functionality.

They're written in Python and use an undocumented proprietary API. Ableton Live ships with all of it's MIDI Remote Scripts as .pyc files, which are compiled Python code. I decompiled these files using decompyle3

to understand how they work and built my own script from there.

Short-lived Success ๐Ÿ“‰

Getting the plugin to work was a lot of trial and error. The decompiled scripts were useful, but usually implemented features that were much less in-depth than those I wanted to add.

In the end, I was pretty happy with the result and confident that it would work with future versions of Live. That confidence died when Live 12 came out and dropped some of the interfaces I was using.

I am currently working on fixing the plugin for Live 12 and will release an update soon.