Your shopping cart is empty.

How to set a single button to control Ableton Live’s Play & Stop

John C's picture by John C last updated Mar 12, 2020
setting a single button for on off in ableton live

Combining Play and Stop into one 1 button on your controller is a great space saving trick. Why do they need to be separate anyway? lets see how this can be done with an Ableton Script built in Control Surface Studio.

Although they are separate mapping types in Control Surface Studio, its pretty simple to set play and stop to the same button.
There are a couple of ways that this can be achieved which we will go through below. 

Method 1: reversing the on/off values in each mapping

This is the most simple method but note that it requires the button to be a toggle as it needs to send an On and Off velocity value on separate presses. If you are using a momentary button/pad either change it to a toggle via the controller’s own editor or see Method 2 below.

The way this works is to set the Play mapping to only fire for the button's ‘On’ value and the Stop mapping to only fire for its ‘Off’ value.

In your play mapping, change the ‘control’ option to custom, set ‘control type’ to on/off and make sure ‘on’ is the button’s correct ‘on’ velocity value.

play mapping

For the off value, set it to a value other than the button’s ‘off’ velocity value, this will prevent the play mapping from firing when the ‘off’ value is received. 

For the Stop mapping do the same as above (change the ‘control’ option to custom, set ‘control type’ to on/off) but for the ‘On’ value, you’re going to set this to the button’s ‘off’ velocity value (which is usually 0 for buttons). This tells the Stop mapping to fire when it receives 0 from the button, essentially reversing your button’s functionality for this 1 mapping only.

Finally, just like you did with the Play mapping you now just need to set the Stop mapping’s ‘Off’ value to any velocity value which the button will never send (for buttons this can usually be anything other than 127 or 0).

stop mapping

Method 2: Using Reactions to alternate between Start & Stop

With the Reactions mapping type you can also achieve this, reactions are a lot more flexible allowing you to use momentary pads/buttons to achieve similar functionality as method 1. 

But rather than tying Start and Stop to the button’s on/off values, for this method when we press our button we will be telling the script:

if playback is active then stop playback
if playback is stopped then start playback.

This will alternate between play and stop on each press of your button. 

Add a new ‘Reactions’ mapping and set it to create 2 Reaction mappings inside.

add a reaction

I’m going to name the first Reaction ‘start playback’,
Set the Listener to my controller’s button ‘button 1

I’ll add a condition, select ‘is playing’ == Input False. This checks the current status of playback when the button is pressed. 

And in the ‘reactions’ section, set it to: start playing () Input

start playback reaction

In the second Reaction I’ll name it ‘stop playback’ 
Listener is ‘button 1’
Add 1 condition which says: is playing == Input True

ANd then in the reaction add: stop playing () Input

stop playback reaction

If you're using a momentary button then what we we have so far will start playback when you press the button and it will stop playback when you release it.

If you want your button to start playback on first press then stop playback on second press, add another condition to both reactions which checks that the current value of your button is the 'on' value of your button. This will prevent the reaction from firing when the button sends the off value.

In the following image I have added the required condition: Button 1 .cur_val == input 127.
The text '.cur_val' is short for 'current value' and tells the script to check the button's current value.

current value

Also, make sure you set the or/and menu to 'and'. This means that both conditions need to pass for the reaction to fire.

I have attached the completed / working script to the bottom of this article. Download and import it into your CSS App and then you can simply copy it over to your script. all you need to do then is select the button you want to use in each mapping. 

Continue playing from where you stopped

If you would prefer that playback continues from where it stopped rather than reseting back to the beginning, you can use the ‘continue playing’ option rather than ‘start playing’ in the ‘start playback’ reaction. 

continue playback

"If you’re new to scripting in Ableton, this tool is a must.

It will not only save you a massive headache, but also allows you to learn how it works as you go since Remotify also gives you an uncompiled “.py” version of the files so you can have a look at the code.

This app will make basic mapping tasks a breeze."

DJ Techtools

"Controllers are great! But sometimes you wish to customize a few knobs.
Before Remotify, you had to be a programmer to create an Ableton script.
Today, us mere mortals can go online to Remotify and use their dead simple, drag and drop script creator.

It literally takes a few seconds to have custom control of Ableton!
In the time it took you to read this, you could have created your own custom Ableton Script for that controller sitting in front of you!"

Antonio Sage,
Certified Ableton Instructor & Creative Director at AudiOutlaw

"Thanks again. It is working great! I'm running 2x DS1s to extend control over 16 channels and your Remotify app has enabled me to tailor the functionality and workflow in a way that I couldn't achieve otherwise. Thank you!"


"Thank you so much for your support! It's nice to see how active you are and willing to help out customers on an individual basis. Can't wait to see how this project will evolve with all those exciting possibilities coming up. It has already evolved a lot since a few weeks ago when I discovered Remotify."