Velocity sensitive buttons
Hi everyone.
I was wondering if it is possible to have Velocity sensitive buttons.
I’m using my spd sx pro as an control surface to trigger clips in ableton.
If you use midi map for this your can trigger at different velocity’s but if you use a control surface you can not.
At least I cannot but is it possible?
It would be usefull to trigger clips this way instead of mapping all the clips via midi.
Hi Glenn thanks for your answer.
It doesn’t seem to work.
I use the session box to set the clips to be triggered and the pads to fire the clips.
I set Velocity in the clips to 100% so it will fire at different Velocitys .
But it only works when I use midi map.
Some how if I don’t use the redbox it also doesn’t trigger the clips. But I prefer using the session box cause thats the whole point of using the spd as a controller for ableton.
I think it should be possible using Reactions. For each Reaction mapping:
- Set the Listener to a pad.
- You can use multiple Action Blocks for the different velocity ranges that you want to trigger at. Start with 1 Action Block, because you’re able to duplicate them and do minor tweaks to the dupes.
- Add 2 Conditions (using the “+ And” button to add the second) to the Action Block which will act as the start and end point of the velocity range

- Insert the Action you want to play out. I don’t know if I used the correct one for you in this. I think, if you use “Clip -> Set is playing” the clip will trigger immediately (without any regard for the click) while “Clip -> Set fire button state” will Activate the Clip to start playing on the next Bar Click (or whatever condition has been set in Ableton).



- Use the Path Menu of the Action to direct the script to which Clip should be activated
As mentioned in the second bullet point, you can then duplicate this Action Block and tweak the velocities in the Condition, and the Clip to be activated using the Path Menu.
For the other pads you’ll need to make other Reactions. Although, and this will be overcomplicating things if you’re just starting out with Reactions, it’s technically possible to have 1 Reaction Listen to all of the pads and then use a Condition that uses the Listener Number to decide which Action Block should play out.
I’ve added the example to this comment. It contains 2 Action Blocks, each using one half of the 0 to 127 velocity range. Import it into your script to check it out.
As a disclaimer, the example is meant to show the setup of the Reaction but it might not work inside your script because the CC and Channel values of Pad 1 in the example might not be the same as the one of your Controller Template.
I’d suggest building the Reaction from scratch yourself; it’s not a lot of work, you’ll learn from the experience and it might’ve been more effort to tweak my example to work with your Controller Template.
I’ll check it out later this week.
Would it be possible to give me your Controller Template for the SPD? I think I’ve got it to work. With the template, I can make a few Reactions for your setup so you can try it out immediately.
Hi, I still made an attempt at creating a Reaction with the conditions you asked here. Even if you don’t need it anymore, maybe somebody else will find some use for it.
Inside the Reaction you’ll find instructions on how to set it up. I went for a Custom Code way of setting up the Reaction. I already set up the Reactions based on the script you shared in this discussion. If I’ve done it correctly, you should only need to set the Listener and be good to go.
If you do need to make adjustments, then the changes you need to make shouldn’t be that difficult. You’ll need to enter the channel and value of your pad inside Action Block 1 (you’ll see it explained inside) and I’ll explain below how you can get those numbers:
In your Controller Template, hover over the pad that you’ve set as a Listener in the Reaction. It channel and value will show up. Here’s an example of my Template:

Here’s the important part: The template says I’m using channel 2 because it starts counting from 1 and ends at 16 (which is the max possible amount of channels). But the code starts counting channels from 0 up to 15. This means you’ll need to subtract 1 from the channel displayed in the Controller Template, to enter in Action Block 1 of the Reaction. So, in the case of the example, I had to enter 1 as the channel of my pad.
The displayed number for the value is the correct number. Meaning, in my example I had to enter 60 for my nt_value.
Why have I used variables instead of the menus?
Guessing you’ll want to set up multiple pads in this way, you’ll want to duplicate one of these Reactions and then adjust them to the new pad.
Using the menus, you’d have to go across all the Conditions in the 2nd and 3rd Action Blocks to set them to the new pad (there are 4 such Conditions in total). This would become monotonous work to do for every new Reaction. Using the variables I’ve implemented, you only need to fill in the channel and value once in every new Reaction (if the channel stays the same then you’ll only need to change the value).
Another downside to using the menu of the Conditions, in their current state, is that changing the left-most dropdown menu of a Condition (the one where you select what pad to get the current value from) would reset the rest of the Condition as well (which doesn’t need to be changed); meaning you would have to fill out each entire Condition again.
I’ll make a tutorial about this method in a future post for the people who are interested.
Sign up
User registration is currently not allowed.
I still believe there would be a way to achieve what you want but it’s difficult to provide help without a full picture of what you’re trying to achieve (there was no mention of a session box before and I don’t fully understand how you want to use velocity with the clips; is it to activate different clips or to acitivate the clip at a specific session box position with different effects or volume output?).
The difficulty of trying to help someone out on this forum is wrapping my head around what it is they actually want. Things get lost in translation.
Plus on my end, I hadn’t tried out the Reaction I made, because I was too lazy to get my device with pads out for what I thought to be straight forward.
So, if you’re still willing to figure it out, give a bit more detail about your setup and what it is you want it to do and I’ll try to be of help. I’ll also break out the old launchpad and recreate the conditions.