How Reactions Work

How Reactions Work

Reactions in Control Surface Studio are used to create connections between events and actions which happen either in Ableton Live or your MIDI controller.

This article explains how Reactions work, how they’re structured, and how you can build advanced custom logic by using them.

Basic Concept

A Reaction links:

  • An event (when something happens)
  • To an action (perform some sort of function)

Example 1: MIDI Controller to Ableton Live

Suppose you want pressing Pad 1 on your MIDI controller to start playback in Ableton Live. This can be created within a Reaction mapping type by using the Event Listener (when pad 1 is pressed) to fire the Action (start playback in Ableton Live).

To do this:

  • Add a Reaction in your script.

Listener

  • In the Listener section, add:
  • Pad 1 is pressed: midi controller > pad 1 is pressed

Action

  • Then in the Action section of the first Action Block, add the action:
  • Start playback in Ableton Live. live object model > song > start playing

This creates a controller-to-Ableton reaction. The action in Ableton is triggered in response to something happening on the midi controller.

Example 2: Ableton Live to MIDI Controller

Now suppose you want the LED on Pad 1 to light up when playback starts or stops in Ableton.

To do this:

  • Add a second Reaction.

Listener

  • Ableton playback status has changed. Live object model > song > song is playing

Action

  1. Set the Action to:
  • Send an LED value to Pad 1. MIDI controller > send MIDI velocity value to input

This is an Ableton-to-controller reaction. When an event happens in your Ableton session, it does something on the connected MIDI controller.

Bi-directional Functionality

With both of the above reactions in place, you now have bi-directional functionality:

  • Pressing a pad starts playback.
  • Playback starting or stopping updates the pad’s LED.

This makes your controller feel truly integrated with Ableton.

Using Conditions

You can add further complexity to the functionality of your Reaction by utilising the Conditions section of an Action Block in order to determine if an action should occur.

Example: LED Only Lights Up When Playback Starts

In the Reaction for playback status changed, add the following condition:

Condition

  • Only run the action if Ableton’s playback is playing.
  • Live object model > song > is playing | is equal to | True

Action

  • Set the LED color to green (or another visual indicator).
  • MIDI controller > send MIDI velocity value to input
    • Controller Input: Pad 1 (example)
    • Velocity value: 67 (example. use the input’s required velocity value to display it green)

Now the LED will only light up green if playback has started.

Example: LED Turns Red When Playback Stops

  1. Add a third Reaction.

Listener

  • Ableton playback status has changed. Live object model > song > song is playing

Condition

  • Only run the action if Ableton’s playback is NOT playing.
  • Live object model > song > is playing | is equal to | False

Action

MIDI controller > send MIDI velocity value to input

  • Controller Input: Pad 1 (example)
  • Velocity value: 15 (example. use the input’s required velocity value to display it red)

This creates a clear visual feedback system for your controller — green for play, red for stop — driven entirely by Ableton’s playback state.

Watch Reactions Part 1 & 2 from our Walkthrough Video

This will help you to understand in detail how to configure Reactions for your own specific needs.